Add support for nbd protocol v3 34/21734/2
authorRonan Le Martret <ronan.lemartret@iot.bzh>
Tue, 18 Jun 2019 12:40:30 +0000 (14:40 +0200)
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>
Thu, 27 Jun 2019 13:42:41 +0000 (13:42 +0000)
Add a new cmdline argument using option 'nbd.v3' that could be parsed by the initrd
script used for netboot.

Bug-AGL: SPEC-1423

Change-Id: I13dcd1c783811fd662e9f5090b3c49849e91e011
Signed-off-by: Ronan Le Martret <ronan.lemartret@iot.bzh>
meta-netboot/recipes-core/initramfs-netboot/files/init.sh
meta-netboot/recipes-core/initramfs-netboot/initramfs-netboot_1.0.bb
meta-netboot/recipes-support/nbd/nbd_%.bbappend [new file with mode: 0644]

index d31988f..2def28e 100644 (file)
@@ -25,6 +25,7 @@ SMACK=n
 NBD_SERVER=
 NBD_PORT=10809
 NBD_DEV=/dev/nbd0
+NBD_NAMEV3=
 DEBUG=n
 
 # -------------------------------------------
@@ -76,6 +77,7 @@ for x in $(cat /proc/cmdline); do
                nbd.server=*) NBD_SERVER=${x/*=/};;
                nbd.port=*) NBD_PORT=${x/*=/};;
                nbd.dev=*)  NBD_DEV=/dev/${x/*=/};;
+               nbd.namev3=*) NBD_NAMEV3=${x/*=/};;
                nbd.debug=*) DEBUG=${x/*=/};;
        esac
 done
@@ -99,8 +101,13 @@ grep -q smackfs /proc/filesystems && {
 try=5
 while :;do
        log_info "Starting NBD client"
-       nbd-client $NBD_SERVER $NBD_PORT $NBD_DEV && { log_info "NBD client successfully started"; break; }
-       log_info "NBD client failed"
+       if [ -z "${NBD_NAMEV3}" ]; then
+               nbd-client $NBD_SERVER $NBD_PORT $NBD_DEV && { log_info "NBD client successfully started"; break; }
+               log_info "NBD client failed"
+       else
+               nbd3-client $NBD_SERVER $NBD_DEV --name $NBD_NAMEV3 && { log_info "NBD3 client successfully started"; break; }
+               log_info "NBDv3 client failed"
+       fi
        [[ $try -gt 0 ]] && { log_info "Retrying ($try trie(s) left)..."; sleep 3; try=$(( try - 1 )); continue; }
 
        bail_out "Unable to mount NBD device $NBD_DEV using server $NBD_SERVER:$NBD_PORT"
index 5c85bee..f519694 100644 (file)
@@ -5,12 +5,14 @@ SRC_URI = "file://init.sh"
 
 S = "${WORKDIR}"
 
+RDEPENDS_${PN} += "nbd-client"
+
 do_install() {
        install -dm 0755 ${D}/etc
        touch ${D}/etc/initrd-release
        install -dm 0755 ${D}/dev
        install -dm 0755 ${D}/sbin
-        install -m 0755 ${WORKDIR}/init.sh ${D}/sbin/init
+       install -m 0755 ${WORKDIR}/init.sh ${D}/sbin/init
 }
 
 inherit allarch
diff --git a/meta-netboot/recipes-support/nbd/nbd_%.bbappend b/meta-netboot/recipes-support/nbd/nbd_%.bbappend
new file mode 100644 (file)
index 0000000..fb11ef9
--- /dev/null
@@ -0,0 +1,6 @@
+
+do_install_append() {
+       mv ${D}/${sbindir}/${BPN}-client ${D}/${sbindir}/${BPN}3-client
+}
+
+FILES_${PN}-client = "${sbindir}/${BPN}3-client"