]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
dracut.sh/dracut-functions.sh: use a marker-dir for kernel modules
authorHarald Hoyer <harald@redhat.com>
Sat, 25 Feb 2012 15:11:36 +0000 (16:11 +0100)
committerHarald Hoyer <harald@redhat.com>
Sat, 25 Feb 2012 16:09:15 +0000 (17:09 +0100)
use "$initdir/.kernelmodseen" to mark kernel modules, which we already
handled with install_kmod_with_fw()

dracut-functions.sh
dracut.sh

index 80714aae5f584bd3454435cd2cbd9b76a92cdd54..c7337e9ef870c5359b0d649b494e8690b2a2fcf9 100755 (executable)
@@ -974,9 +974,14 @@ for_each_module_dir() {
 # $1 = full path to kernel module to install
 install_kmod_with_fw() {
     # no need to go further if the module is already installed
+
     [[ -e "${initdir}/lib/modules/$kernel/${1##*/lib/modules/$kernel/}" ]] \
         && return 0
 
+    [[ -e "$initdir/.kernelmodseen/${1##*/}" ]] && return 0
+
+    > "$initdir/.kernelmodseen/${1##*/}"
+
     if [[ $omit_drivers ]]; then
         local _kmod=${1##*/}
         _kmod=${_kmod%.ko}
@@ -1116,16 +1121,15 @@ instmods() {
             --*) _mpargs+=" $_mod" ;;
             i2o_scsi) return ;; # Do not load this diagnostic-only module
             *)
+                _mod=${_mod##*/}
                 # if we are already installed, skip this module and go on
                 # to the next one.
-                [[ -f $initdir/$1 ]] && return
+                [[ -f "$initdir/.kernelmodseen/${_mod%.ko}.ko" ]] && return
 
                 if [[ $omit_drivers ]] && [[ "$1" =~ $omit_drivers ]]; then
                     dinfo "Omitting driver ${_mod##$srcmods}"
                     return
                 fi
-
-                _mod=${_mod##*/}
                 # If we are building a host-specific initramfs and this
                 # module is not already loaded, move on to the next one.
                 [[ $hostonly ]] && ! grep -qe "\<${_mod//-/_}\>" /proc/modules \
index e6c36d97d6bf8a3622cb38eb4ac2fc870fffab21..88691ae0425625c52f579819efe656c8563b8b34 100755 (executable)
--- a/dracut.sh
+++ b/dracut.sh
@@ -676,6 +676,8 @@ if [[ $kernel_only != yes ]]; then
     mkdir -p "${initdir}/etc/cmdline.d"
 fi
 
+mkdir -p "$initdir/.kernelmodseen"
+
 mods_to_load=""
 # check all our modules to see if they should be sourced.
 # This builds a list of modules that we will install next.
@@ -766,6 +768,9 @@ if [[ $kernel_only != yes ]]; then
     fi
 fi
 
+rm -fr "$initdir/.kernelmodseen"
+
+
 if (($maxloglvl >= 5)); then
     ddebug "Listing sizes of included files:"
     du -c "$initdir" | sort -n | ddebug