On Tue, May 05, 2015 at 08:43:21AM +0530, Prerna Saxena wrote:
Libvirt periodically calls 'stat' on all volumes in a storage
pool,
to update fields such as 'target.allocation'.
The operation doesnt make sense for a volume which is curently being allocated.
From the comments in the storage driver, the point of allowing refresh
for a volume that is currently being allocated is to track the progress
of the allocation.
Also, the 'target.allocation' sub-field is taken into account
while copying a raw image.
To suppress any (potential) corruption, libvirt must not attempt to refresh a volume
currently being built.
What would be the corruption?
We do not allow using a volume that is currently building as a
source for cloning the volume - storageVolCreateXMLFrom checks for
origvol->building:
if (origvol->building) {
virReportError(VIR_ERR_OPERATION_INVALID,
_("volume '%s' is still being allocated."),
origvol->name);
goto cleanup;
}
Jan