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