# when making release, make sure you do it as RELEASE document describes
VERSION := 10000.3
-MODS := ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs
+MODS := ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs scsi
FILES_MODS := $(MODS:%=mod-%.sh)
FILES := Makefile geninitrd.sysconfig geninitrd functions $(FILES_MODS) geninitrd.8 geninitrd.8.xml ChangeLog
prefix := /usr
# list of geninitrd modules which need setup routine after commandline args parsing
GENINITRD_MODS=""
COMPRESS=yes
-# it should be safe to remove scsi_mod from here, but I'm not sure...
-PRESCSIMODS="-scsi_mod unknown -sd_mod"
target=""
kernel=""
force=""
fi
}
-find_modules_scsi() {
- local n
- for n in $PRESCSIMODS; do
- if [ "X$n" = "Xunknown" ]; then
- debug "Finding SCSI modules using scsi_hostadapter"
- local mod scsimodules=$(modprobe_conf | awk '/scsi_hostadapter/ && ! /^[\t ]*#/ { print $3; }')
- for mod in $scsimodules; do
- # for now allow scsi modules to come from anywhere. There are some
- # RAID controllers with drivers in block
- find_module "$mod"
- done
- else
- find_module "$n"
- fi
- done
- find_module "-scsi_wait_scan"
-}
-
# find modules for $devpath
find_modules_for_devpath() {
local devpath="$1"
# fallback
fi
- if is_yes "$(echo "$devpath" | awk '/^\/dev\/(sd|scsi)/ { print "yes"; }')"; then
- find_modules_scsi
+ if is_scsi "$devpath"; then
+ find_modules_scsi "$devpath"
return
fi
. /etc/sysconfig/geninitrd
fi
-geninitrd_load_mods ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs
+geninitrd_load_mods ide luks multipath dmraid lvm md blkid udev tuxonice suspend fbsplash condecor bootsplash uvesafb nfs scsi
while [ $# -gt 0 ]; do
case $1 in
fi
# allow forcing loading SCSI and/or IDE modules
+# XXX: where ADDSCSI cames from? drop?
if is_yes "$ADDSCSI"; then
find_modules_scsi
fi
+# XXX: where ADDIDE cames from? drop?
if is_yes "$ADDIDE"; then
find_modules_ide
fi
--- /dev/null
+#!/bin/sh
+#
+# geninitrd mod: scsi
+
+# it should be safe to remove scsi_mod from here, but I'm not sure...
+PRESCSIMODS="-scsi_mod unknown -sd_mod"
+
+# ???
+ide_only_root=${ide_only_root:-no}
+
+# allow forcing loading IDE modules, likely from sysconfig/geninitrd
+ADDIDE=${ADDIDE:-no}
+
+# return true if node is scsi device
+# @param string $node device node to be examined
+# @access public
+is_scsi() {
+ local node="$1"
+ if [ ! -e "$node" ]; then
+ warn "is_scsi(): node $node doesn't exist!"
+ return 1
+ fi
+
+ # TODO: more sophisticated check, not just pathname check
+ if is_yes "$(echo "$node" | awk '/^\/dev\/(sd|scsi)/ { print "yes"; }')"; then
+ return 0
+ fi
+
+ return 1
+}
+
+# find modules for $devpath
+# @param $devpath device to be examined
+# @access public
+find_modules_scsi() {
+ local devpath=$1
+
+ local n
+ for n in $PRESCSIMODS; do
+ if [ "X$n" = "Xunknown" ]; then
+ debug "Finding SCSI modules using scsi_hostadapter"
+ local mod scsimodules=$(modprobe_conf | awk '/scsi_hostadapter/ && ! /^[\t ]*#/ { print $3; }')
+ for mod in $scsimodules; do
+ # for now allow scsi modules to come from anywhere. There are some
+ # RAID controllers with drivers in block
+ find_module "$mod"
+ done
+ else
+ find_module "$n"
+ fi
+ done
+ find_module "-scsi_wait_scan"
+}
+
+
+# generate initrd fragment for ide device init
+# @access public
+initrd_gen_scsi() {
+ # nothing to do here
+ return 0
+}