From 6fae221c28cf677809f52dea7cecdd74406cc8ac Mon Sep 17 00:00:00 2001
From: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
Date: Sat, 25 Aug 2012 15:14:51 -0300
Subject: [PATCH] [archiso] Always copytoram for NBD

Avoid issues on shutdown (and during normal usage if network settings changed)

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386@yahoo.com.ar>
---
 Makefile                        |  2 --
 archiso/archiso_pxe_nbd         |  6 ------
 archiso/archiso_shutdown        |  3 ---
 archiso/hooks/archiso_pxe_nbd   | 18 +++++-------------
 archiso/install/archiso_pxe_nbd |  2 --
 configs/releng/build.sh         |  1 -
 6 files changed, 5 insertions(+), 27 deletions(-)
 delete mode 100644 archiso/archiso_pxe_nbd

diff --git a/Makefile b/Makefile
index 309f890e..cb5ec1d4 100644
--- a/Makefile
+++ b/Makefile
@@ -14,7 +14,6 @@ install-hooks:
 	install -D -m 755 archiso/archiso_shutdown $(DESTDIR)/usr/lib/initcpio/archiso_shutdown
 	install -D -m 644 archiso/hooks/archiso_shutdown $(DESTDIR)/usr/lib/initcpio/hooks/archiso_shutdown
 	install -D -m 644 archiso/install/archiso_shutdown $(DESTDIR)/usr/lib/initcpio/install/archiso_shutdown
-	install -D -m 644 archiso/archiso_pxe_nbd $(DESTDIR)/usr/lib/initcpio/archiso_pxe_nbd
 	install -D -m 644 archiso/hooks/archiso_pxe_common $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_common
 	install -D -m 644 archiso/install/archiso_pxe_common $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_common
 	install -D -m 644 archiso/hooks/archiso_pxe_nbd $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_nbd
@@ -42,7 +41,6 @@ uninstall:
 	rm -f $(DESTDIR)/usr/lib/initcpio/archiso_shutdown
 	rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_shutdown
 	rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_shutdown
-	rm -f $(DESTDIR)/usr/lib/initcpio/archiso_pxe_nbd
 	rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_common
 	rm -f $(DESTDIR)/usr/lib/initcpio/install/archiso_pxe_common
 	rm -f $(DESTDIR)/usr/lib/initcpio/hooks/archiso_pxe_nbd
diff --git a/archiso/archiso_pxe_nbd b/archiso/archiso_pxe_nbd
deleted file mode 100644
index e6b98725..00000000
--- a/archiso/archiso_pxe_nbd
+++ /dev/null
@@ -1,6 +0,0 @@
-omit_kill_nbd_client() {
-    add_omit_pids $(< /run/archiso/nbd_client.pid)
-}
-
-add_hook shutdown_prekillall omit_kill_nbd_client
-add_hook single_prekillall omit_kill_nbd_client
diff --git a/archiso/archiso_shutdown b/archiso/archiso_shutdown
index 85cce59b..41b3945b 100644
--- a/archiso/archiso_shutdown
+++ b/archiso/archiso_shutdown
@@ -27,9 +27,6 @@ if [[ ! -d /oldrun/archiso/copytoram ]]; then
     else
         umount /oldrun/archiso/bootmnt
     fi
-    if [[ -f /oldrun/archiso/nbd_client.pid ]]; then
-        nbd-client -d /dev/nbd0
-    fi
 fi
 
 # reboot / poweroff / halt, depending on the argument passed by init
diff --git a/archiso/hooks/archiso_pxe_nbd b/archiso/hooks/archiso_pxe_nbd
index 6147d064..a9f84d58 100644
--- a/archiso/hooks/archiso_pxe_nbd
+++ b/archiso/hooks/archiso_pxe_nbd
@@ -15,6 +15,7 @@ archiso_pxe_nbd_mount_handler () {
 
     # Module autoloading like with loop devices does not work, doing manually...
     modprobe nbd 2> /dev/null
+
     msg ":: Waiting for boot device..."
     while ! poll_device /dev/nbd0 30; do
         echo "ERROR: boot device didn't show up after 30 seconds..."
@@ -24,22 +25,13 @@ archiso_pxe_nbd_mount_handler () {
     done
 
     msg ":: Setup NBD from ${archiso_nbd_srv} at /dev/nbd0"
-    if [[ "${copytoram}" = "y" ]]; then
-        nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0
-    else
-        nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0 -persist
-    fi
+    nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0
 
+    copytoram="y"
     archisodevice=/dev/nbd0
 
     archiso_mount_handler ${newroot}
 
-    if [[ "${copytoram}" = "y" ]]; then
-        msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0"
-        nbd-client -d /dev/nbd0
-    else
-        mkdir -p /run/archiso
-        pidof nbd-client > /run/archiso/nbd_client.pid
-        cp /archiso_pxe_nbd ${newroot}/etc/rc.d/functions.d/
-    fi
+    msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0"
+    nbd-client -d /dev/nbd0
 }
diff --git a/archiso/install/archiso_pxe_nbd b/archiso/install/archiso_pxe_nbd
index 8d9552ae..47d98ce1 100644
--- a/archiso/install/archiso_pxe_nbd
+++ b/archiso/install/archiso_pxe_nbd
@@ -6,8 +6,6 @@ build() {
     add_runscript
 
     add_binary nbd-client
-
-    add_file /usr/lib/initcpio/archiso_pxe_nbd /archiso_pxe_nbd
 }
 
 help() {
diff --git a/configs/releng/build.sh b/configs/releng/build.sh
index 795f2177..7aad14e1 100755
--- a/configs/releng/build.sh
+++ b/configs/releng/build.sh
@@ -43,7 +43,6 @@ make_setup_mkinitcpio() {
         done
         cp /usr/lib/initcpio/install/archiso_kms ${work_dir}/root-image/usr/lib/initcpio/install
         cp /usr/lib/initcpio/archiso_shutdown ${work_dir}/root-image/usr/lib/initcpio
-        cp /usr/lib/initcpio/archiso_pxe_nbd ${work_dir}/root-image/usr/lib/initcpio
         cp ${script_path}/mkinitcpio.conf ${work_dir}/root-image/etc/mkinitcpio-archiso.conf
         : > ${work_dir}/build.${FUNCNAME}
    fi
-- 
GitLab