[libvirt] [PATCH 2/3] qemu: migration: error if tunnelled + storage specified
Michal Privoznik
mprivozn at redhat.com
Thu May 30 07:42:46 UTC 2013
On 29.05.2013 21:37, Cole Robinson wrote:
> On 05/29/2013 03:16 PM, Michal Privoznik wrote:
>> On 28.05.2013 22:44, Cole Robinson wrote:
>>> Since as the code indicates it doesn't work yet, so let's be
>>> explicit about it.
>>> ---
>>> src/qemu/qemu_migration.c | 24 ++++++++++--------------
>>> 1 file changed, 10 insertions(+), 14 deletions(-)
>>>
>>> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
>>> index 9ac9be4..ffc86a4 100644
>>> --- a/src/qemu/qemu_migration.c
>>> +++ b/src/qemu/qemu_migration.c
>>> @@ -1900,12 +1900,13 @@ char *qemuMigrationBegin(virQEMUDriverPtr driver,
>>> if (flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) &&
>>> virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) {
>>> /* TODO support NBD for TUNNELLED migration */
>>> - if (flags & VIR_MIGRATE_TUNNELLED)
>>> - VIR_DEBUG("NBD in tunnelled migration is currently not supported");
>>> - else {
>>> - cookieFlags |= QEMU_MIGRATION_COOKIE_NBD;
>>> - priv->nbdPort = 0;
>>> + if (flags & VIR_MIGRATE_TUNNELLED) {
>>> + virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s",
>>> + _("NBD in tunnelled migration is currently not supported"));
>>> + goto cleanup;
>>> }
>>> + cookieFlags |= QEMU_MIGRATION_COOKIE_NBD;
>>> + priv->nbdPort = 0;
>>> }
>>>
>>> if (!(mig = qemuMigrationEatCookie(driver, vm, NULL, 0, 0)))
>>> @@ -2200,16 +2201,11 @@ done:
>>> if (mig->nbd &&
>>> flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) &&
>>> virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) {
>>> - /* TODO support NBD for TUNNELLED migration */
>>> - if (flags & VIR_MIGRATE_TUNNELLED)
>>> - VIR_DEBUG("NBD in tunnelled migration is currently not supported");
>>> - else {
>>> - if (qemuMigrationStartNBDServer(driver, vm, listenAddr) < 0) {
>>> - /* error already reported */
>>> - goto endjob;
>>> - }
>>> - cookieFlags |= QEMU_MIGRATION_COOKIE_NBD;
>>> + if (qemuMigrationStartNBDServer(driver, vm, listenAddr) < 0) {
>>> + /* error already reported */
>>> + goto endjob;
>>> }
>>> + cookieFlags |= QEMU_MIGRATION_COOKIE_NBD;
>>> }
>>>
>>> if (qemuMigrationBakeCookie(mig, driver, vm, cookieout,
>>>
>>
>> I know you've already pushed this but I don't think this is desired.
>> There are currently two ways to copy the storage during migration:
>>
>> 1) new one using nbd server
>> 2) old one, using an 'copy_storage' attribute to 'migrate' command
>>
>> The first one is preferred and turned on whenever libvirt detects both
>> sides support it. There's no way for a user to enforce one or another
>> way of copying the storage. So if the old way works even for tunnelled
>> migration, we should fall back to using the old way rather then erroring
>> out. The debug message was really just a debug message :)
>>
>
> Indeed I didn't consider that, sorry.
>
> However given that the old storage migration support is 1) considered not very
> useful and 2) more or less deprecated in upstream qemu, I still think my patch
> is an improvement. The fact that a common combination of cli options falls
> back to a kinda-working-but-not-really-supported version with virtually no
> indication to the user is pretty confusing. More motivation to actually
> implement it for tunnelled migration :)
>
> But I won't put up a fight, so if you'd prefer a revert I'll ACK that.
>
> - Cole
>
Mmm. Okay, I think we both have point there. So I can live with the code
as is. After all, it will enforce me to finish the NBD storage migration
for tunelled migration :)
Michal
More information about the libvir-list
mailing list