On 04/11/17 at 09:46am, Xunlei Pang wrote:
On 04/11/2017 at 09:34 AM, Dave Young wrote:
> On 04/10/17 at 05:39pm, Xunlei Pang wrote:
>> On 04/10/2017 at 01:24 PM, Bhupesh Sharma wrote:
>>> This patch introduces the 'force_no_rebuild' option
>>> inside the 'kdump.conf' and its handling inside the
'kdumpctl'
>>> script.
>>>
>>> There might be several use cases, where a system admin
>>> decides that he doesn't need to rebuild the kdump initrd
>>> and wants to use an existing version of the same. In such cases,
>>> he can set the 'force_no_rebuild' option inside
'kdump.conf'
>>> to 1, to force the 'kdumpctl' script not to rebuild the kdump
>>> initrd.
>>>
>>> Signed-off-by: Bhupesh Sharma <bhsharma(a)redhat.com>
>>> ---
>>> kdump.conf | 8 ++++++++
>>> kdump.conf.5 | 10 ++++++++++
>>> kdumpctl | 26 +++++++++++++++++++++++---
>>> 3 files changed, 41 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/kdump.conf b/kdump.conf
>>> index ebf9587a6522..1e24e1bd9d61 100644
>>> --- a/kdump.conf
>>> +++ b/kdump.conf
>>> @@ -115,6 +115,13 @@
>>> # Specify 1 to force rebuilding kdump initrd every time when
kdump
>>> # service starts.
>>> #
>>> +# force_no_rebuild <0 | 1>
>>> +# - By default, kdump initrd will be rebuilt when necessary.
>>> +# Specify 1 to bypass rebuilding of kdump initrd.
>>> +#
>>> +# force_no_rebuild and force_rebuild options are mutually
>>> +# exclusive and they should not be set to 1 simultaneously.
>>> +#
>>> # override_resettable <0 | 1>
>>> # - Usually an unresettable block device can't be a dump
target.
>>> # Specifying 1 when you want to dump even though the block
>>> @@ -150,6 +157,7 @@ core_collector makedumpfile -l --message-level 1 -d 31
>>> #extra_modules gfs2
>>> #default shell
>>> #force_rebuild 1
>>> +#force_no_rebuild 1
>>> #dracut_args --omit-drivers "cfg80211 snd" --add-drivers
"ext2 ext3"
>>> #fence_kdump_args -p 7410 -f auto -c 0 -i 10
>>> #fence_kdump_nodes node1 node2
>>> diff --git a/kdump.conf.5 b/kdump.conf.5
>>> index ca427699be53..b581964b906e 100644
>>> --- a/kdump.conf.5
>>> +++ b/kdump.conf.5
>>> @@ -166,6 +166,16 @@ By default, kdump initrd will only be rebuilt when
necessary.
>>> Specify 1 to force rebuilding kdump initrd every time when kdump service
starts.
>>> .RE
>>>
>>> +.B force_no_rebuild <0 | 1>
>>> +.RS
>>> +By default, kdump initrd will be rebuilt when necessary.
>>> +Specify 1 to bypass rebuilding of kdump initrd.
>>> +
>>> +.PP
>>> +force_no_rebuild and force_rebuild options are mutually exclusive and
>>> +they should not be set to 1 simultaneously.
>>> +.RE
>>> +
>>> .B override_resettable <0 | 1>
>>> .RS
>>> Usually an unresettable block device can't be a dump target. Specifying
1 means
>>> diff --git a/kdumpctl b/kdumpctl
>>> index 4d68be0c292d..ec8fae1e5b5f 100755
>>> --- a/kdumpctl
>>> +++ b/kdumpctl
>>> @@ -354,7 +354,7 @@ check_config()
>>> case "$config_opt" in
>>> \#* | "")
>>> ;;
>>>
- raw|ext2|ext3|ext4|minix|btrfs|xfs|nfs|ssh|sshkey|path|core_collector|kdump_post|kdump_pre|extra_bins|extra_modules|default|force_rebuild|dracut_args|fence_kdump_args|fence_kdump_nodes)
>>>
+ raw|ext2|ext3|ext4|minix|btrfs|xfs|nfs|ssh|sshkey|path|core_collector|kdump_post|kdump_pre|extra_bins|extra_modules|default|force_rebuild|force_no_rebuild|dracut_args|fence_kdump_args|fence_kdump_nodes)
>>> [ -z "$config_val" ] && {
>>> echo "Invalid kdump config value for option $config_opt."
>>> return 1;
>>> @@ -582,8 +582,6 @@ check_system_modified()
>>> {
>>> local ret
>>>
>>> - [[ -f $TARGET_INITRD ]] || return 1
>>> -
>>> check_files_modified
>>> ret=$?
>>> if [ $ret -ne 0 ]; then
>>> @@ -609,6 +607,7 @@ check_rebuild()
>>> {
>>> local extra_modules
>>> local _force_rebuild force_rebuild="0"
>>> + local _force_no_rebuild force_no_rebuild="0"
>>> local ret system_modified="0"
>>>
>>> check_boot_dir
>>> @@ -625,6 +624,17 @@ check_rebuild()
>>> return 1
>>> fi
>>>
>>> + [[ -f $TARGET_INITRD ]] || return 1
>> This causes regression in case of no initrd, return 1 means kdump start
failure.
> Xunlei, I thought we must have an initrd, if there is no initrd at all
> even force_no_rebuild bypass in this function later kexec load will
> still fail, so fail earlier looks better.
It's before the force_no_rebuild check, image we install kexec-tools for the first
time and there is no initramfs,
then there is no chance of getting kdump started.
Your are right, yes, this is the wrong place, so Bhupesh, could you drop
this chunk? Since kexec_load will still fail even if no initramfs so
it should be fine without this part. Apologize for the wrong direction
for you.
Regards,
Xunlei
>>> +
>>> + _force_no_rebuild=`grep ^force_no_rebuild $KDUMP_CONFIG_FILE
2>/dev/null`
>>> + if [ $? -eq 0 ]; then
>>> + force_no_rebuild=`echo $_force_no_rebuild | cut -d' ' -f2`
>>> + if [ "$force_no_rebuild" != "0" ] && [
"$force_no_rebuild" != "1" ];then
>>> + echo "Error: force_no_rebuild value is invalid"
>>> + return 1
>>> + fi
>>> + fi
>>> +
>>> _force_rebuild=`grep ^force_rebuild $KDUMP_CONFIG_FILE 2>/dev/null`
>>> if [ $? -eq 0 ]; then
>>> force_rebuild=`echo $_force_rebuild | cut -d' ' -f2`
>>> @@ -634,6 +644,16 @@ check_rebuild()
>>> fi
>>> fi
>>>
>>> + if [[ "$force_no_rebuild" == "1" &&
"$force_rebuild" == "1" ]]; then
>>> + echo "Error: force_rebuild and force_no_rebuild are enabled
simultaneously in kdump.conf"
>>> + exit 1
>> Coding style, s/whitespace/tab/g
>>
>>
>> Regards,
>> Xunlei
>>
>>> + fi
>>> +
>>> + # Will not rebuild kdump initrd
>>> + if [ "$force_no_rebuild" == "1" ]; then
>>> + return 0
>>> + fi
>>> +
>>> #will rebuild every time if extra_modules are specified
>>> extra_modules=`grep ^extra_modules $KDUMP_CONFIG_FILE`
>>> [ -n "$extra_modules" ] && force_rebuild="1"
>> _______________________________________________
>> kexec mailing list -- kexec(a)lists.fedoraproject.org
>> To unsubscribe send an email to kexec-leave(a)lists.fedoraproject.org
> Thanks
> Dave
Thanks
Dave