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 _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
