Re: [PATCH 4/4] block/nbd: nbd_co_reconnect_loop(): don't connect if drained

2020-09-23 Thread Eric Blake

On 9/3/20 2:03 PM, Vladimir Sementsov-Ogievskiy wrote:

In a recent commit 12c75e20a269ac we've improved
nbd_co_reconnect_loop() to not make drain wait for additional sleep.
Similarly, we shouldn't try to connect, if previous sleep was
interrupted by drain begin, otherwise drain_begin will have to wait for
the whole connection attempt.

Signed-off-by: Vladimir Sementsov-Ogievskiy 
---
  block/nbd.c | 3 +++
  1 file changed, 3 insertions(+)


Reviewed-by: Eric Blake 



diff --git a/block/nbd.c b/block/nbd.c
index caae0e6d31..4548046cd7 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -661,6 +661,9 @@ static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState 
*s)
  } else {
  qemu_co_sleep_ns_wakeable(QEMU_CLOCK_REALTIME, timeout,
&s->connection_co_sleep_ns_state);
+if (s->drained) {
+continue;
+}
  if (timeout < max_timeout) {
  timeout *= 2;
  }



--
Eric Blake, Principal Software Engineer
Red Hat, Inc.   +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




[PATCH 4/4] block/nbd: nbd_co_reconnect_loop(): don't connect if drained

2020-09-03 Thread Vladimir Sementsov-Ogievskiy
In a recent commit 12c75e20a269ac we've improved
nbd_co_reconnect_loop() to not make drain wait for additional sleep.
Similarly, we shouldn't try to connect, if previous sleep was
interrupted by drain begin, otherwise drain_begin will have to wait for
the whole connection attempt.

Signed-off-by: Vladimir Sementsov-Ogievskiy 
---
 block/nbd.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/block/nbd.c b/block/nbd.c
index caae0e6d31..4548046cd7 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -661,6 +661,9 @@ static coroutine_fn void nbd_co_reconnect_loop(BDRVNBDState 
*s)
 } else {
 qemu_co_sleep_ns_wakeable(QEMU_CLOCK_REALTIME, timeout,
   &s->connection_co_sleep_ns_state);
+if (s->drained) {
+continue;
+}
 if (timeout < max_timeout) {
 timeout *= 2;
 }
-- 
2.18.0