[Libguestfs] nbdkit -c /dev/nbdX option

Richard W.M. Jones rjones at redhat.com
Mon Sep 17 20:21:08 UTC 2018


While I was thinking about what I'd write for my proposed nbdkit talk
at FOSDEM next year, this strikes me as clunky:

    rm -f /tmp/sock
    nbdkit -U /tmp/sock file foo
    nbd-client -u /tmp/sock /dev/nbd0
      ...
    nbd-client -d /dev/nbd0
    killall nbdkit

In qemu-nbd, all that is just this:

    qemu-nbd -c /dev/nbd0 foo

It seems like it would be nice to implement an ‘nbdkit -c /dev/nbdX’
option.

My first idea was:

    nbdkit -c /dev/nbdX
           ==> nbdkit -U [sock]
               & running: nbd-client -nofork -u [sock] /dev/nbdX

However that still leaves the need for end users to manually delete
the nbdX device & kill nbdkit.

If I'm understanding the qemu code correctly, qemu-nbd uses its own
internal NBD client running in a pthread, so it doesn't need
nbd-client.  So it can keep the client running next to the server and
neatly handle cleanup of the device & server on exit.

(In case it's not clear, the nbd-client userspace process does not
persist with modern kernel NBD.)

I can't think of a good way to implement this in nbdkit so if anyone's
got any ideas ...

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html




More information about the Libguestfs mailing list