I want to make my nbd forwarding plugin fully parallel - but to do
that, I first need to make nbdkit itself fully parallel ;)
With this series, I was finally able to demonstrate out-of-order
responses when using qemu-io (which is great at sending back-to-back
requests prior to waiting for responses) coupled with the nbd file
plugin (which has a great feature of rdelay and wdelay, to make
it obvious whether processing occurs in parallel among separate
threads or in serial). 'make check' sometimes succeeds with this
series, but more often than not I was able to crash or hand on the
test-socket-activation test; I've posted another series for the
crashes, as well as analysis of the hang. Until the hang is solved,
I'm leaving this series as RFC, but review is welcome to see if
my approach is sound.
Eric Blake (6):
connections: Simplify handle_request()
connections: Avoid plugin when shutdown is imminent
connections: Add read/write lock over client I/O
connections: Add thread-safe status indicator
connections: Set up thread pool for handling client requests
Add --threads option for supporting true parallel requests
TODO | 7 --
docs/nbdkit.pod | 12 ++-
nbdkit.in | 2 +-
plugins/file/file.c | 2 +-
src/connections.c | 271 +++++++++++++++++++++++++++++++++++++---------------
src/internal.h | 2 +
src/main.c | 20 +++-
src/plugins.c | 8 ++
8 files changed, 237 insertions(+), 87 deletions(-)
--
2.13.6