All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] nbd/server: Quiesce server on drained section
@ 2021-06-02  6:05 Sergio Lopez
  2021-06-02  6:05 ` [PATCH v2 1/2] block-backend: add drained_poll Sergio Lopez
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Sergio Lopez @ 2021-06-02  6:05 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Vladimir Sementsov-Ogievskiy, Sergio Lopez,
	qemu-block, Max Reitz, Nir Soffer

Before switching between AioContexts we need to make sure that we're
fully quiesced ("nb_requests == 0" for every client) when entering the
drained section. Otherwise, coroutines may be run in the wrong context
after the switch, leading to a number of critical issues.

To accomplish this, we add ".drained_poll" to BlockDevOps and use it
in the NBD server, along with ".drained_being" and "drained_end", to
coordinate the quiescing of the server while entering a drained
section.

v2:
 - Use a bool for the value returned by .drained_poll [Kevin]
 - Change .drained_poll comment to reflect that the returned boolean
   value will be true if the device is still busy, or false otherwise
 - Drop yield_co_list and use recv_coroutine and read_yielding [Kevin]
 - Return "true" or "false" in nbd_drained_poll [Kevin]
 - Fix grammar in the commit message of patch 2 [Eric]

Sergio Lopez (2):
  block-backend: add drained_poll
  nbd/server: Use drained block ops to quiesce the server

 block/block-backend.c          |  7 ++-
 include/sysemu/block-backend.h |  4 ++
 nbd/server.c                   | 82 +++++++++++++++++++++++++---------
 3 files changed, 71 insertions(+), 22 deletions(-)

-- 
2.26.2




^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-06-02 12:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-02  6:05 [PATCH v2 0/2] nbd/server: Quiesce server on drained section Sergio Lopez
2021-06-02  6:05 ` [PATCH v2 1/2] block-backend: add drained_poll Sergio Lopez
2021-06-02  8:34   ` Vladimir Sementsov-Ogievskiy
2021-06-02  6:05 ` [PATCH v2 2/2] nbd/server: Use drained block ops to quiesce the server Sergio Lopez
2021-06-02 12:06   ` Vladimir Sementsov-Ogievskiy
2021-06-02 12:44     ` Sergio Lopez
2021-06-02 12:48       ` Vladimir Sementsov-Ogievskiy
2021-06-02 11:57 ` [PATCH v2 0/2] nbd/server: Quiesce server on drained section Kevin Wolf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.