[pve-devel] [Patch storage] fix #1770: allow ex/import linked clones.

Wolfgang Link w.link at proxmox.com
Fri May 18 14:16:20 CEST 2018


We encode the base-volume-name in the volname what is not needed.
On ex/import we need the correct dataset name.
---
 PVE/Storage/ZFSPoolPlugin.pm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm
index fd63d94..32e53aa 100644
--- a/PVE/Storage/ZFSPoolPlugin.pm
+++ b/PVE/Storage/ZFSPoolPlugin.pm
@@ -674,6 +674,8 @@ sub volume_export {
     die "$class storage can only export snapshots\n"
 	if !defined($snapshot);
 
+    my $dataset = ($class->parse_volname($volname))[1];
+
     my $fd = fileno($fh);
     die "internal error: invalid file handle for volume_export\n"
 	if !defined($fd);
@@ -687,7 +689,7 @@ sub volume_export {
 	my $arg = $with_snapshots ? '-I' : '-i';
 	push @$cmd, $arg, $base_snapshot;
     }
-    push @$cmd, '--', "$scfg->{pool}/$volname\@$snapshot";
+    push @$cmd, '--', "$scfg->{pool}/$dataset\@$snapshot";
 
     run_command($cmd, output => $fd);
 
@@ -714,7 +716,8 @@ sub volume_import {
     die "internal error: invalid file handle for volume_import\n"
 	if !defined($fd);
 
-    my $zfspath = "$scfg->{pool}/$volname";
+    my $dataset = ($class->parse_volname($volname))[1];
+    my $zfspath = "$scfg->{pool}/$dataset";
     my $suffix = defined($base_snapshot) ? "\@$base_snapshot" : '';
     my $exists = 0 == run_command(['zfs', 'get', '-H', 'name', $zfspath.$suffix],
 			     noerr => 1, errfunc => sub {});
-- 
2.11.0




More information about the pve-devel mailing list