Search code examples
qemu

Next free device option for qemu-nbd


Is there an option for the qemu-nbd command to get the next free, i.e. unused NBD like losetup -f does? The manpage of 0.0.1 (which is version of the currently stable release 1.7.0 of qemu) doesn't mention anything.


Solution

  • You can query attributes about nbd devices in sysfs.

    For example:

    cat /sys/class/block/nbd0/size
    

    Will return 0, or the size of the mapped image file otherwise, if /dev/ndb0 is in use.

    So you could iterate each device until you find one with 0 and attempt to try that with qemu-nbd.

    Something like this should do it:

    for x in /sys/class/block/nbd* ; do
      S=`cat $x/size`
      if [ "$S" == "0" ] ; then
        qemu-nbd -c /dev/`basename $x` some_file.img
        break
      fi
    done