diff options
author | torben | 2015-11-20 18:25:39 +0100 |
---|---|---|
committer | torben | 2015-11-20 18:25:39 +0100 |
commit | f2db0443f952be32b76493eb57ada00550e8add6 (patch) | |
tree | 2d579d160273e0c404e6ad8e8a9bff85f3bccdba /builder/dnbd3-rootfs/hooks/pre-mount/prepare-root-partition.sh | |
parent | Adding more resilient configuration server api. (diff) | |
download | systemd-init-f2db0443f952be32b76493eb57ada00550e8add6.tar.gz systemd-init-f2db0443f952be32b76493eb57ada00550e8add6.tar.xz systemd-init-f2db0443f952be32b76493eb57ada00550e8add6.zip |
Improve slx config.
Diffstat (limited to 'builder/dnbd3-rootfs/hooks/pre-mount/prepare-root-partition.sh')
-rwxr-xr-x | builder/dnbd3-rootfs/hooks/pre-mount/prepare-root-partition.sh | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/builder/dnbd3-rootfs/hooks/pre-mount/prepare-root-partition.sh b/builder/dnbd3-rootfs/hooks/pre-mount/prepare-root-partition.sh index 4a5b57f3..233d4640 100755 --- a/builder/dnbd3-rootfs/hooks/pre-mount/prepare-root-partition.sh +++ b/builder/dnbd3-rootfs/hooks/pre-mount/prepare-root-partition.sh @@ -1,35 +1,45 @@ source "/usr/lib/utils.sh" # Close previous connections to be able to run this script many times. -dnbd3-client --device "$SLX_DNBD3_DEVICE" --close && \ -if ! systemd-preserve-process-marker dnbd3-client --host "$SLX_DNBD3_SERVERS" \ - --image "${SLX_SERVER_BASE}${SLX_DNBD3_IMAGE}" --device \ - "$SLX_DNBD3_DEVICE" --rid "$SLX_DNBD3_RID" -then - warn "Failed to connect $SLX_DNBD3_IMAGE from $SLX_DNBD3_SERVERS to $SLX_DNBD3_DEVICE" +dnbd3-client --device "$SLX_DNBD3_DEVICE" --close +local IFS_backup="$IFS" +IFS="," +local host +for host in ${SLX_DNBD3_SERVERS}; do + info "Trying host \"$host\"." + systemd-preserve-process-marker dnbd3-client --host "$SLX_DNBD3_SERVERS" \ + --image "${SLX_SERVER_BASE}${SLX_DNBD3_IMAGE}" --device \ + "$SLX_DNBD3_DEVICE" --rid "$SLX_DNBD3_RID" + local return_code="$?" + [[ $return_code == 0 ]] && break + continue +done +IFS="$IFS_backup" +if [[ $return_code != 0 ]]; then + warn "Failed to connect \"${SLX_SERVER_BASE}${SLX_DNBD3_IMAGE}\" from one of \"$SLX_DNBD3_SERVERS\" to \"$SLX_DNBD3_DEVICE\"." emergency_shell -n "Error in $0" return 1 fi -local nbd_device='/dev/nbd0' && \ +local nbd_device='/dev/nbd0' systemd-preserve-process-marker qemu-nbd --connect="$nbd_device" \ - "$SLX_DNBD3_DEVICE" --read-only && \ + "$SLX_DNBD3_DEVICE" --read-only local read_only_partition="$(utils_create_partition_via_offset "$nbd_device" \ - ${SLX_SYSTEM_PARTITION_LABEL})" && \ + "$SLX_SYSTEM_PARTITION_LABEL")" # Make read-only partition writable. # TODO implement persistent available indicator. local persistent="N" # 'P' for persistent storage, 'N' for not persistent if true; then - modprobe brd max_part=1 rd_size=524288 && \ + modprobe brd max_part=1 rd_size=524288 local writable_device="/dev/ram0" else # Use next free loop device. - local writable_device="$(losetup -f)" && \ - dd if=/dev/zero of=persistent_storage.img bs=1k count=1000 && \ + local writable_device="$(losetup -f)" + dd if=/dev/zero of=persistent_storage.img bs=1k count=1000 losetup "$writable_device" persistent_storage.img persistent="P" fi -local partition_size="$(blockdev --getsz "$read_only_partition")" && \ -local writable_partition_name="root" && \ +local partition_size="$(blockdev --getsz "$read_only_partition")" +local writable_partition_name="root" local chunksize="1" modprobe dm_snapshot dmsetup create "$writable_partition_name" --noudevsync --table \ |