mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 07:17:44 +00:00
qemu: Move shareable disk check for block copy
The writing to an image actually starts when the copy job is initiated, so checking this at the time of the pivot operation is too late. Move the check to qemuDomainBlockCopyCommon. Note that modern qemu would have prevented two writers with qcow2 so the slim possibility of a job started with libvirtd without this patch missing the check is not really worth worrying about. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
ef8a87a09d
commit
023d69dfc8
@ -17142,16 +17142,6 @@ qemuDomainBlockPivot(virQEMUDriverPtr driver,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* When pivoting to a shareable disk we need to make sure that the disk can
|
||||
* be safely shared, since block copy might have changed the format. */
|
||||
if (disk->src->shared && !disk->src->readonly &&
|
||||
!qemuBlockStorageSourceSupportsConcurrentAccess(disk->mirror)) {
|
||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
||||
_("can't pivot a shared disk to a storage volume not "
|
||||
"supporting sharing"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* Attempt the pivot. Record the attempt now, to prevent duplicate
|
||||
* attempts; but the actual disk change will be made when emitting
|
||||
* the event.
|
||||
@ -17782,6 +17772,16 @@ qemuDomainBlockCopyCommon(virDomainObjPtr vm,
|
||||
}
|
||||
}
|
||||
|
||||
/* When copying a shareable disk we need to make sure that the disk can
|
||||
* be safely shared, since block copy may change the format. */
|
||||
if (disk->src->shared && !disk->src->readonly &&
|
||||
!qemuBlockStorageSourceSupportsConcurrentAccess(mirror)) {
|
||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
|
||||
_("can't pivot a shared disk to a storage volume not "
|
||||
"supporting sharing"));
|
||||
goto endjob;
|
||||
}
|
||||
|
||||
/* pre-create the image file */
|
||||
if (!reuse) {
|
||||
if (virStorageFileCreate(mirror) < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user