btrfs: add helper to iterate over snapshots of a subvolume

In this context a subvolume means a BTRFS subvolume.
`$volume\@$snap_name` would be for example
`btrfs_volume/images/102/vm-102-disk-0@snap_name`.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
This commit is contained in:
Maximiliano Sandoval
2025-02-19 12:17:34 +01:00
committed by Fiona Ebner
parent 70955c2d34
commit 171b760d81

View File

@ -419,6 +419,20 @@ my sub foreach_subvol : prototype($$) {
})
}
# Calls `$code->($snapshot)` for each snapshot of the BTRFS subvolume.
my sub foreach_snapshot_of_subvol : prototype($$) {
my ($subvol, $code) = @_;
my $basename = basename($subvol);
my $dir = dirname($subvol);
foreach_subvol($dir, sub {
my ($volume, $name, $snapshot) = @_;
return if $name ne $basename;
return if !defined $snapshot;
$code->($snapshot);
});
}
sub free_image {
my ($class, $storeid, $scfg, $volname, $isBase, $_format) = @_;