From ad09aa15f50d58dd2d1f97edad40e75183550893 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 1 May 2015 14:53:02 +0200 Subject: [PATCH] use new subvolume API for zfspool --- src/PVE/LXCCreate.pm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/PVE/LXCCreate.pm b/src/PVE/LXCCreate.pm index a42833c..fdcc6d6 100644 --- a/src/PVE/LXCCreate.pm +++ b/src/PVE/LXCCreate.pm @@ -91,6 +91,23 @@ sub create_rootfs_dir { restore_and_configure($vmid, $archive, $private, $conf, $password); } +# use new subvolume API +sub create_rootfs_subvol { + my ($cleanup, $storage_conf, $storage, $size, $vmid, $conf, $archive, $password) = @_; + + my $volid = PVE::Storage::vdisk_alloc($storage_conf, $storage, $vmid, 'subvol', + "subvol-$vmid-rootfs", $size); + push @{$cleanup->{volids}}, $volid; + + my $private = PVE::Storage::path($storage_conf, $volid); + (-d $private) || die "unable to get container private dir '$private' - $!\n"; + + $conf->{'lxc.rootfs'} = $private; + $conf->{'pve.volid'} = $volid; + + restore_and_configure($vmid, $archive, $private, $conf, $password); +} + # create a raw file, then loop mount sub create_rootfs_dir_loop { my ($cleanup, $storage_conf, $storage, $size, $vmid, $conf, $archive, $password) = @_; @@ -237,7 +254,13 @@ sub create_rootfs { } else { create_rootfs_dir($cleanup, $storage_conf, $storage, $vmid, $conf, $archive, $password); } + } elsif ($scfg->{type} eq 'zfspool') { + + create_rootfs_subvol($cleanup, $storage_conf, $storage, $size, + $vmid, $conf, $archive, $password); + } else { + die "unable to create containers on storage type '$scfg->{type}'\n"; } }; -- 2.39.2