See the cross-post cover letter for details: https://www.redhat.com/archives/libguestfs/2019-August/msg00322.html
Notably, this series did NOT add fast zero support to the file plugin yet; there, I probably need to do more testing and/or kernel source code reading to learn whether to mark fallocate() as potentially slow, as well as to definitely mark ioctl(BLKZEROOUT) as definitely slow. That will be a followup patch. Eric Blake (3): server: Add internal support for NBDKIT_FLAG_FAST_ZERO filters: Add .can_fast_zero hook plugins: Add .can_fast_zero hook docs/nbdkit-filter.pod | 27 ++++-- docs/nbdkit-plugin.pod | 74 +++++++++++--- docs/nbdkit-protocol.pod | 11 +++ filters/delay/nbdkit-delay-filter.pod | 15 ++- filters/log/nbdkit-log-filter.pod | 2 +- filters/nozero/nbdkit-nozero-filter.pod | 41 ++++++-- plugins/sh/nbdkit-sh-plugin.pod | 13 ++- server/internal.h | 2 + common/protocol/protocol.h | 11 ++- server/filters.c | 33 ++++++- server/plugins.c | 47 ++++++++- server/protocol-handshake.c | 7 ++ server/protocol.c | 46 +++++++-- include/nbdkit-common.h | 7 +- include/nbdkit-filter.h | 3 + include/nbdkit-plugin.h | 2 + filters/blocksize/blocksize.c | 12 +++ filters/cache/cache.c | 20 ++++ filters/cow/cow.c | 20 ++++ filters/delay/delay.c | 28 +++++- filters/log/log.c | 16 ++-- filters/nozero/nozero.c | 62 +++++++++++- filters/truncate/truncate.c | 15 +++ plugins/data/data.c | 14 ++- plugins/full/full.c | 12 +-- plugins/memory/memory.c | 14 ++- plugins/nbd/nbd.c | 28 +++++- plugins/null/null.c | 8 ++ plugins/ocaml/ocaml.c | 26 ++++- plugins/sh/call.c | 1 - plugins/sh/sh.c | 39 ++++++-- plugins/ocaml/NBDKit.ml | 10 +- plugins/ocaml/NBDKit.mli | 2 + plugins/rust/src/lib.rs | 3 + tests/test-eflags.sh | 122 +++++++++++++++++++++--- tests/test-fua.sh | 4 +- 36 files changed, 686 insertions(+), 111 deletions(-) -- 2.21.0