]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
init: set cdrom polling in kernel
authorHarald Hoyer <harald@redhat.com>
Fri, 18 Feb 2011 12:27:31 +0000 (13:27 +0100)
committerHarald Hoyer <harald@redhat.com>
Fri, 18 Feb 2011 12:27:31 +0000 (13:27 +0100)
and reset to -1 after we are done.

modules.d/99base/init

index 0a05e91eeb9cb88224464cb381029a7298bfdde1..b49c87abd610eabbbc55ba8e5d7fd623a98e37b8 100755 (executable)
@@ -203,15 +203,19 @@ while :; do
     # dirty hack for some cdrom drives,
     # which report no medium for quiet
     # some time.
-    if [ ! -e /sys/module/block/parameters/events_dfl_poll_msecs ]; then
-        for cdrom in /sys/block/sr*; do
-            [ -e "$cdrom" ] || continue       
+    for cdrom in /sys/block/sr*; do
+        [ -e "$cdrom" ] || continue 
+        if [ -e "$cdrom"/events_poll_msecs ]; then
+            msecs=$(while read a; do echo $a;done < "$cdrom"/events_poll_msecs)
+            [ "$msecs" = "-1" ] && \
+                echo 1000 > "$cdrom"/events_poll_msecs
+        else
             # skip, if cdrom medium was already found
             strstr "$(udevadm info --query=env --path=${cdrom##/sys})" \
                 ID_CDROM_MEDIA && continue
             echo change > "$cdrom/uevent"        
-        done
-    fi
+        fi
+    done
     
     i=$(($i+1))
     [ $i -gt $RDRETRY ] \
@@ -220,6 +224,14 @@ done
 unset job
 unset queuetriggered
 
+# reset cdrom polling
+for cdrom in /sys/block/sr*; do
+    [ -e "$cdrom" ] || continue 
+    if [ -e "$cdrom"/events_poll_msecs ]; then
+        echo -1 > "$cdrom"/events_poll_msecs
+    fi
+done
+
 # pre-mount happens before we try to mount the root filesystem,
 # and happens once.
 getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"