[pve-devel] [PATCH storage] fix 3214: DirPlugin: die early if mountpoint not mounted

Aaron Lauterer a.lauterer at proxmox.com
Tue Dec 22 13:18:52 CET 2020


If the `is_mountpoint` option is enabled, it is sensible to first check
for the mountpoint before proceeding any further in the storage
activation.

The old behaviour would create the path to the mountpoint if the `mdkir`
option wasn't set to false. This resulted in mountpoints further up
the path to not mount anymore, e.g. nested ZFS datasets.

Signed-off-by: Aaron Lauterer <a.lauterer at proxmox.com>
---

There is another patch[0] already for this bug report but it deals with
a related, but different problem of not creating the internal storage
directory structure if `mkdir 0` was set.

[0] https://lists.proxmox.com/pipermail/pve-devel/2020-December/046572.html

 PVE/Storage/DirPlugin.pm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/PVE/Storage/DirPlugin.pm b/PVE/Storage/DirPlugin.pm
index 2267f11..81aaf2b 100644
--- a/PVE/Storage/DirPlugin.pm
+++ b/PVE/Storage/DirPlugin.pm
@@ -132,17 +132,17 @@ sub status {
 sub activate_storage {
     my ($class, $storeid, $scfg, $cache) = @_;
 
-    my $path = $scfg->{path};
-    if (!defined($scfg->{mkdir}) || $scfg->{mkdir}) {
-	mkpath $path;
-    }
-
     my $mp = parse_is_mountpoint($scfg);
     if (defined($mp) && !path_is_mounted($mp, $cache->{mountdata})) {
 	die "unable to activate storage '$storeid' - " .
 	    "directory is expected to be a mount point but is not mounted: '$mp'\n";
     }
 
+    my $path = $scfg->{path};
+    if (!defined($scfg->{mkdir}) || $scfg->{mkdir}) {
+	mkpath $path;
+    }
+
     $class->SUPER::activate_storage($storeid, $scfg, $cache);
 }
 
-- 
2.20.1






More information about the pve-devel mailing list