diff options
author | Jonathan Bauer | 2019-09-03 14:03:41 +0200 |
---|---|---|
committer | Jonathan Bauer | 2019-09-03 14:03:41 +0200 |
commit | f5388ccef63fec84adefd49288e056ecb4e8b403 (patch) | |
tree | f6f5a3dbd3f5ae255a7a42edfed08cd90c5d7d2c | |
parent | initial support for different qcow handlers (diff) | |
download | systemd-init-f5388ccef63fec84adefd49288e056ecb4e8b403.tar.gz systemd-init-f5388ccef63fec84adefd49288e056ecb4e8b403.tar.xz systemd-init-f5388ccef63fec84adefd49288e056ecb4e8b403.zip |
[dnbd3-rootfs] initial support for kqcow
-rwxr-xr-x | builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh b/builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh index cd1e90c1..619226f5 100755 --- a/builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh +++ b/builder/modules.d/dnbd3-rootfs/hooks/prepare-root-partition.sh @@ -28,10 +28,24 @@ container_unpack_xmount() { else in_device="${out_path}/${_dnbd3_dev##*/}.dd" fi - local loop_device="$(losetup -f)" - losetup "$loop_device" "$in_device" --partscan + local out_device="$(losetup -f)" + if ! losetup "$out_device" "$in_device" --partscan; then + logging.warn "Failed to attach '$in_device' to '$out_device'." + return + fi + udevadm settle + echo "$out_device" +} + +container_unpack_losetup() { + local in_device="$1" + local out_device="$(losetup -f)" + if ! losetup -r -t QCOW "$out_device" "$in_device" --partscan; then + logging.warn "Failed to attach '$in_device' to '$out_device'." + return + fi udevadm settle - echo "$loop_device" + echo "$out_device" } # endregion @@ -57,8 +71,15 @@ for host in ${SLX_DNBD3_SERVERS} FAIL; do done ) # endregion -# region unpack dnbd3 image with xmount -read_only_device="$(container_unpack_xmount "$_dnbd3_dev")" +# region unpack dnbd3 image +[ -z "$SLX_QCOW_HANDLER" ] && SLX_QCOW_HANDLER="xmount" +if [ "$SLX_QCOW_HANDLER" = "xmount" ]; then + read_only_device="$(container_unpack_xmount "$_dnbd3_dev")" +elif [ "$SLX_QCOW_HANDLER" = "kernel" ]; then + read_only_device="$(container_unpack_losetup "$_dnbd3_dev")" +else + logging.warn "Unsupported QCOW handler: $SLX_QCOW_HANDLER" +fi # Fail fast if unpacking dnbd3 image failed. [ -z "$read_only_device" ] && exit 1 |