#!/usr/bin/env bash # -*- coding: utf-8 -*- # region imports source "/usr/lib/rebash/core.sh" core.import exceptions exceptions.activate # endregion in_device="$1" nbd_device="$2" # TODO detect first free nbd device systemd-preserve-process-marker qemu-nbd --connect="$nbd_device" \ "$in_device" --read-only --persistent --nocache # TODO better way to wait for the device to be made? i=0 while [ ! -b "$nbd_device" ]; do [ $i -ge 20 ] && exit 1 if [ $UDEVVERSION -ge 143 ]; then udevadm settle --exit-if-exists="$nbd_device" else sleep 0.1 fi i=$(($i + 1)) done # NBD doesn't emit uevents when it gets connected, so kick it # TODO get path from $nbd_device echo change > /sys/block/nbd0/uevent udevadm settle # region vim modline # vim: set tabstop=4 shiftwidth=4 expandtab: # vim: foldmethod=marker foldmarker=region,endregion: # endregion