[libvirt] [PATCH] storage: replace the deprecated option of qemu-img.

Osier Yang jyang at redhat.com
Wed Mar 9 12:39:53 UTC 2011


于 2011年03月09日 20:31, Daniel P. Berrange 写道:
> On Wed, Mar 09, 2011 at 08:27:41PM +0800, Osier Yang wrote:
>> qemu-img silently disable "-e", so we can't use it for volume
>> encryption anymore, change it into "-o encryption=on".
>>
>> I'm afraid of it will inroduce compatibility problem for older
>> qemu without "-o" option, but "-o" option is already used in the
>> codes, seems it's fine.
>
> The current code *only* uses '-o' after it has checked that
> qemu-img actually supports it.

Oh, yes

>
>> * src/storage/storage_backend.c
>> ---
>>   src/storage/storage_backend.c |   17 +++++++++++------
>>   1 files changed, 11 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
>> index 2eede74..c381444 100644
>> --- a/src/storage/storage_backend.c
>> +++ b/src/storage/storage_backend.c
>> @@ -778,7 +778,7 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
>>               imgargv[8] = vol->target.path;
>>               imgargv[9] = size;
>>               if (vol->target.encryption != NULL)
>> -                imgargv[10] = "-e";
>> +                imgargv[10] = "-o encryption=on";
>>               break;
>>
>>           case QEMU_IMG_BACKING_FORMAT_OPTIONS:
>> @@ -786,13 +786,18 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
>>                   virReportOOMError();
>>                   goto cleanup;
>>               }
>> +
>> +            if (vol->target.encryption != NULL) {
>> +                if (virAsprintf(&optflag, ",encryption=on")<  0) {
>> +                    virReportOOMError();
>> +                    goto cleanup;
>> +                }
>> +            }
>> +
>>               imgargv[6] = "-o";
>>               imgargv[7] = optflag;
>>               imgargv[8] = vol->target.path;
>>               imgargv[9] = size;
>> -            if (vol->target.encryption != NULL)
>> -                imgargv[10] = "-e";
>> -            break;
>>
>>           default:
>>               VIR_INFO("Unable to set backing store format for %s with %s",
>> @@ -800,7 +805,7 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
>>               imgargv[6] = vol->target.path;
>>               imgargv[7] = size;
>>               if (vol->target.encryption != NULL)
>> -                imgargv[8] = "-e";
>> +                imgargv[8] = "-o encryption=on";
>>           }
>>
>>           ret = virStorageBackendCreateExecCommand(pool, vol, imgargv);
>> @@ -817,7 +822,7 @@ virStorageBackendCreateQemuImg(virConnectPtr conn,
>>               NULL
>>           };
>>           if (vol->target.encryption != NULL)
>> -            imgargv[6] = "-e";
>> +            imgargv[6] = "-o encryption=on";
>>
>>           ret = virStorageBackendCreateExecCommand(pool, vol, imgargv);
>>       }
>
> NACK, we must keep backwards compatibility and only use '-o' after we
> have determined it is supported
>

Okay, will update. Thanks.


> It also looks like the first part of the method which calls 'qemu-img convert'
> is broken because it is ignoring encryption entirely
>

Will fix it in Incidentally.

Regards
Osier




More information about the libvir-list mailing list