From ba955969ae31ca58ad87bb37edcf5d8aea69bb6a Mon Sep 17 00:00:00 2001 From: Ronan Le Martret Date: Tue, 18 Jun 2019 14:40:30 +0200 Subject: Add support for nbd protocol v3 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 --- meta-netboot/recipes-core/initramfs-netboot/files/init.sh | 11 +++++++++-- .../recipes-core/initramfs-netboot/initramfs-netboot_1.0.bb | 4 +++- meta-netboot/recipes-support/nbd/nbd_%.bbappend | 6 ++++++ 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 meta-netboot/recipes-support/nbd/nbd_%.bbappend diff --git a/meta-netboot/recipes-core/initramfs-netboot/files/init.sh b/meta-netboot/recipes-core/initramfs-netboot/files/init.sh index d31988fd6..2def28eb1 100644 --- a/meta-netboot/recipes-core/initramfs-netboot/files/init.sh +++ b/meta-netboot/recipes-core/initramfs-netboot/files/init.sh @@ -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" diff --git a/meta-netboot/recipes-core/initramfs-netboot/initramfs-netboot_1.0.bb b/meta-netboot/recipes-core/initramfs-netboot/initramfs-netboot_1.0.bb index 5c85bee8f..f519694ed 100644 --- a/meta-netboot/recipes-core/initramfs-netboot/initramfs-netboot_1.0.bb +++ b/meta-netboot/recipes-core/initramfs-netboot/initramfs-netboot_1.0.bb @@ -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 index 000000000..fb11ef9c2 --- /dev/null +++ b/meta-netboot/recipes-support/nbd/nbd_%.bbappend @@ -0,0 +1,6 @@ + +do_install_append() { + mv ${D}/${sbindir}/${BPN}-client ${D}/${sbindir}/${BPN}3-client +} + +FILES_${PN}-client = "${sbindir}/${BPN}3-client" -- cgit 1.2.3-korg