Blame 0061-nbd-nbdroot.sh-fix-root-blockdev-case.patch

Harald Hoyer 630033
From 7b6bdc3f943c0e34671faca3b671074c77e64ff0 Mon Sep 17 00:00:00 2001
Harald Hoyer 630033
From: Harald Hoyer <harald@redhat.com>
Harald Hoyer 630033
Date: Tue, 19 Mar 2013 12:24:13 +0100
Harald Hoyer 630033
Subject: [PATCH] nbd/nbdroot.sh: fix root != blockdev case
Harald Hoyer 630033
Harald Hoyer 630033
---
Harald Hoyer 630033
 modules.d/95nbd/nbdroot.sh | 41 +++++++++++++++++++++--------------------
Harald Hoyer 630033
 1 file changed, 21 insertions(+), 20 deletions(-)
Harald Hoyer 630033
Harald Hoyer 630033
diff --git a/modules.d/95nbd/nbdroot.sh b/modules.d/95nbd/nbdroot.sh
Harald Hoyer 630033
index 4aebef0..1a1ed54 100755
Harald Hoyer 630033
--- a/modules.d/95nbd/nbdroot.sh
Harald Hoyer 630033
+++ b/modules.d/95nbd/nbdroot.sh
Harald Hoyer 630033
@@ -17,18 +17,18 @@ PATH=/usr/sbin:/usr/bin:/sbin:/bin
Harald Hoyer 630033
 
Harald Hoyer 630033
 # root is in the form root=nbd:srv:port[:fstype[:rootflags[:nbdopts]]]
Harald Hoyer 630033
 netif="$1"
Harald Hoyer 630033
-root="$2"
Harald Hoyer 630033
+nroot="$2"
Harald Hoyer 630033
 NEWROOT="$3"
Harald Hoyer 630033
 
Harald Hoyer 630033
 # If it's not nbd we don't continue
Harald Hoyer 630033
-[ "${root%%:*}" = "nbd" ] || return
Harald Hoyer 630033
+[ "${nroot%%:*}" = "nbd" ] || return
Harald Hoyer 630033
 
Harald Hoyer 630033
-root=${root#nbd:}
Harald Hoyer 630033
-nbdserver=${root%%:*}; root=${root#*:}
Harald Hoyer 630033
-nbdport=${root%%:*}; root=${root#*:}
Harald Hoyer 630033
-nbdfstype=${root%%:*}; root=${root#*:}
Harald Hoyer 630033
-nbdflags=${root%%:*}
Harald Hoyer 630033
-nbdopts=${root#*:}
Harald Hoyer 630033
+nroot=${nroot#nbd:}
Harald Hoyer 630033
+nbdserver=${nroot%%:*}; nroot=${nroot#*:}
Harald Hoyer 630033
+nbdport=${nroot%%:*}; nroot=${nroot#*:}
Harald Hoyer 630033
+nbdfstype=${nroot%%:*}; nroot=${nroot#*:}
Harald Hoyer 630033
+nbdflags=${nroot%%:*}
Harald Hoyer 630033
+nbdopts=${nroot#*:}
Harald Hoyer 630033
 
Harald Hoyer 630033
 # If nbdport not an integer, then assume name based import
Harald Hoyer 630033
 if [ ! -z $(echo "$nbdport" | sed 's/[0-9]//g') ]; then
Harald Hoyer 630033
@@ -92,26 +92,27 @@ while [ ! -b /dev/nbd0 ]; do
Harald Hoyer 630033
     else
Harald Hoyer 630033
         sleep 0.1
Harald Hoyer 630033
     fi
Harald Hoyer 630033
-    i=$(( $i + 1))
Harald Hoyer 630033
+    i=$(($i + 1))
Harald Hoyer 630033
 done
Harald Hoyer 630033
 
Harald Hoyer 630033
-nbd-client $preopts "$nbdserver" $nbdport /dev/nbd0 $opts || exit 1
Harald Hoyer 630033
-
Harald Hoyer 630033
 # If we didn't get a root= on the command line, then we need to
Harald Hoyer 630033
 # add the udev rules for mounting the nbd0 device
Harald Hoyer 630033
-root=$(getarg root=)
Harald Hoyer 630033
-if [ -z "$root" ] || strstr "$root" "nbd:" || strstr "$root" "dhcp"; then
Harald Hoyer 630033
-    echo '[ -e /dev/root ] || { info=$(udevadm info --query=env --name=/dev/nbd0); [ -z "${info%%*ID_FS_TYPE*}" ] && { ln -s /dev/nbd0 /dev/root 2>/dev/null; type systemctl >/dev/null 2>&1 && systemctl --no-block start sysroot.mount;:; };} && rm $job;' \
Harald Hoyer 630033
-        > $hookdir/initqueue/settled/nbd.sh
Harald Hoyer 630033
-
Harald Hoyer 630033
+if [ -z "$root" -o -n "${root%%block:*}" -o "$root" = "block:/dev/root" ]; then
Harald Hoyer 630033
+    printf 'KERNEL=="nbd0", ENV{DEVTYPE}!="partition", ENV{ID_FS_TYPE}=="?*", SYMLINK+="root"\n' >> /etc/udev/rules.d/99-nbd-root.rules
Harald Hoyer 630033
+    udevadm control --reload
Harald Hoyer 630033
     type write_fs_tab >/dev/null 2>&1 || . /lib/fs-lib.sh
Harald Hoyer 630033
-    write_fs_tab /dev/nbd0 "$nbdfstype" "$fsopts"
Harald Hoyer 630033
+    write_fs_tab /dev/root "$nbdfstype" "$fsopts"
Harald Hoyer 630033
+    wait_for_dev /dev/root
Harald Hoyer 630033
 
Harald Hoyer 630033
-    printf '/bin/mount %s\n' \
Harald Hoyer 630033
-        "$NEWROOT" \
Harald Hoyer 630033
-        > $hookdir/mount/01-$$-nbd.sh
Harald Hoyer 630033
+    if [ -z "$DRACUT_SYSTEMD" ]; then
Harald Hoyer 630033
+        printf '/bin/mount %s\n' \
Harald Hoyer 630033
+             "$NEWROOT" \
Harald Hoyer 630033
+             > $hookdir/mount/01-$$-nbd.sh
Harald Hoyer 630033
+    fi
Harald Hoyer 630033
 fi
Harald Hoyer 630033
 
Harald Hoyer 630033
+nbd-client $preopts "$nbdserver" $nbdport /dev/nbd0 $opts || exit 1
Harald Hoyer 630033
+
Harald Hoyer 630033
 # NBD doesn't emit uevents when it gets connected, so kick it
Harald Hoyer 630033
 echo change > /sys/block/nbd0/uevent
Harald Hoyer 630033
 udevadm settle