[pve-devel] applied: [PATCH v2 storage] btrfs: check for btrfs in on_add_hook and activate
Thomas Lamprecht
t.lamprecht at proxmox.com
Thu Jun 24 11:21:47 CEST 2021
On 24.06.21 10:45, Wolfgang Bumiller wrote:
> Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> ---
> Changes to v1:
> * Fabian's feedback:
> * removed on_add_hook since activate_storage is called anyway
> * moved btrfs check to after the DirPlugin checks
>
> PVE/Storage/BTRFSPlugin.pm | 24 +++++++++++++++++++++++-
> 1 file changed, 23 insertions(+), 1 deletion(-)
>
>
applied, thanks! I made a follow-up on top to avoid leaving over sub-directories
form the DirPlugin::activate_storage call in the case that assert_btrfs fails.
----8<----
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 {
More information about the pve-devel
mailing list