A combination of the work that both Rich and I have been doing lately, where filters use only the new API with flags on every command that the client can send over the wire (we can then add support for more flags in nbdkit without having to add new callbacks, as NBD adds more flags upstream). Eric Blake (4): protocol: Split flags from cmd field in requests backend: Pass flags argument through plugins: Move FUA fallback to plugins RFC: plugins: Add callbacks for FUA semantics Richard W.M. Jones (9): plugins: Move locking to a new file. Refactor plugin_* functions into a backend struct. Fix const-correctness of backend pwrite method. backend: Add a .plugin_name method. connections: Allow multiple handles to be stored in the connection object. Introduce filters. Implement filters. filters: Add nbdkit-offset-filter. filters: Move rdelay/wdelay from file plugin to new delay filter. Makefile.am | 2 +- TODO | 22 +- configure.ac | 5 +- docs/Makefile.am | 9 +- docs/nbdkit-filter.pod | 528 +++++++++++++++++++++++++ docs/nbdkit-plugin.pod | 92 ++++- docs/nbdkit.pod | 31 +- filters/Makefile.am | 35 ++ filters/delay/Makefile.am | 62 +++ filters/delay/delay.c | 162 ++++++++ filters/delay/nbdkit-delay-filter.pod | 88 +++++ filters/offset/Makefile.am | 62 +++ filters/offset/nbdkit-offset-filter.pod | 99 +++++ filters/offset/offset.c | 148 +++++++ include/Makefile.am | 4 +- include/nbdkit-filter.h | 147 +++++++ include/nbdkit-plugin.h | 33 +- nbdkit.in | 17 +- plugins/file/file.c | 76 +--- plugins/file/nbdkit-file-plugin.pod | 14 +- plugins/nbd/nbd.c | 39 +- src/Makefile.am | 7 +- src/connections.c | 124 +++--- src/filters.c | 613 ++++++++++++++++++++++++++++ src/internal.h | 92 +++-- src/locks.c | 115 ++++++ src/main.c | 134 ++++++- src/nbdkit.pc.in | 1 + src/plugins.c | 680 +++++++++++++++++--------------- src/protocol.h | 10 +- tests/test-parallel-file.sh | 4 +- tests/test-parallel-nbd.sh | 1 + 32 files changed, 2896 insertions(+), 560 deletions(-) create mode 100644 docs/nbdkit-filter.pod create mode 100644 filters/Makefile.am create mode 100644 filters/delay/Makefile.am create mode 100644 filters/delay/delay.c create mode 100644 filters/delay/nbdkit-delay-filter.pod create mode 100644 filters/offset/Makefile.am create mode 100644 filters/offset/nbdkit-offset-filter.pod create mode 100644 filters/offset/offset.c create mode 100644 include/nbdkit-filter.h create mode 100644 src/filters.c create mode 100644 src/locks.c -- 2.14.3