Commit 9e6d990f exposed a pre-existing deadlock between the nbd
plugin as client and parallel nbdkit as server. Prior to that
commit, the deadlock was "resolved" because we unloaded the .so
in parallel to a .close callback that never completed (yes, it's
nasty that it usually? let the testsuite pass), but now we
correctly refuse to unload a plugin that has not returned from
.close, which makes 'test-nbd' and 'test-parallel-nbd.sh' hang.
Here are two patches which each independently break the deadlock,
but where both patches should be applied so that we are robust
to non-nbdkit partners that exhibit the same behaviors as our
unpatched deadlock. Since testsuite hangs make automated testing
less than useful, I'm going ahead and pushing them now.
Eric Blake (2):
nbd: Inform server of intent to quit
nbd: Don't read after client sends NBD_CMD_DISC
src/connections.c | 5 +++--
plugins/nbd/nbd.c | 4 +++-
2 files changed, 6 insertions(+), 3 deletions(-)
--
2.14.3