[pve-devel] [PATCH 5/5] make create_rootfs sub generic

Alexandre DERUMIER aderumier at odiso.com
Thu Aug 27 07:05:06 CEST 2015


>>I wonder if that unmount everything (mountpoints below /)?

Currently not, because anyway, I'm still only manage rootfs.
(I'm waiting to have this patch serie commited before continue)
 

But I'm looking to mount/unmount all mountpoints before/after  "restore_and_configure";


----- Mail original -----
De: "dietmar" <dietmar at proxmox.com>
À: "aderumier" <aderumier at odiso.com>, "pve-devel" <pve-devel at pve.proxmox.com>
Envoyé: Mercredi 26 Août 2015 16:28:55
Objet: Re: [pve-devel] [PATCH 5/5] make create_rootfs sub generic

On 08/21/2015 05:10 PM, Alexandre Derumier wrote: 
> Signed-off-by: Alexandre Derumier <aderumier at odiso.com> 
> --- 
> src/PVE/LXC/Create.pm | 131 +++++++++++--------------------------------------- 
> 1 file changed, 29 insertions(+), 102 deletions(-) 
> 
> 
> @@ -279,30 +199,37 @@ sub create_rootfs { 
> PVE::LXC::create_config($vmid, $conf); 
> } 
> 
> - my ($vtype, undef, undef, undef, undef, $isBase, $format) = 
> - PVE::Storage::parse_volname($storage_cfg, $volid); 
> - 
> - die "got strange vtype '$vtype'\n" if $vtype ne 'images'; 
> - 
> - die "unable to install into base volume" if $isBase; 
> - 
> - if ($format eq 'subvol') { 
> - create_rootfs_subvol($storage_cfg, $storage, $volid, $vmid, $conf, $archive, $password, $restore); 
> - } elsif ($format eq 'raw') { 
> - my $scfg = PVE::Storage::storage_config($storage_cfg, $storage); 
> - PVE::Storage::activate_storage($storage_cfg, $storage); 
> - PVE::Storage::activate_volumes($storage_cfg, [$volid]); 
> - if ($scfg->{path}) { 
> - create_rootfs_dir_loop($storage_cfg, $storage, $volid, $vmid, $conf, $archive, $password, $restore); 
> - } elsif ($scfg->{type} eq 'drbd' || $scfg->{type} eq 'rbd') { 
> - create_rootfs_dev($storage_cfg, $storage, $volid, $vmid, $conf, $archive, $password, $restore); 
> - } else { 
> - die "unable to create containers on storage type '$scfg->{type}'\n"; 
> + my $image_path = PVE::Storage::path($storage_cfg, $volid); 
> + my $mountpoint_path = "/var/lib/lxc/$vmid/rootfs"; 
> + my $mountpoint = { volume => $volid, mp => "/" }; 
> + my $ms = "rootfs"; 
> + 
> + eval { 
> + PVE::Storage::activate_volumes($storage_cfg, [$volid]); 
> + my $loopdevs = PVE::LXC::attach_loops($storage_cfg, [$volid]); 
> + 
> + if (!-d $image_path) { 
> + my $cmd = ['mkfs.ext4', $image_path]; 
> + PVE::Tools::run_command($cmd); 
> } 
> - PVE::Storage::deactivate_volumes($storage_cfg, [$volid]); 
> - } else { 
> - die "unsupported image format '$format'\n"; 
> + 
> + PVE::LXC::mountpoint_mount($ms, $mountpoint, $mountpoint_path, $storage_cfg, $loopdevs); 
> + 
> + restore_and_configure($vmid, $archive, $mountpoint_path, $conf, $password, $restore); 
> + }; 
> + if (my $err = $@) { 
> + eval { 
> + PVE::LXC::dettach_loops($storage_cfg, [$volid]); 
> + PVE::Storage::deactivate_volumes($storage_cfg, [$volid]); 
> + }; 
> + warn $@ if $@; 
> + die $err; 
> } 
> + 
> + PVE::Tools::run_command(['umount', '-l', '-d', $mountpoint_path]); 
> 
I wonder if that unmount everything (mountpoints below /)? 



More information about the pve-devel mailing list