From 521e867b10747ed171247dce445e7c89bb4f8afb Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 11 Aug 2024 00:05:20 +0300 Subject: [PATCH] Run check_exit also on deferred stop. Now vitastor-nfs should finally always stop on umount --- src/nfs/nfs_proxy.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/nfs/nfs_proxy.cpp b/src/nfs/nfs_proxy.cpp index 9b8f6abc..b3340691 100644 --- a/src/nfs/nfs_proxy.cpp +++ b/src/nfs/nfs_proxy.cpp @@ -528,11 +528,9 @@ void nfs_proxy_t::do_accept(int listen_fd) // Handle incoming event if (epoll_events & EPOLLRDHUP) { - auto parent = cli->parent; - if (parent->trace) + if (cli->parent->trace) fprintf(stderr, "Client %d disconnected\n", nfs_fd); cli->stop(); - parent->check_exit(); return; } cli->epoll_events |= epoll_events; @@ -781,11 +779,13 @@ void nfs_client_t::stop() stopped = true; if (refs <= 0) { + auto parent = this->parent; parent->rpc_clients.erase(nfs_fd); parent->active_connections--; parent->epmgr->tfd->set_fd_handler(nfs_fd, true, NULL); close(nfs_fd); delete this; + parent->check_exit(); } }