[libvirt] [PATCH] rbd: Use RBD format 2 by default when creating images.
Wido den Hollander
wido at widodh.nl
Thu Jul 16 16:41:22 UTC 2015
On 16-07-15 18:28, John Ferlan wrote:
>
>
> On 07/14/2015 04:13 PM, Josh Durgin wrote:
>> On 07/14/2015 12:42 PM, John Ferlan wrote:
>>>
>>>
>>> On 07/14/2015 04:15 AM, Wido den Hollander wrote:
>>>> We used to look at the librbd code version and depending on
>>>> that we would invoke rbd_create3() or rbd_create().
>>>>
>>>> Since librbd version 0.67.9 we can however tell RBD that it
>>>> should create rbd format 2 images even if we invoke
>>>> rbd_create().
>>>>
>>>> The>> less options we pass to librbd, the more we can lean on
>>>> the sane defaults it uses.
>>>>
>>>> For rbd_create3() we had things like the stripe count and
>>>> unit hardcoded in libvirt and that might cause problems down
>>>> the road.
>>
>> Hardcoding the feature bits is even worse. I think this is the
>> right approach.
>>
>
> OK - just trying to be sure... and since no one else spoke up
> yet, seems the approach is fine.
>
Yes, I think Josh gave the right comments.
> ...
>
>>>> virStorageBackendRBDCreateImage(rados_ioctx_t io, char *name,
>>>> long capacity) { int order = 0; -#if LIBRBD_VERSION_CODE >
>>>> 260 - uint64_t features = 3; - uint64_t stripe_count =
>>>> 1; - uint64_t stripe_unit = 4194304; - - if
>>>> (rbd_create3(io, name, capacity, features, &order, -
>>>> stripe_unit, stripe_count) < 0) { -#else if (rbd_create(io,
>>>> name, capacity, &order) < 0) { -#endif
>
> This change fails make syntax-check due to unnecessary curly
> braces.
>
> Before I push, the question I see a second issue...
>
> The current code returns -1 regardless of error, which is then used
> in a call to virReportSystemError(-r,...)... That means regardless
> of the error you're returning EPERM which could throw someone off
> if something other than PERM was returned from rbd_create
>
> I can fix that as well by :
>
> return rbd_create(io, name, capacity, &order);
>
Seems like a sane approach to me. Less if-statements and the code
still works just fine.
You can apply my patch and fix this afterwards? Or do you want a new
patch from me?
Wido
>
> FWIW: This reporting snafu was introduced by commit id '761491e'
> which just took the return of virStorageBackendRBDCreateImage and
> used it as the basis for the message generated.
>
>
> John
>
More information about the libvir-list
mailing list