704d2b18ae
resolves: rhbz#1991649 Fix assertion failure during server shutdown Fix delay-close option resolves: rhbz#1991652 tests/test-debug-flags.sh: Don't use port 10809 during test resolves: rhbz#1991945
42 lines
1.5 KiB
Diff
42 lines
1.5 KiB
Diff
From 33318699bf1255aef0c6ee4863236d26d7b326ec Mon Sep 17 00:00:00 2001
|
|
From: "Richard W.M. Jones" <rjones@redhat.com>
|
|
Date: Mon, 9 Aug 2021 20:11:41 +0100
|
|
Subject: [PATCH] server: Return from nbdkit_nanosleep early if the socket
|
|
closes
|
|
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1991652#c2
|
|
|
|
Reported-by: Ming Xie
|
|
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1991652
|
|
(cherry picked from commit 87a88f8c52a0d2fd392c35d37f8b048bcede1382)
|
|
---
|
|
server/public.c | 5 ++++-
|
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/server/public.c b/server/public.c
|
|
index 3362f1ab..4870e2d3 100644
|
|
--- a/server/public.c
|
|
+++ b/server/public.c
|
|
@@ -693,6 +693,8 @@ nbdkit_nanosleep (unsigned sec, unsigned nsec)
|
|
* - the current connection is multi-threaded and another thread detects
|
|
* NBD_CMD_DISC or a problem with the connection
|
|
* - the input socket detects POLLRDHUP/POLLHUP/POLLERR
|
|
+ * - the input socket is invalid (POLLNVAL, probably closed by
|
|
+ * another thread)
|
|
*/
|
|
struct connection *conn = threadlocal_get_conn ();
|
|
struct pollfd fds[] = {
|
|
@@ -724,7 +726,8 @@ nbdkit_nanosleep (unsigned sec, unsigned nsec)
|
|
*/
|
|
assert (quit ||
|
|
(conn && conn->nworkers > 0 && connection_get_status () < 1) ||
|
|
- (conn && (fds[2].revents & (POLLRDHUP | POLLHUP | POLLERR))));
|
|
+ (conn && (fds[2].revents & (POLLRDHUP | POLLHUP | POLLERR |
|
|
+ POLLNVAL))));
|
|
nbdkit_error ("aborting sleep to shut down");
|
|
errno = ESHUTDOWN;
|
|
return -1;
|
|
--
|
|
2.31.1
|
|
|