[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 1/7] block/nbd: Delete reconnect delay timer when done
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PULL 1/7] block/nbd: Delete reconnect delay timer when done |
Date: |
Wed, 9 Feb 2022 15:02:52 +0100 |
From: Hanna Reitz <hreitz@redhat.com>
We start the reconnect delay timer to cancel the reconnection attempt
after a while. Once nbd_co_do_establish_connection() has returned, this
attempt is over, and we no longer need the timer.
Delete it before returning from nbd_reconnect_attempt(), so that it does
not persist beyond the I/O request that was paused for reconnecting; we
do not want it to fire in a drained section, because all sort of things
can happen in such a section (e.g. the AioContext might be changed, and
we do not want the timer to fire in the wrong context; or the BDS might
even be deleted, and so the timer CB would access already-freed data).
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
---
block/nbd.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/block/nbd.c b/block/nbd.c
index 63dbfa807d..16cd7fef77 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -381,6 +381,13 @@ static coroutine_fn void
nbd_reconnect_attempt(BDRVNBDState *s)
}
nbd_co_do_establish_connection(s->bs, NULL);
+
+ /*
+ * The reconnect attempt is done (maybe successfully, maybe not), so
+ * we no longer need this timer. Delete it so it will not outlive
+ * this I/O request (so draining removes all timers).
+ */
+ reconnect_delay_timer_del(s);
}
static coroutine_fn int nbd_receive_replies(BDRVNBDState *s, uint64_t handle)
--
2.31.1
- [PULL 0/7] nbd: handle AioContext change correctly, Vladimir Sementsov-Ogievskiy, 2022/02/09
- [PULL 1/7] block/nbd: Delete reconnect delay timer when done,
Vladimir Sementsov-Ogievskiy <=
- [PULL 6/7] block/nbd: Move s->ioc on AioContext change, Vladimir Sementsov-Ogievskiy, 2022/02/09
- [PULL 5/7] iotests/281: Test lingering timers, Vladimir Sementsov-Ogievskiy, 2022/02/09
- [PULL 2/7] block/nbd: Delete open timer when done, Vladimir Sementsov-Ogievskiy, 2022/02/09
- [PULL 7/7] iotests/281: Let NBD connection yield in iothread, Vladimir Sementsov-Ogievskiy, 2022/02/09
- [PULL 4/7] iotests.py: Add QemuStorageDaemon class, Vladimir Sementsov-Ogievskiy, 2022/02/09
- [PULL 3/7] block/nbd: Assert there are no timers when closed, Vladimir Sementsov-Ogievskiy, 2022/02/09
- Re: [PULL 0/7] nbd: handle AioContext change correctly, Peter Maydell, 2022/02/11