X-Git-Url: https://git.proxmox.com/?p=pve-storage.git;a=blobdiff_plain;f=PVE%2FStorage%2FBTRFSPlugin.pm;h=1407f443f1f5e83964345b4b1f926da4ee8664f9;hp=a1e5b98c3636c003749310ea117d4edc88acde64;hb=9524b31ee3a68526d157dabc0af8a7b964cd786c;hpb=6c315e45872bfdec27efa5e7b67222ff64d004af diff --git a/PVE/Storage/BTRFSPlugin.pm b/PVE/Storage/BTRFSPlugin.pm index a1e5b98..1407f44 100644 --- a/PVE/Storage/BTRFSPlugin.pm +++ b/PVE/Storage/BTRFSPlugin.pm @@ -6,7 +6,7 @@ use warnings; use base qw(PVE::Storage::Plugin); use Fcntl qw(S_ISDIR O_WRONLY O_CREAT O_EXCL); -use File::Basename qw(dirname); +use File::Basename qw(basename dirname); use File::Path qw(mkpath); use IO::Dir; use POSIX qw(EEXIST); @@ -309,7 +309,7 @@ sub alloc_image { my ($class, $storeid, $scfg, $vmid, $fmt, $name, $size) = @_; if ($fmt ne 'raw' && $fmt ne 'subvol') { - return $class->SUPER::alloc_image($storeid, $scfg, $vmid, $fmt, $name, $size) + return $class->SUPER::alloc_image($storeid, $scfg, $vmid, $fmt, $name, $size); } # From Plugin.pm: @@ -410,7 +410,7 @@ sub free_image { $class->parse_volname($volname); if (!defined($format) || ($format ne 'subvol' && $format ne 'raw')) { - return PVE::Storage::DirPlugin->free_image($storeid, $scfg, $volname, $isBase, $_format); + return $class->SUPER::free_image($storeid, $scfg, $volname, $isBase, $_format); } my $path = $class->filesystem_path($scfg, $volname); @@ -421,9 +421,11 @@ sub free_image { } my $dir = dirname($subvol); + my $basename = basename($subvol); my @snapshot_vols; foreach_subvol($dir, sub { my ($volume, $name, $snapshot) = @_; + return if $name ne $basename; return if !defined $snapshot; push @snapshot_vols, "$dir/$volume"; });