kdump-lib.sh: fix improper get_block_dump_target()
Resolves: bz1451717 https://bugzilla.redhat.com/1451717 This patch improves get_block_dump_target as follows: -Consider block device in the special "--dracut-args --mount ..." in get_user_configured_dump_disk(). -Consider save path instead of root fs in get_block_dump_target(), and move it into kdump-lib.sh because we will have another user in the following patch. -For nfs/ssh dumping, there is no need to check the root device. -Move get_save_path into kdump-lib.sh. After this patch, get_block_dump_target() can always return the correct block dump target specified. Signed-off-by: Xunlei Pang <xlpang@redhat.com> Acked-by: Dave Young <dyoung@redhat.com>
This commit is contained in:
parent
0933f89f65
commit
1bc78e025f
48
kdump-lib.sh
48
kdump-lib.sh
@ -44,12 +44,6 @@ is_fs_dump_target()
|
||||
egrep -q "^ext[234]|^xfs|^btrfs|^minix" /etc/kdump.conf
|
||||
}
|
||||
|
||||
is_user_configured_dump_target()
|
||||
{
|
||||
return $(is_mount_in_dracut_args || is_ssh_dump_target || is_nfs_dump_target || \
|
||||
is_raw_dump_target || is_fs_dump_target)
|
||||
}
|
||||
|
||||
strip_comments()
|
||||
{
|
||||
echo $@ | sed -e 's/\(.*\)#.*/\1/'
|
||||
@ -88,18 +82,21 @@ to_dev_name() {
|
||||
echo $dev
|
||||
}
|
||||
|
||||
is_user_configured_dump_target()
|
||||
{
|
||||
return $(is_mount_in_dracut_args || is_ssh_dump_target || is_nfs_dump_target || \
|
||||
is_raw_dump_target || is_fs_dump_target)
|
||||
}
|
||||
|
||||
get_user_configured_dump_disk()
|
||||
{
|
||||
local _target
|
||||
|
||||
if is_ssh_dump_target || is_nfs_dump_target; then
|
||||
return
|
||||
fi
|
||||
|
||||
_target=$(egrep "^ext[234]|^xfs|^btrfs|^minix|^raw" /etc/kdump.conf 2>/dev/null |awk '{print $2}')
|
||||
[ -n "$_target" ] && echo $_target
|
||||
[ -n "$_target" ] && echo $_target && return
|
||||
|
||||
return
|
||||
_target=$(get_dracut_args_target "$(grep "^dracut_args .*\-\-mount" /etc/kdump.conf)")
|
||||
[ -b "$_target" ] && echo $_target
|
||||
}
|
||||
|
||||
get_root_fs_device()
|
||||
@ -111,6 +108,33 @@ get_root_fs_device()
|
||||
return
|
||||
}
|
||||
|
||||
get_save_path()
|
||||
{
|
||||
local _save_path=$(grep "^path" /etc/kdump.conf|awk '{print $2}')
|
||||
if [ -z "$_save_path" ]; then
|
||||
_save_path=$DEFAULT_PATH
|
||||
fi
|
||||
|
||||
echo $_save_path
|
||||
}
|
||||
|
||||
get_block_dump_target()
|
||||
{
|
||||
local _target _path
|
||||
|
||||
if is_ssh_dump_target || is_nfs_dump_target; then
|
||||
return
|
||||
fi
|
||||
|
||||
_target=$(get_user_configured_dump_disk)
|
||||
[ -n "$_target" ] && echo $(to_dev_name $_target) && return
|
||||
|
||||
# Get block device name from local save path
|
||||
_path=$(get_save_path)
|
||||
_target=$(get_target_from_path $_path)
|
||||
[ -b "$_target" ] && echo $(to_dev_name $_target)
|
||||
}
|
||||
|
||||
# findmnt uses the option "-v, --nofsroot" to exclusive the [/dir]
|
||||
# in the SOURCE column for bind-mounts, then if $_mntpoint equals to
|
||||
# $_mntpoint_nofsroot, the mountpoint is not bind mounted directory.
|
||||
|
10
kdumpctl
10
kdumpctl
@ -978,16 +978,6 @@ save_raw()
|
||||
return 0
|
||||
}
|
||||
|
||||
get_save_path()
|
||||
{
|
||||
local _save_path=$(grep "^path" /etc/kdump.conf|awk '{print $2}')
|
||||
if [ -z "$_save_path" ]; then
|
||||
_save_path="/var/crash"
|
||||
fi
|
||||
|
||||
echo $_save_path
|
||||
}
|
||||
|
||||
is_dump_target_configured()
|
||||
{
|
||||
local _target
|
||||
|
13
mkdumprd
13
mkdumprd
@ -250,19 +250,6 @@ add_mount() {
|
||||
add_dracut_mount "$_mnt"
|
||||
}
|
||||
|
||||
get_block_dump_target()
|
||||
{
|
||||
local _target
|
||||
|
||||
|
||||
_target=$(get_user_configured_dump_disk)
|
||||
[ -n "$_target" ] && echo $(to_dev_name $_target) && return
|
||||
|
||||
#get rootfs device name
|
||||
_target=$(get_root_fs_device)
|
||||
[ -b "$_target" ] && echo $(to_dev_name $_target)
|
||||
}
|
||||
|
||||
#handle the case user does not specify the dump target explicitly
|
||||
handle_default_dump_target()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user