]> git.proxmox.com Git - pve-storage.git/commitdiff
btrfs: do not reuse DirPlugins activate_storage directrly
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 24 Jun 2021 09:15:28 +0000 (11:15 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 24 Jun 2021 09:18:40 +0000 (11:18 +0200)
as then the btrfs assertion would happen after we already created
subdirectories on some path, leaving those left-over..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
PVE/Storage/BTRFSPlugin.pm

index dc5894a28d96b3b4edd901e8f67bad8a8b879be1..5360dca7184e3e7070c2a5568bc604bdb5778e30 100644 (file)
@@ -112,8 +112,21 @@ my sub assert_btrfs($) {
 
 sub activate_storage {
     my ($class, $storeid, $scfg, $cache) = @_;
-    PVE::Storage::DirPlugin::activate_storage($class, $storeid, $scfg, $cache);
-    assert_btrfs($scfg->{path});
+
+    my $path = $scfg->{path};
+    if (!defined($scfg->{mkdir}) || $scfg->{mkdir}) {
+       mkpath $path;
+    }
+
+    my $mp = PVE::Storage::DirPlugin::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";
+    }
+
+    assert_btrfs($path); # only assert this stuff now, ensures $path is there and better UX
+
+    $class->SUPER::activate_storage($storeid, $scfg, $cache);
 }
 
 sub status {