43 lines
1.1 KiB
Diff
43 lines
1.1 KiB
Diff
|
|
From d6aa08ac3693be3e08f2c8d3ad5a356ea6e9dead Mon Sep 17 00:00:00 2001
|
||
|
|
From: WangJian <wangjian161@huawei.com>
|
||
|
|
Date: Wed, 9 Feb 2022 10:55:08 +0800
|
||
|
|
Subject: [PATCH] qemu-nbd: set timeout to qemu-nbd socket
|
||
|
|
|
||
|
|
In case of insufficient memory and kill-9,
|
||
|
|
the NBD socket cannot be processed and stuck all the time.
|
||
|
|
|
||
|
|
Signed-off-by: wangjian161 <wangjian161@huawei.com>
|
||
|
|
---
|
||
|
|
nbd/client.c | 8 ++++++++
|
||
|
|
1 file changed, 8 insertions(+)
|
||
|
|
|
||
|
|
diff --git a/nbd/client.c b/nbd/client.c
|
||
|
|
index 29ffc609a4..987dde43c7 100644
|
||
|
|
--- a/nbd/client.c
|
||
|
|
+++ b/nbd/client.c
|
||
|
|
@@ -24,6 +24,8 @@
|
||
|
|
#include "nbd-internal.h"
|
||
|
|
#include "qemu/cutils.h"
|
||
|
|
|
||
|
|
+#define NBD_TIMEOUT_SECONDS 30
|
||
|
|
+
|
||
|
|
/* Definitions for opaque data types */
|
||
|
|
|
||
|
|
static QTAILQ_HEAD(, NBDExport) exports = QTAILQ_HEAD_INITIALIZER(exports);
|
||
|
|
@@ -1310,6 +1312,12 @@ int nbd_init(int fd, QIOChannelSocket *sioc, NBDExportInfo *info,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
+ if (ioctl(fd, NBD_SET_TIMEOUT, NBD_TIMEOUT_SECONDS) < 0) {
|
||
|
|
+ int serrno = errno;
|
||
|
|
+ error_setg(errp, "Failed setting timeout");
|
||
|
|
+ return -serrno;
|
||
|
|
+ }
|
||
|
|
+
|
||
|
|
trace_nbd_init_finish();
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|