Resolves: bz1451717
https://bugzilla.redhat.com/1451717
When there is no crypt related kdump target, we can safely
omit "crypt" dracut module, this can avoid the pop asking
disk password during kdump boot in some cases.
This patch introduces omit_dracut_modules() before calling
dracut, we can omit more modules to reduce initrd size in
the future.
Signed-off-by: Xunlei Pang <xlpang(a)redhat.com>
---
kdump-lib.sh | 12 ++++++++++++
kdumpctl | 12 ------------
mkdumprd | 26 ++++++++++++++++++++++++++
3 files changed, 38 insertions(+), 12 deletions(-)
diff --git a/kdump-lib.sh b/kdump-lib.sh
index a33f172..3f0af91 100755
--- a/kdump-lib.sh
+++ b/kdump-lib.sh
@@ -6,6 +6,7 @@
DEFAULT_PATH="/var/crash/"
FENCE_KDUMP_CONFIG_FILE="/etc/sysconfig/fence_kdump"
FENCE_KDUMP_SEND="/usr/libexec/fence_kdump_send"
+FADUMP_ENABLED_SYS_NODE="/sys/kernel/fadump_enabled"
perror_exit() {
echo $@ >&2
@@ -481,3 +482,14 @@ get_dracut_args_target()
{
echo $1 | grep "\-\-mount" | sed "s/.*--mount .\(.*\)/\1/" | cut
-d' ' -f1
}
+
+is_fadump_capable()
+{
+ # Check if firmware-assisted dump is enabled
+ # if no, fallback to kdump check
+ if [ -f $FADUMP_ENABLED_SYS_NODE ]; then
+ rc=`cat $FADUMP_ENABLED_SYS_NODE`
+ [ $rc -eq 1 ] && return 0
+ fi
+ return 1
+}
diff --git a/kdumpctl b/kdumpctl
index 2783e23..2f158fc 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -13,7 +13,6 @@ DUMP_TARGET=""
DEFAULT_INITRD=""
DEFAULT_INITRD_BAK=""
TARGET_INITRD=""
-FADUMP_ENABLED_SYS_NODE="/sys/kernel/fadump_enabled"
FADUMP_REGISTER_SYS_NODE="/sys/kernel/fadump_registered"
#kdump shall be the default dump mode
DEFAULT_DUMP_MODE="kdump"
@@ -932,17 +931,6 @@ handle_mode_switch()
fi
}
-is_fadump_capable()
-{
- # Check if firmware-assisted dump is enabled
- # if no, fallback to kdump check
- if [ -f $FADUMP_ENABLED_SYS_NODE ]; then
- rc=`cat $FADUMP_ENABLED_SYS_NODE`
- [ $rc -eq 1 ] && return 0
- fi
- return 1
-}
-
check_current_fadump_status()
{
# Check if firmware-assisted dump has been registered.
diff --git a/mkdumprd b/mkdumprd
index 6956d8e..501a689 100644
--- a/mkdumprd
+++ b/mkdumprd
@@ -374,6 +374,30 @@ check_crypt()
return 1
}
+omit_dracut_modules()
+{
+ local target majmin
+ local crypt_exists
+
+ # Skip fadump case
+ is_fadump_capable && return
+
+ crypt_exists=0
+
+ for target in $(get_kdump_targets); do
+ if [ -b "$target" ]; then
+ # Check "crypt"
+ majmin=$(get_maj_min $target)
+ check_block_and_slaves is_crypt $majmin && crypt_exists=1
+ fi
+ done
+
+ # Omit "crypt", BZ1451717
+ if [ "$crypt_exists" == "0" ]; then
+ add_dracut_arg "--omit" "crypt"
+ fi
+}
+
if ! check_resettable; then
exit 1
fi
@@ -463,6 +487,8 @@ then
add_dracut_arg "--add-drivers" "$extra_modules"
fi
+omit_dracut_modules
+
dracut "${dracut_args[@]}" "$@"
_rc=$?
sync
--
1.8.3.1