[pve-devel] [PATCH pve-container] fix bug LXC Backup snapshot mode on zfspool

Wolfgang Link w.link at proxmox.com
Wed Nov 18 15:42:04 CET 2015


now it is possible to make a snapshot and mount it to backup it.
---
 src/PVE/LXC.pm | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index c61df23..9b13af4 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -1843,6 +1843,18 @@ sub snapshot_delete {
     my $rootinfo = parse_ct_mountpoint($rootfs);
     my $volid = $rootinfo->{volume};
 
+    if ($snapname eq 'vzdump') {
+	my ($storage) = PVE::Storage::parse_volume_id($volid, 1);
+
+	if ($storecfg->{ids}->{$storage}->{type} eq 'zfspool') {
+
+	    my $clone = PVE::Storage::path($storecfg, $volid);
+	    $clone =~ s/subvol/$snapname/;
+	    $clone =~ s!^/!!;
+	    PVE::Tools::run_command(['zfs', 'destroy', $clone]);
+	}
+    }
+
     eval {
 	PVE::Storage::volume_snapshot_delete($storecfg, $volid, $snapname);
     };
@@ -2144,7 +2156,10 @@ sub mountpoint_mount {
 		    if ($scfg->{type} eq 'zfspool') {
 			my $path_arg = $path;
 			$path_arg =~ s!^/+!!;
-			PVE::Tools::run_command(['mount', '-o', 'ro', '-t', 'zfs', $path_arg, $mount_path]);
+			my $clone = $path_arg;
+			$clone =~ s/\@${snapname}//;
+			$clone =~ s/subvol/$snapname/;
+			PVE::Tools::run_command(['zfs', 'clone', '-o', 'readonly=on', '-o', "mountpoint=$mount_path", $path_arg, $clone]);
 		    } else {
 			die "cannot mount subvol snapshots for storage type '$scfg->{type}'\n";
 		    }
-- 
2.1.4




More information about the pve-devel mailing list