From: Stelios Vailakakis <stelios@libvirt.dev>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH storage] fix #6073: esxi: fix zombie process after storage removal
Date: Tue, 1 Jul 2025 15:41:35 +0000 [thread overview]
Message-ID: <20250701154135.2387872-1-stelios@libvirt.dev> (raw)
After removing an ESXi storage, a zombie process is generated because
the forked FUSE process (esxi-folder-fuse) is not properly reaped.
This patch implements a double-fork mechanism to ensure the FUSE process
is reparented to init (PID 1), which will properly reap it when it
exits. Additionally adds the missing waitpid() call to reap the
intermediate child process.
Tested on Proxmox VE 8.4.1 with ESXi 8.0U3e storage.
Signed-off-by: Stelios Vailakakis <stelios@libvirt.dev>
---
src/PVE/Storage/ESXiPlugin.pm | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/PVE/Storage/ESXiPlugin.pm b/src/PVE/Storage/ESXiPlugin.pm
index ab5242d..7c2d16a 100644
--- a/src/PVE/Storage/ESXiPlugin.pm
+++ b/src/PVE/Storage/ESXiPlugin.pm
@@ -211,7 +211,17 @@ sub esxi_mount : prototype($$$;$) {
if (!$pid) {
eval {
undef $rd;
- POSIX::setsid();
+
+ # Double fork to properly daemonize
+ POSIX::setsid() or die "failed to create new session: $!\n";
+ my $pid2 = fork();
+ die "second fork failed: $!\n" if !defined($pid2);
+
+ if ($pid2) {
+ # First child exits immediately
+ POSIX::_exit(0);
+ }
+ # Second child (grandchild) enters systemd scope
PVE::Systemd::enter_systemd_scope(
$scope_name_base,
"Proxmox VE FUSE mount for ESXi storage $storeid (server $host)",
@@ -243,6 +253,8 @@ sub esxi_mount : prototype($$$;$) {
}
POSIX::_exit(1);
}
+ # Parent wait for first child to exit
+ waitpid($pid, 0);
undef $wr;
my $result = do { local $/ = undef; <$rd> };
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next reply other threads:[~2025-07-01 15:45 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-01 15:41 Stelios Vailakakis [this message]
2025-08-04 18:38 ` [pve-devel] applied: " Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250701154135.2387872-1-stelios@libvirt.dev \
--to=stelios@libvirt.dev \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox