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.sando...@proxmox.com> --- Differences from v2: - Split into multiple commits - Simplify patch - Use only the snapshot name in the callback of the helper Differences from v1: - Add a helper to run callback on each snapshot. src/PVE/Storage/BTRFSPlugin.pm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/PVE/Storage/BTRFSPlugin.pm b/src/PVE/Storage/BTRFSPlugin.pm index cadd9d1..43f797a 100644 --- a/src/PVE/Storage/BTRFSPlugin.pm +++ b/src/PVE/Storage/BTRFSPlugin.pm @@ -419,6 +419,20 @@ my sub foreach_subvol : prototype($$) { }) } +# Calls `$code->($volume, $snap_name)` 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, $snap) = @_; + return if $name ne $basename; + return if !defined $snap; + $code->($snap); + }); +} + sub free_image { my ($class, $storeid, $scfg, $volname, $isBase, $_format) = @_; -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel