On 3/9/21 8:59 AM, Richard W.M. Jones wrote:
On Fri, Mar 05, 2021 at 05:31:19PM -0600, Eric Blake wrote:
Implement a TODO item of emulating multi-connection consistency via multiple plugin flush calls to allow a client to assume that a flush on a single connection is good enough. This also gives us some fine-tuning over whether to advertise the bit, including some setups that are unsafe but may be useful in timing tests.
Testing is interesting: I used the sh plugin to implement a server that intentionally keeps a per-connection cache.
Note that this filter assumes that multiple connections will still share the same data (other than caching effects); effects are not guaranteed when trying to mix it with more exotic plugins like info that violate that premise. ---
+++ b/filters/cache/nbdkit-cache-filter.pod @@ -41,7 +41,9 @@ an explicit flush is done by the client.
This is the default caching mode, and is safe if your client issues flush requests correctly (which is true for modern Linux and other -well-written NBD clients). +well-written NBD clients). Note that this mode is able to advertise +multi-connection consistency even without the use of +L<nbdkit-multi-conn-filter(1)>.
I would say this hunk is confusing and unnecessary. I mean if you shouldn't be using --filter=multi-conn, then just don't say anything :-) If it really must be mentioned somewhere then probably better to say it in the multi-conn man page instead IMHO.
Fair enough; I'll drop this hunk.
+++ b/filters/fua/nbdkit-fua-filter.pod @@ -16,6 +16,12 @@ This filter can be used to disable FUA and flush requests for speed server fallbacks, and for evaluating timing differences between proper use of FUA compared to a full flush.
+Note that by default, the NBD protocol does not guarantee that the use +of FUA from one connection will be visible from another connection +unless the server advertised NBD_FLAG_MULTI_CONN. You may wish to +combine this filter with L<nbdkit-multi-conn-filter(1)> if you plan on +making multiple connections to the plugin.
This is a case where mentioning the other filter _is_ a good idea.
+++ b/filters/multi-conn/nbdkit-multi-conn-filter.pod [...]
About the rest of the patch, ACK.
It has to be said I did find the documentation a bit hard to follow. If you push this I may follow up with my own documentation fixes (I'll run it by you first though).
I'm open to improvements. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org