From c243be83b4a461c74b08763df46815fb5771ae08 Mon Sep 17 00:00:00 2001 From: Daniel Berteaud Date: Wed, 18 Sep 2019 17:15:46 +0200 Subject: [PATCH] Parse volname where needed The common ZFSPlugin was missing volume name parsing in a few places. This was not a problem for standard volumes, but broke functionnalities (like resize, snapshot, rollback) with linked clones as the name of the zvol must be extracted from the entry in the config (remove base-X-disk-Y prefix) Signed-off-by: Daniel Berteaud --- PVE/Storage/ZFSPlugin.pm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PVE/Storage/ZFSPlugin.pm b/PVE/Storage/ZFSPlugin.pm index 1fac811..8c6709c 100644 --- a/PVE/Storage/ZFSPlugin.pm +++ b/PVE/Storage/ZFSPlugin.pm @@ -101,6 +101,8 @@ sub zfs_get_lu_name { my $base = $zfs_get_base->($scfg); + $zvol = ($class->parse_volname($zvol))[1]; + my $object = ($zvol =~ /^.+\/.+/) ? "$base/$zvol" : "$base/$scfg->{pool}/$zvol"; my $lu_name = $class->zfs_request($scfg, undef, 'list_lu', $object); @@ -321,7 +323,9 @@ sub free_image { sub volume_resize { my ($class, $scfg, $storeid, $volname, $size, $running) = @_; - + + $volname = ($class->parse_volname($volname))[1]; + my $new_size = $class->SUPER::volume_resize($scfg, $storeid, $volname, $size, $running); $class->zfs_resize_lu($scfg, $volname, $new_size); @@ -332,12 +336,16 @@ sub volume_resize { sub volume_snapshot_delete { my ($class, $scfg, $storeid, $volname, $snap, $running) = @_; + $volname = ($class->parse_volname($volname))[1]; + $class->zfs_request($scfg, undef, 'destroy', "$scfg->{pool}/$volname\@$snap"); } sub volume_snapshot_rollback { my ($class, $scfg, $storeid, $volname, $snap) = @_; + $volname = ($class->parse_volname($volname))[1]; + $class->zfs_delete_lu($scfg, $volname); $class->zfs_request($scfg, undef, 'rollback', "$scfg->{pool}/$volname\@$snap");