]> git.proxmox.com Git - qemu-server.git/commitdiff
vm_clone : add running vm drive mirror
authorAlexandre Derumier <aderumier@odiso.com>
Thu, 2 May 2013 16:18:04 +0000 (18:18 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 3 May 2013 06:37:18 +0000 (08:37 +0200)
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
PVE/API2/Qemu.pm

index 5e237870387b281bac7e1c9f5b8051146aa9dd51..19190eb7322a6ca77c56fa787c99be4eb57c1cf0 100644 (file)
@@ -1906,8 +1906,6 @@ __PACKAGE__->register_method({
 
        my $running = PVE::QemuServer::check_running($vmid) || 0;
 
-       die "Clone running VM $vmid not implemented\n" if $running; # fixme: implement this
-
        # exclusive lock if VM is running - else shared lock is enough;
        my $shared_lock = $running ? 0 : 1;
 
@@ -2024,7 +2022,12 @@ __PACKAGE__->register_method({
                            $newvolid = PVE::Storage::vdisk_alloc($storecfg, $storeid, $newid, $fmt, undef, ($size/1024));
                            push @$newvollist, $newvolid;
 
-                           PVE::QemuServer::qemu_img_convert($drive->{file}, $newvolid, $size, $snapname);
+                           if(!$running || $snapname){
+                               PVE::QemuServer::qemu_img_convert($drive->{file}, $newvolid, $size, $snapname);
+                           }else{
+                               PVE::QemuServer::qemu_drive_mirror($vmid, $opt, $newvolid, $newid);
+                           }
+
                        }
 
                        my ($size) = PVE::Storage::volume_size_info($storecfg, $newvolid, 3);