[pve-devel] [PATCH v3] Fixes: #1415 do not block pvestatd when nfsd is stopped on the server side
Emmanuel Kasper
e.kasper at proxmox.com
Thu Jun 29 14:48:13 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, for instance
directory storages on unplugged USB devices.
---
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 b640712..6f72cee 100644
--- a/PVE/Storage/Plugin.pm
+++ b/PVE/Storage/Plugin.pm
@@ -853,8 +853,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($timeout, sub {-d $path})) {
+ 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