Run check_exit also on deferred stop. Now vitastor-nfs should finally always stop on umount

This commit is contained in:
Vitaliy Filippov
2024-08-11 00:05:20 +03:00
parent 333c54ebbf
commit 521e867b10
+3 -3
View File
@@ -528,11 +528,9 @@ void nfs_proxy_t::do_accept(int listen_fd)
// Handle incoming event // Handle incoming event
if (epoll_events & EPOLLRDHUP) if (epoll_events & EPOLLRDHUP)
{ {
auto parent = cli->parent; if (cli->parent->trace)
if (parent->trace)
fprintf(stderr, "Client %d disconnected\n", nfs_fd); fprintf(stderr, "Client %d disconnected\n", nfs_fd);
cli->stop(); cli->stop();
parent->check_exit();
return; return;
} }
cli->epoll_events |= epoll_events; cli->epoll_events |= epoll_events;
@@ -781,11 +779,13 @@ void nfs_client_t::stop()
stopped = true; stopped = true;
if (refs <= 0) if (refs <= 0)
{ {
auto parent = this->parent;
parent->rpc_clients.erase(nfs_fd); parent->rpc_clients.erase(nfs_fd);
parent->active_connections--; parent->active_connections--;
parent->epmgr->tfd->set_fd_handler(nfs_fd, true, NULL); parent->epmgr->tfd->set_fd_handler(nfs_fd, true, NULL);
close(nfs_fd); close(nfs_fd);
delete this; delete this;
parent->check_exit();
} }
} }