[pve-devel] [Patch V2 container 1/2] template create: handle mountpoints besides rootfs

Wolfgang Link w.link at proxmox.com
Wed May 30 12:12:51 CEST 2018


we only handled the special rootfs mount so creating a template
from a container with additional mountpoint did not work correctly.
Use foreach_mountpoint to create a base vdisk for all mount points
after checking if the storage supports it
---

Patch V2:
	reword commit message as t.lamprecht suggest.
	remove redundant volume parsing.

 src/PVE/LXC.pm | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index 4f9674d..bfca9c1 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -869,17 +869,26 @@ sub template_create {
 
     my $storecfg = PVE::Storage::config();
 
-    my $rootinfo = PVE::LXC::Config->parse_ct_rootfs($conf->{rootfs});
-    my $volid = $rootinfo->{volume};
+    PVE::LXC::Config->foreach_mountpoint($conf, sub {
+	my ($ms, $mountpoint) = @_;
 
-    die "Template feature is not available for '$volid'\n"
-	if !PVE::Storage::volume_has_feature($storecfg, 'template', $volid);
+	my $volid = $mountpoint->{volume};
 
-    PVE::Storage::activate_volumes($storecfg, [$volid]);
+	die "Template feature is not available for '$volid'\n"
+	    if !PVE::Storage::volume_has_feature($storecfg, 'template', $volid);
+    });
 
-    my $template_volid = PVE::Storage::vdisk_create_base($storecfg, $volid);
-    $rootinfo->{volume} = $template_volid;
-    $conf->{rootfs} = PVE::LXC::Config->print_ct_mountpoint($rootinfo, 1);
+    PVE::LXC::Config->foreach_mountpoint($conf, sub {
+	my ($ms, $mountpoint) = @_;
+
+	my $volid = $mountpoint->{volume};
+
+	PVE::Storage::activate_volumes($storecfg, [$volid]);
+
+	my $template_volid = PVE::Storage::vdisk_create_base($storecfg, $volid);
+	$mountpoint->{volume} = $template_volid;
+	$conf->{$ms} = PVE::LXC::Config->print_ct_mountpoint($mountpoint, $ms eq "rootfs");
+    });
 
     PVE::LXC::Config->write_config($vmid, $conf);
 }
-- 
2.11.0





More information about the pve-devel mailing list