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