Alright, so final version for now is here:
https://gitlab.com/rwmjones/libnbd/-/tree/nbdublk/ublk
I resolved the data corruption problem once I realised that
->handle_event must only retire commands which are on the same queue
(obvious in hindsight). I ran a parallel job overnight where I did
various heavyweight operations repeatedly -- a bunch of git stuff,
large copies, a big compile etc -- on an nbdublk filesystem. It
handled everything perfectly.
Before this can go upstream:
- Does libubdsrv now have a stable API, or could it change?
- We need to enable the device in the Fedora kernel.
- We need libubdsrv + ublk tool in Fedora.
- Possible we need to add tests into the libnbd tree. I couldn't
think of a good way to test this that doesn't require root and
potentially do some horrible stuff to the testing machine.
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v