[pve-devel] [PATCH v2 qemu-server] Fix block_resize qmp call for block devices

Alexandre DERUMIER aderumier at odiso.com
Thu Jan 12 15:15:50 CET 2017


>>There's problem: even if storage has resized blockdev, this change is 
>>not propagated to running qemu until we send block_resize to it.
>>So we need to resize BOTH in storage AND in qemu.

Oh,I was not aware of this. In the past, I was using iscsi luns, and I thinked that resizing the lun
exposed the new size to guest.
(maybe because of iscsi passthrough with virtio-scsi ?)


----- Mail original -----
De: "Dmitry Petuhov" <mityapetuhov at gmail.com>
À: "Fabian Grünbichler" <f.gruenbichler at proxmox.com>, "pve-devel" <pve-devel at pve.proxmox.com>
Envoyé: Jeudi 12 Janvier 2017 15:09:48
Objet: Re: [pve-devel] [PATCH v2 qemu-server] Fix block_resize qmp call for block devices

12.01.2017 16:18, Fabian Grünbichler пишет: 
> On Thu, Jan 12, 2017 at 03:33:48PM +0300, Dmitry Petuhov wrote: 
>> Set zero size for backing block devices in qmp call. In that case qemu 
>> sets size of device in guest to current size of backing device, which 
>> was resized earlier. Otherwise, any non-zero value causes error here. 
> this is not clearly documented, but if PVE::Storage::volume_resize 
> returns 1, we assume the storage layer did not resize and qemu should do 
> the resizing 
> 
> if it returns undef, we assume the storage resized the volume and we are 
> done. 
There's problem: even if storage has resized blockdev, this change is 
not propagated to running qemu until we send block_resize to it. 
So we need to resize BOTH in storage AND in qemu. 

> so in the latter case, instead of returning in line 3983 we could set 
> $size to 0 (based on the return code of course ;)) and continue with the 
> running check and block_resize via monitor. this should only improve the 
> situation for all storages, without any wonky checks based on block 
> device or not. 
ZFS plugins are showing interesting behaviour here: return $new_size; 
Maybe we could do that in all plugins, that support resizing and just 
$size = PVE::Storage::volume_resize($storecfg, $volid, $size, $running); 
and then continue with any defined value (includig 0)? 


_______________________________________________ 
pve-devel mailing list 
pve-devel at pve.proxmox.com 
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 



More information about the pve-devel mailing list