Blame 0008-dracut.sh-dracut-functions.sh-use-a-marker-dir-for-k.patch

Harald Hoyer 66318b
From 379c34d2cf29de3268bbbe83ec09f60b74340313 Mon Sep 17 00:00:00 2001
Harald Hoyer 66318b
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer 66318b
Date: Sat, 25 Feb 2012 16:11:36 +0100
Harald Hoyer 66318b
Subject: [PATCH] dracut.sh/dracut-functions.sh: use a marker-dir for kernel
Harald Hoyer 66318b
 modules
Harald Hoyer 66318b
Harald Hoyer 66318b
use "$initdir/.kernelmodseen" to mark kernel modules, which we already
Harald Hoyer 66318b
handled with install_kmod_with_fw()
Harald Hoyer 66318b
---
Harald Hoyer 66318b
 dracut-functions.sh |   10 +++++++---
Harald Hoyer 66318b
 dracut.sh           |    5 +++++
Harald Hoyer 66318b
 2 files changed, 12 insertions(+), 3 deletions(-)
Harald Hoyer 66318b
Harald Hoyer 66318b
diff --git a/dracut-functions.sh b/dracut-functions.sh
Harald Hoyer 66318b
index 80714aa..c7337e9 100755
Harald Hoyer 66318b
--- a/dracut-functions.sh
Harald Hoyer 66318b
+++ b/dracut-functions.sh
Harald Hoyer 66318b
@@ -974,9 +974,14 @@ for_each_module_dir() {
Harald Hoyer 66318b
 # $1 = full path to kernel module to install
Harald Hoyer 66318b
 install_kmod_with_fw() {
Harald Hoyer 66318b
     # no need to go further if the module is already installed
Harald Hoyer 66318b
+
Harald Hoyer 66318b
     [[ -e "${initdir}/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" ]] \
Harald Hoyer 66318b
         && return 0
Harald Hoyer 66318b
 
Harald Hoyer 66318b
+    [[ -e "$initdir/.kernelmodseen/${1##*/}" ]] && return 0
Harald Hoyer 66318b
+
Harald Hoyer 66318b
+    > "$initdir/.kernelmodseen/${1##*/}"
Harald Hoyer 66318b
+
Harald Hoyer 66318b
     if [[ $omit_drivers ]]; then
Harald Hoyer 66318b
         local _kmod=${1##*/}
Harald Hoyer 66318b
         _kmod=${_kmod%.ko}
Harald Hoyer 66318b
@@ -1116,16 +1121,15 @@ instmods() {
Harald Hoyer 66318b
             --*) _mpargs+=" $_mod" ;;
Harald Hoyer 66318b
             i2o_scsi) return ;; # Do not load this diagnostic-only module
Harald Hoyer 66318b
             *)
Harald Hoyer 66318b
+                _mod=${_mod##*/}
Harald Hoyer 66318b
                 # if we are already installed, skip this module and go on
Harald Hoyer 66318b
                 # to the next one.
Harald Hoyer 66318b
-                [[ -f $initdir/$1 ]] && return
Harald Hoyer 66318b
+                [[ -f "$initdir/.kernelmodseen/${_mod%.ko}.ko" ]] && return
Harald Hoyer 66318b
 
Harald Hoyer 66318b
                 if [[ $omit_drivers ]] && [[ "$1" =~ $omit_drivers ]]; then
Harald Hoyer 66318b
                     dinfo "Omitting driver ${_mod##$srcmods}"
Harald Hoyer 66318b
                     return
Harald Hoyer 66318b
                 fi
Harald Hoyer 66318b
-
Harald Hoyer 66318b
-                _mod=${_mod##*/}
Harald Hoyer 66318b
                 # If we are building a host-specific initramfs and this
Harald Hoyer 66318b
                 # module is not already loaded, move on to the next one.
Harald Hoyer 66318b
                 [[ $hostonly ]] && ! grep -qe "\<${_mod//-/_}\>" /proc/modules \
Harald Hoyer 66318b
diff --git a/dracut.sh b/dracut.sh
Harald Hoyer 66318b
index e6c36d9..88691ae 100755
Harald Hoyer 66318b
--- a/dracut.sh
Harald Hoyer 66318b
+++ b/dracut.sh
Harald Hoyer 66318b
@@ -676,6 +676,8 @@ if [[ $kernel_only != yes ]]; then
Harald Hoyer 66318b
     mkdir -p "${initdir}/etc/cmdline.d"
Harald Hoyer 66318b
 fi
Harald Hoyer 66318b
 
Harald Hoyer 66318b
+mkdir -p "$initdir/.kernelmodseen"
Harald Hoyer 66318b
+
Harald Hoyer 66318b
 mods_to_load=""
Harald Hoyer 66318b
 # check all our modules to see if they should be sourced.
Harald Hoyer 66318b
 # This builds a list of modules that we will install next.
Harald Hoyer 66318b
@@ -766,6 +768,9 @@ if [[ $kernel_only != yes ]]; then
Harald Hoyer 66318b
     fi
Harald Hoyer 66318b
 fi
Harald Hoyer 66318b
 
Harald Hoyer 66318b
+rm -fr "$initdir/.kernelmodseen"
Harald Hoyer 66318b
+
Harald Hoyer 66318b
+
Harald Hoyer 66318b
 if (($maxloglvl >= 5)); then
Harald Hoyer 66318b
     ddebug "Listing sizes of included files:"
Harald Hoyer 66318b
     du -c "$initdir" | sort -n | ddebug