From f449cddc799699bfa0b37f9cdf2b40f5392fb280 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Thu, 24 Jun 2021 11:15:28 +0200 Subject: [PATCH] btrfs: do not reuse DirPlugins activate_storage directrly as then the btrfs assertion would happen after we already created subdirectories on some path, leaving those left-over.. Signed-off-by: Thomas Lamprecht --- PVE/Storage/BTRFSPlugin.pm | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/PVE/Storage/BTRFSPlugin.pm b/PVE/Storage/BTRFSPlugin.pm index dc5894a..5360dca 100644 --- a/PVE/Storage/BTRFSPlugin.pm +++ b/PVE/Storage/BTRFSPlugin.pm @@ -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 { -- 2.39.2