[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH RFC v3 for-2.9 07/11] rbd: Clean up qemu_rbd_cre
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH RFC v3 for-2.9 07/11] rbd: Clean up qemu_rbd_create()'s detour through QemuOpts |
Date: |
Mon, 27 Mar 2017 20:27:04 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Max Reitz <address@hidden> writes:
> On 27.03.2017 15:26, Markus Armbruster wrote:
>> The conversion from QDict to QemuOpts is pointless. Simply get the
>> stuff straight from the QDict.
>>
>> Signed-off-by: Markus Armbruster <address@hidden>
>> Reviewed-by: Eric Blake <address@hidden>
>> Reviewed-by: Kevin Wolf <address@hidden>
>> ---
>> block/rbd.c | 20 +++++---------------
>> 1 file changed, 5 insertions(+), 15 deletions(-)
>>
>> diff --git a/block/rbd.c b/block/rbd.c
>> index b2afe07..cf0bab0 100644
>> --- a/block/rbd.c
>> +++ b/block/rbd.c
>> @@ -376,7 +376,6 @@ static int qemu_rbd_create(const char *filename,
>> QemuOpts *opts, Error **errp)
>> rados_t cluster;
>> rados_ioctx_t io_ctx;
>> QDict *options = NULL;
>> - QemuOpts *rbd_opts = NULL;
>> int ret = 0;
>>
>> secretid = qemu_opt_get(opts, "password-secret");
>> @@ -407,19 +406,11 @@ static int qemu_rbd_create(const char *filename,
>> QemuOpts *opts, Error **errp)
>> goto exit;
>> }
>>
>> - rbd_opts = qemu_opts_create(&runtime_opts, NULL, 0, &error_abort);
>> - qemu_opts_absorb_qdict(rbd_opts, options, &local_err);
>> - if (local_err) {
>> - error_propagate(errp, local_err);
>> - ret = -EINVAL;
>> - goto exit;
>> - }
>> -
>> - pool = qemu_opt_get(rbd_opts, "pool");
>> - conf = qemu_opt_get(rbd_opts, "conf");
>> - clientname = qemu_opt_get(rbd_opts, "user");
>> - name = qemu_opt_get(rbd_opts, "image");
>> - keypairs = qemu_opt_get(rbd_opts, "=keyvalue-pairs");
>> + pool = qdict_get_str(options, "pool");
>> + conf = qdict_get_str(options, "conf");
>> + clientname = qdict_get_str(options, "user");
>> + name = qdict_get_str(options, "image");
>> + keypairs = qdict_get_str(options, "=keyvalue-pairs");
>
> This assumes that all of these options are given which they are not
> necessarily:
>
> $ ./qemu-img create -f rbd rbd:blub/ 1M
> Formatting 'rbd:blub/', fmt=rbd size=1048576
> [1] 27387 segmentation fault (core dumped) ./qemu-img create -f rbd
> rbd:blub/ 1M
>
> qdict_get_try_str() would probably be better.
Yes, will fix. I've fallen into this trap before...
- Re: [Qemu-devel] [PATCH RFC v3 for-2.9 03/11] rbd: Don't limit length of parameter values, (continued)
- [Qemu-devel] [PATCH RFC v3 for-2.9 10/11] Revert "rbd: add support for getting password from QCryptoSecret object", Markus Armbruster, 2017/03/27
- [Qemu-devel] [PATCH RFC v3 for-2.9 04/11] rbd: Clean up after the previous commit, Markus Armbruster, 2017/03/27
- [Qemu-devel] [PATCH RFC v3 for-2.9 07/11] rbd: Clean up qemu_rbd_create()'s detour through QemuOpts, Markus Armbruster, 2017/03/27
- [Qemu-devel] [PATCH RFC v3 for-2.9 11/11] rbd: Fix bugs around -drive parameter "server", Markus Armbruster, 2017/03/27
- [Qemu-devel] [PATCH RFC v3 for-2.9 09/11] rbd: Revert -blockdev parameter password-secret, Markus Armbruster, 2017/03/27
- [Qemu-devel] [PATCH RFC v3 for-2.9 01/11] rbd: Reject -blockdev server.*.{numeric, to, ipv4, ipv6}, Markus Armbruster, 2017/03/27