[Libguestfs] [PATCH nbdkit INCOMPLETE 0/6] Introduce filters to nbdkit.

Richard W.M. Jones rjones at redhat.com
Mon Jan 15 17:16:37 UTC 2018


On Mon, Jan 15, 2018 at 10:55:04AM -0600, Eric Blake wrote:
> On 01/14/2018 06:11 AM, Richard W.M. Jones wrote:
> > This patch isn't complete (patch 6/6 isn't finished) so it's just for
> > discussion, although it does compile and run.
> > 
> > This introduces to nbdkit a concept of "filters" which can be placed
> > in front of plugins to modify their behaviour.  Some examples where
> > you might use filters:
> > 
> >  * Serve a subset of the data, such as (offset, range) or a
> >    single partition from a disk image.
> > 
> >  * Inject delays or errors for testing clients.
> > 
> >  * Implement "copy-on-write" (a feature found in other NBD servers).
> 
> How hard would it be to allow filters to control what features are
> advertised?  For example, we've already proven that it is easy to expose
> features to the end client that are not present in the plugin (we
> advertise FUA support to end clients, because we can emulate it by
> calling the plugin's .flush at the right places; we also advertise write
> zero support because we can call the plugin's .pwrite as a fallback).

I feel that the right way for us to support FUA is going to involve
having a new .pwrite call with the additional flag, and I think we
also will need a ‘.can_fua’ method so we don't need to overload
can_flush as we do now.  In that case any filter can simply overload
those methods and modify it (in either direction, either adding or
removing).

Rich.

> But for testing purposes, it might be nice to permit the reverse:
> intentionally filter out a feature that the plugin supports, but which
> we do not want to advertise to the end client, for the purposes of
> testing the client's ability to fall back to other means in the absence
> of that feature.
> 
> -- 
> Eric Blake, Principal Software Engineer
> Red Hat, Inc.           +1-919-301-3266
> Virtualization:  qemu.org | libvirt.org
> 




-- 
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




More information about the Libguestfs mailing list