Richard W.M. Jones
2022-Apr-14 17:53 UTC
[Libguestfs] Feature gaps in nbdkit vs qemu curl & ssh block driver
Hi Eric, I was talking to Jonathon just now about feature gaps in nbdkit vs qemu's curl and ssh drivers. Two that he has identified are below. Mainly writing this email to document them, but your thoughts welcome. (1) qemu curl has a "readahead" setting Looking at the code, it seems this causes the read to be extended by a fixed size (if I understand it all correctly, which may not be true!). eg. If readahead = 64K, then every read will read the requested amount + 64K. That seems a bit odd though. What happens if two adjacent requests come in? Is the readahead coalesced with the second request? Anyway, nbdkit-readahead-filter exists, but it has a lot of problems. We actually _stopped_ using it with virt-v2v because it caused more trouble than it is worth. In particular: - Because it increases request sizes greatly, this ends up breaking some plugins (notably VDDK which as you know has trouble handling large requests). We could fix this by inserting a filter to break up large requests, but that's just trouble mainly because of the next point. - It's completely synchronous, so it slows the read request because you have to wait for the over-read. - It tries to be "adaptive" but in practice isn't very. So it guesses wrong most of the time about what you'd want to read next. For these reasons I believe this filter needs a complete, from-scratch rewrite. (2) qemu ssh can create a remote disk This is a simple feature request. I added something similar recently for nbdkit-vddk-plugin: https://gitlab.com/nbdkit/nbdkit/-/commit/a39d5773afc3ebab7e5768118a2bccb89a654585 Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org