[PATCH] dracut-gencmdline: use udevadm info to go from /dev/X to /sys/Y

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Avoid some manual spelunking in sysfs.  This makes for slightly shorter
and simpler code.

diff --git a/dracut-gencmdline b/dracut-gencmdline
index 625546c..a4e2c3d 100755
--- a/dracut-gencmdline
+++ b/dracut-gencmdline
@@ -169,17 +169,20 @@ resolve_device_name() {
     echo "$1" 
 }
 
+finddevinsys() {
+    path=$(udevadm info --name "$1" --query=path 2>/dev/null)
+    if [ -n "$path" ]; then
+        echo "/sys/$path"
+        return 0
+    fi
+    return 1
+}
+
 finddevnoinsys() {
     majmin="$1"
     if [ -n "$majmin" ]; then
-        dev=$(for x in /sys/block/* ; do find $x/ -name dev ; done | while read device ; do \
-              echo "$majmin" | cmp -s $device && echo $device ; done)
-        if [ -n "$dev" ]; then
-            dev=${dev%%/dev}
-            dev=${dev%%/}
-            echo "$dev"
-            return 0
-        fi
+        finddevinsys "/dev/block/$majmin"
+        return $?
     fi
     return 1
 }
@@ -252,11 +255,10 @@ findstoragedriver () {
         return
     fi
 
-    local majmin=$(get_numeric_dev dec "$device")
-    local sysfs=$(finddevnoinsys "$majmin")
+    local sysfs=$(finddevinsys "$device")
 
     if [ -z "$sysfs" ]; then
-        #error "WARNING: $device major:minor $majmin not found, skipping"
+        #error "WARNING: $device not found in sysfs, skipping"
         return
     fi
 


--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux