We need also to check if the vm is running and hotplug is enabled

(because without hotplug, we are allow to replace a disk with another, 
 the code manage currently the swap, putting the first disk as unused)

something like:
    elsif (PVE::QemuServer::check_running($vmid) && $conf->{hotplug}) { # 
hotplug new disks
        if($old_volid){
            die "you need to remove current disk before hotplug it" if 
$old_volid ne $volid;
        }else{
            die "error hotplug $opt" if 
!PVE::QemuServer::vm_deviceplug($storecfg, $conf, $vmid, $opt, $drive);
        }
    }



also, I found another bug, we update the conf with new_volid  before trying 
hotplug.
If hotplug fail, we had the wrong disk updated in config

I'll check the whole vmconfig_update_disk sub, to see to improve that



----- Mail original ----- 

De: "Dietmar Maurer" <diet...@proxmox.com> 
À: "Alexandre DERUMIER" <aderum...@odiso.com> 
Cc: pve-devel@pve.proxmox.com 
Envoyé: Vendredi 29 Août 2014 11:26:00 
Objet: RE: [pve-devel] [PATCH] don't try to hotplug disk if a disk already 
exist. 

> >>what about this: 
> >> 
> >> } else { # hotplug new disks 
> >>+ die "some useful error mesage" if $old_volid; 
> >> die "error hotplug $opt" if !PVE::QemuServer::vm_deviceplug($storecfg, 
> $conf, $vmid, $opt, $drive); 
> >> } 
> >>} 
> 
> The problem is that we are in $vmconfig_update_disk(), 

die "some useful error mesage" if $old_volid && $old_volid ne $new_volid; 

> 
> so it'll die if we try to update any parameters (disk 
> throttle,discard,backup). 
> 
> 
> ----- Mail original ----- 
> 
> De: "Dietmar Maurer" <diet...@proxmox.com> 
> À: "Alexandre DERUMIER" <aderum...@odiso.com> 
> Cc: pve-devel@pve.proxmox.com 
> Envoyé: Vendredi 29 Août 2014 10:11:18 
> Objet: RE: [pve-devel] [PATCH] don't try to hotplug disk if a disk already 
> exist. 
> 
> what about this: 
> 
> } else { # hotplug new disks 
> + die "some useful error mesage" if $old_volid; 
> die "error hotplug $opt" if !PVE::QemuServer::vm_deviceplug($storecfg, $conf, 
> $vmid, $opt, $drive); } } 
> 
> > -----Original Message----- 
> > From: Alexandre DERUMIER [mailto:aderum...@odiso.com] 
> > Sent: Freitag, 29. August 2014 09:25 
> > To: Dietmar Maurer 
> > Cc: pve-devel@pve.proxmox.com 
> > Subject: Re: [pve-devel] [PATCH] don't try to hotplug disk if a disk 
> > already 
> exist. 
> > 
> > >>This does not display any errors if $old_volid is set? 
> > >>I think we should raise an error to indicate that something went wrong? 
> > 
> > 
> > 
> > 
> > Maybe 
> > 
> > elsif (!$old_volid) { # hotplug new disks die "error hotplug $opt" if 
> > !PVE::QemuServer::vm_deviceplug($storecfg, 
> > $conf, $vmid, $opt, $drive); 
> > 
> > }elseif ($old_voldid && $old_voldid ne $new_volid { raise an error ? 
> > } 
> > 
> > 
> > ? 
> > 
> > ----- Mail original ----- 
> > 
> > De: "Dietmar Maurer" <diet...@proxmox.com> 
> > À: "Alexandre Derumier" <aderum...@odiso.com>, pve- 
> > de...@pve.proxmox.com 
> > Envoyé: Vendredi 29 Août 2014 08:29:00 
> > Objet: RE: [pve-devel] [PATCH] don't try to hotplug disk if a disk already 
> > exist. 
> > 
> > > - } else { # hotplug new disks 
> > > - 
> > > + } elsif (!$old_volid) { # hotplug new disks 
> > > die "error hotplug $opt" if 
> > > !PVE::QemuServer::vm_deviceplug($storecfg, 
> > > $conf, $vmid, $opt, $drive); 
> > > } 
> > 
> > This does not display any errors if $old_volid is set? 
> > I think we should raise an error to indicate that something went wrong? 
_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to