]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
dasd_mod/parse-dasd-mod.sh: fixed dasd_mod param generation
authorHarald Hoyer <harald@redhat.com>
Thu, 31 May 2012 07:12:51 +0000 (09:12 +0200)
committerHarald Hoyer <harald@redhat.com>
Thu, 31 May 2012 07:13:24 +0000 (09:13 +0200)
modules.d/95dasd_mod/parse-dasd-mod.sh

index d7e8664f5d20a8162ebee39a87479712486b51a6..7b197d1b865e5a9907b862dc5546df0ba6a908cb 100755 (executable)
@@ -2,16 +2,48 @@
 # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
 # ex: ts=8 sw=4 sts=4 et filetype=sh
 mod_args=""
-for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
-    if [ -z $mod_args ]; then
-        mod_args="$dasd_arg"
+
+convert_dasd_param() {
+    local bus_id params
+    params=""
+    bus_id=$1; shift
+    while [ $# -gt 0 ]; do
+        case "$1" in
+            use_diag\=1)
+                params="$params,diag"
+                ;;
+            readonly\=1)
+                params="$params,ro"
+                ;;
+            erplog\=1)
+                params="$params,erplog"
+                ;;
+            failfast\=1)
+                params="$params,failfast"
+                ;;
+        esac
+        shift
+    done
+    params="${params#*,}"
+    if [ -n "$params" ]; then
+        echo "$bus_id($params)"
     else
-        # We've already got some thing in mod_args, add to it
-        mod_args="$mod_args,$dasd_arg"
+        echo "$bus_id"
     fi
+}
+
+for dasd_arg in $(getargs rd.dasd= rd_DASD= DASD=); do
+    OLD_IFS=$IFS
+    IFS=","
+    set -- $dasd_arg
+    IFS=$OLD_IFS
+    dasd_arg=$(convert_dasd_param "$@")
+    mod_args="$mod_args,$dasd_arg"
 done
 
-if [ ! -z $mod_args ]; then
+mod_args="${mod_args#*,}"
+
+if [ -n "$mod_args" ]; then
     [ -d /etc/modprobe.d ] || mkdir -m 0755 -p /etc/modprobe.d
     echo "options dasd_mod dasd=$mod_args" >> /etc/modprobe.d/dasd_mod.conf
 fi