[Libguestfs] [RFC nbdkit PATCH 0/6] Enable full parallel request handling

Eric Blake eblake at redhat.com
Fri Nov 17 03:26:51 UTC 2017

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


More information about the Libguestfs mailing list