[pve-devel] [PATCH v2] Fixes: #1415 do not block pvestatd when nfsd is stopped on the server side

Emmanuel Kasper e.kasper at proxmox.com
Wed Jun 28 12:04:29 CEST 2017


Wrap the -d test with run_or_get_killed sub this test
can make pvestatd hang on I/O wait when a nfsd process is stopped

This might help with other file based storages (GlusterFS ?) too
---
 PVE/Storage/Plugin.pm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
index cc4c7e7..d9fd43b 100644
--- a/PVE/Storage/Plugin.pm
+++ b/PVE/Storage/Plugin.pm
@@ -840,8 +840,13 @@ sub activate_storage {
 
     die "storage definintion has no path\n" if !$path;
 
-    die "unable to activate storage '$storeid' - " .
-	"directory '$path' does not exist\n" if ! -d $path;
+    # this path test may hang indefinitely on unresponsive mounts
+    my $timeout = 2;
+    if (! PVE::Tools::run_fork_with_timeout(sub {-d $path}, $timeout)) {
+	die "unable to activate storage '$storeid' - " .
+	"directory '$path' does not exist or is unreachable\n";
+    }
+
 
     return if defined($scfg->{mkdir}) && !$scfg->{mkdir};
 
-- 
2.11.0





More information about the pve-devel mailing list