Re: how to understand deep flatten implementation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Looks like it is a bug:

Features are parsed and set here:
https://github.com/ceph/ceph/blob/master/src/rbd.cc#L3235

format_specified is forced to true here:
https://github.com/ceph/ceph/blob/master/src/rbd.cc#L3268

Error is produced here:
https://github.com/ceph/ceph/blob/master/src/rbd.cc#L3449

On Fri, Oct 23, 2015 at 1:53 PM, Max Yehorov <myehorov@xxxxxxxxxx> wrote:
> I am trying to pass deep-flatten during clone creation and got this:
>
> rbd clone --image-feature deep-flatten d0@s0 d1
>
> rbd: image format can only be set when creating or importing an image
>
> On Fri, Oct 23, 2015 at 6:27 AM, Jason Dillaman <dillaman@xxxxxxxxxx> wrote:
>>> After reading and understanding your mail, i moved on to do some experiments
>>> regarding deep flatten. some questions showed up:
>>> here is my experiement:
>>> ceph version I used: ceph -v output:
>>> ceph version 9.1.0-299-g89b2b9b
>>
>>> 1. create a separate pool for test:
>>> rados mkpool pool100
>>> 2. create parent image with deep-flatten feature:
>>> rbd create --image-feature deep-flatten --image-feature layering -p pool100
>>> user1_image1 --size 1024 --image-format 2
>>> 3. create snap:
>>> rbd snap create pool100/user1_image1@user1_image1_snap
>>> 4. protect snap:
>>> rbd snap protect pool100/user1_image1@user1_image1_snap
>>> 5. clone child image based on this snap:
>>> rbd clone pool100/user1_image1@user1_image1_snap pool100/user1_image2
>>> 6. create snap on clone image:
>>> rbd snap create pool100/user1_image2@user1_image2_snap
>>> 7. flatten the clone image:
>>> rbd flatten pool100/user1_image2
>>
>>> test output:
>>> rbd info pool100/user1_image2
>>> rbd image 'user1_image2':
>>> size 1024 MB in 256 objects
>>> order 22 (4096 kB objects)
>>> block_name_prefix: rbd_data.1016317b2d6
>>> format: 2
>>> features: layering <==== why after flatten, cloned image is without
>>> deep-flatten feature?
>>> flags:
>>
>>
>> 'rbd clone' doesn't copy features from the parent image -- you needed to specify "--image-feature deep-flatten" when creating the clone.
>>
>>
>>> rbd info pool100/user1_image2@user1_image2_snap
>>
>>> rbd image 'user1_image2':
>>> size 1024 MB in 256 objects
>>> order 22 (4096 kB objects)
>>> block_name_prefix: rbd_data.1016317b2d6
>>> format: 2
>>> features: layering
>>> flags:
>>> protected: True
>>> parent: pool100/user1_image1@user1_image1_snap <==== why after flatten, child
>>> snapshot still has parent snap info?
>>> overlap: 1024 MB
>>
>>
>> Because deep-flatten wasn't enabled on the clone.
>>
>>
>>> Another question is since deep-flatten operations are applied to cloned
>>> image, why we need to create parent image with deep-flatten image features??
>>
>>
>> The deep-flatten feature is not required on the parent image (since non-cloned images cannot be flattened).
>>
>>
>>> Cory
>>
>>
>> --
>>
>> Jason Dillaman
>> _______________________________________________
>> ceph-users mailing list
>> ceph-users@xxxxxxxxxxxxxx
>> http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
_______________________________________________
ceph-users mailing list
ceph-users@xxxxxxxxxxxxxx
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com



[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux