]> git.proxmox.com Git - pve-storage.git/blobdiff - PVE/Storage/BTRFSPlugin.pm
btrfs: do not reuse DirPlugins activate_storage directrly
[pve-storage.git] / 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 {