The following hack makes the test pass but there are larger safety
issues that I'll need to look at on Wednesday:
diff --git a/nbd/server.c b/nbd/server.c
index 895cf0a752..cf4b7d5c6d 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -1617,7 +1617,7 @@ static void nbd_drained_begin(void *opaque)
}
}
-static void nbd_drained_end(void *opaque)
+static void nbd_resume_clients(void *opaque)
{
NBDExport *exp = opaque;
NBDClient *client;
@@ -1628,6 +1628,15 @@ static void nbd_drained_end(void *opaque)
}
}
+static void nbd_drained_end(void *opaque)
+{
+ NBDExport *exp = opaque;
+
+ /* TODO how to make sure exp doesn't go away? */
+ /* TODO what if AioContext changes before this runs? */
+ aio_bh_schedule_oneshot(nbd_export_aio_context(exp),
nbd_resume_clients, exp);
+}
+
static bool nbd_drained_poll(void *opaque)
{
NBDExport *exp = opaque;