No problem, thanks!
On Fri, May 22, 2020 at 4:10 PM Dave Young <dyoung(a)redhat.com> wrote:
Hi Kairui
Sorry for late reply, I thought this has been solved.
On 04/28/20 at 01:22pm, Kairui Song wrote:
> User a helper to get the path to mount dump target in kdump kernel, and
> fix duplicated '/' in the mount path problem.
>
> Fixes: bz1785371
> Signed-off-by: Kairui Song <kasong(a)redhat.com>
> ---
> kdump-lib.sh | 19 +++++++++++++++++++
> kdumpctl | 7 +------
> mkdumprd | 20 +++++---------------
> 3 files changed, 25 insertions(+), 21 deletions(-)
>
> diff --git a/kdump-lib.sh b/kdump-lib.sh
> index b079f27..2157c34 100755
> --- a/kdump-lib.sh
> +++ b/kdump-lib.sh
> @@ -258,6 +258,25 @@ get_mntpoint_from_target()
> findmnt -k -f -n -r -o TARGET --source $1
> }
>
> +# Get the path where the target will be mounted in kdump kernel
> +# $1: kdump target device
> +get_kdump_mntpoint_from_target()
> +{
> + local _mntpoint=$(get_mntpoint_from_target $1)
> +
> + # mount under /sysroot if dump to root disk or mount under
> + # /kdumproot/$_mntpoint in other cases in 2nd kernel. systemd
> + # will be in charge to umount it.
> + if [ "$_mntpoint" = "/" ];then
> + _mntpoint="/sysroot"
> + else
> + _mntpoint="/kdumproot/$_mntpoint"
> + fi
> +
> + # strip duplicated "/"
> + echo $_mntpoint | tr -s "/"
> +}
> +
> # get_option_value <option_name>
> # retrieves value of option defined in kdump.conf
> get_option_value() {
> diff --git a/kdumpctl b/kdumpctl
> index fb264c3..081720e 100755
> --- a/kdumpctl
> +++ b/kdumpctl
> @@ -480,12 +480,7 @@ check_dump_fs_modified()
> return 2
> fi
>
> - if [[ "$_target" = "$(get_root_fs_device)" ]]; then
> - _new_mntpoint="/sysroot"
> - else
> - _new_mntpoint="/kdumproot/$(get_mntpoint_from_target
$_target)"
> - fi
> -
> + _new_mntpoint="$(get_kdump_mntpoint_from_target $_target)"
> _dracut_args=$(lsinitrd $TARGET_INITRD -f usr/lib/dracut/build-parameter.txt)
> if [[ -z "$_dracut_args" ]];then
> echo "Warning: No dracut arguments found in initrd"
> diff --git a/mkdumprd b/mkdumprd
> index 35f5eed..f3e9336 100644
> --- a/mkdumprd
> +++ b/mkdumprd
> @@ -51,21 +51,12 @@ add_dracut_sshkey() {
>
> # caller should ensure $1 is valid and mounted in 1st kernel
> to_mount() {
> - local _dev=$1 _source _target _fstype _options _mntopts _pdev
> + local _dev=$1 _source _new_mntpoint _fstype _options _mntopts _pdev
>
> _source=$(findmnt -k -f -n -r -o SOURCE $_dev)
> - _target=$(get_mntpoint_from_target $_dev)
> - # mount under /sysroot if dump to root disk or mount under
> - #/kdumproot/$_target in other cases in 2nd kernel. systemd
> - #will be in charge to umount it.
> -
> - if [ "$_target" = "/" ];then
> - _target="/sysroot"
> - else
> - _target="/kdumproot/$_target"
> - fi
> -
> _fstype=$(findmnt -k -f -n -r -o FSTYPE $_dev)
> + _new_mntpoint=$(get_kdump_mntpoint_from_target $_dev)
> +
> [[ -e /etc/fstab ]] && _options=$(findmnt --fstab -f -n -r -o OPTIONS
$_dev)
> if [ -z "$_options" ]; then
> _options=$(findmnt -k -f -n -r -o OPTIONS $_dev)
> @@ -85,14 +76,13 @@ to_mount() {
> # only mount the dump target when needed.
> _options="$_options,noauto"
>
> - _mntopts="$_target $_fstype $_options"
> - #for non-nfs _dev converting to use udev persistent name
> + _mntopts="$_new_mntpoint $_fstype $_options"
> + # for non-nfs _dev converting to use udev persistent name
> if [ -b "$_source" ]; then
> _pdev="$(get_persistent_dev $_source)"
> if [ -z "$_pdev" ]; then
> return 1
> fi
> -
> else
> _pdev=$_dev
> fi
> --
> 2.25.3
>
Acked-by: Dave Young <dyoung(a)redhat.com>
Thanks
Dave
--
Best Regards,
Kairui Song