kdumpctl: use generated rd.lvm.lv=X
Resolves: bz1451717 https://bugzilla.redhat.com/1451717 When there is any "rd.lvm.lv=X", "lvm" dracut module will try to recognize all the lvm volumes which is unnecessary and probably cause trouble for us. See https://bugzilla.redhat.com/show_bug.cgi?id=1451717#c2 Remove all the rd.lvm.lv=X inherited from the kernel cmdline, and generate the corresponding cmdline as needed for kdump. Because prepare_cmdline() is only used by kdump, we don't need to add any fadump judgement(also remove the existing judgement in passing). Currently, we don't handle "rd.lvm.vg=X", we can add it in when there is some bug reported in the future. Signed-off-by: Xunlei Pang <xlpang@redhat.com> Acked-by: Dave Young <dyoung@redhat.com>
This commit is contained in:
parent
9e7b64dc90
commit
cb38b32dfc
47
kdumpctl
47
kdumpctl
@ -175,6 +175,45 @@ check_kdump_cpus()
|
||||
echo " try nr_cpus=$nr_min or larger instead"
|
||||
}
|
||||
|
||||
# Generate rd.lvm.lv=X for the kdump targets if any.
|
||||
generate_lvm_cmdlines()
|
||||
{
|
||||
local lvm_cmdlines=""
|
||||
|
||||
generate_lvm_cmdline() {
|
||||
local majmin=$1 dev
|
||||
|
||||
[ -d "/sys/dev/block/$majmin/dm" ] || return 0
|
||||
dev=/dev/mapper/$(< "/sys/dev/block/$majmin/dm/name")
|
||||
|
||||
vg=$(lvm lvs --rows $dev -o vg_name --separator=* 2>/dev/null | cut -d "*" -f 2)
|
||||
lv=$(lvm lvs --rows $dev -o lv_name --separator=* 2>/dev/null | cut -d "*" -f 2)
|
||||
if [ -n "$vg" -a -n "$lv" ]; then
|
||||
lvm_cmdlines="rd.lvm.lv=$vg/$lv $lvm_cmdlines"
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
for_each_block_target_all generate_lvm_cmdline
|
||||
|
||||
echo "$lvm_cmdlines"
|
||||
}
|
||||
|
||||
# $1: function name
|
||||
for_each_block_target_all()
|
||||
{
|
||||
local dev majmin
|
||||
|
||||
for dev in $(get_kdump_targets); do
|
||||
[ -b "$dev" ] || continue
|
||||
majmin=$(get_maj_min $dev)
|
||||
check_block_and_slaves_all $1 $majmin
|
||||
done
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# This function performs a series of edits on the command line.
|
||||
# Store the final result in global $KDUMP_COMMANDLINE.
|
||||
prepare_cmdline()
|
||||
@ -194,15 +233,19 @@ prepare_cmdline()
|
||||
|
||||
# Always remove "root=X", as we now explicitly generate all kinds
|
||||
# of dump target mount information including root fs. But we can
|
||||
# not remove it in case of fadump or "default dump_to_rootfs".
|
||||
# not remove it in case of "default dump_to_rootfs".
|
||||
#
|
||||
# We do this before KDUMP_COMMANDLINE_APPEND, if one really cares
|
||||
# about it(e.g. for debug purpose), then can pass "root=X" using
|
||||
# KDUMP_COMMANDLINE_APPEND.
|
||||
if [ $DEFAULT_DUMP_MODE != "fadump" ] && ! is_dump_to_rootfs; then
|
||||
if ! is_dump_to_rootfs; then
|
||||
cmdline=`remove_cmdline_param "$cmdline" root`
|
||||
fi
|
||||
|
||||
# Remove all the inherited rd.lvm.lv=X and generate those as needed.
|
||||
cmdline=`remove_cmdline_param "$cmdline" rd.lvm.lv`
|
||||
cmdline="${cmdline} $(generate_lvm_cmdlines)"
|
||||
|
||||
cmdline="${cmdline} ${KDUMP_COMMANDLINE_APPEND}"
|
||||
|
||||
id=`get_bootcpu_initial_apicid`
|
||||
|
Loading…
Reference in New Issue
Block a user