From cd18ef73232c23d3ceeed7c2ed960af0427f6ca7 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Thu, 7 Apr 2022 16:03:32 +0300 Subject: [PATCH] Disconnect NBD proxy correctly without leaving a zombie [vitastor-nbd] process in D state --- src/nbd_proxy.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/nbd_proxy.cpp b/src/nbd_proxy.cpp index 0e26eaaa..6676fbbe 100644 --- a/src/nbd_proxy.cpp +++ b/src/nbd_proxy.cpp @@ -705,6 +705,12 @@ protected: if (read_state == CL_READ_HDR) { int req_type = be32toh(cur_req.type); + if (be32toh(cur_req.magic) == NBD_REQUEST_MAGIC && req_type == NBD_CMD_DISC) + { + // Disconnect + close(nbd_fd); + exit(0); + } if (be32toh(cur_req.magic) != NBD_REQUEST_MAGIC || req_type != NBD_CMD_READ && req_type != NBD_CMD_WRITE && req_type != NBD_CMD_FLUSH) {