Re: some rbd operations question

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

 



On Thu, Apr 12, 2018 at 4:23 AM, handong He <hedongho@xxxxxxxxx> wrote:
> Hi, cephers:
>
>    I did some test about rbd cli operation and have some doubt.
>
>    1. rbd can be removed during copy operation.  And both  'cp' and
> 'rm' command return success.  However the dest-image data is diff from
> the src-image.
>        why not set a watcher for the rbd_header obj for the opening
> image. So it will occur error and return image ebusy when run 'rm'.
>
>         easy to reproduce:
>               1. rbd cp rbd/img0 rbd/img1
>               2. while cp is runing, exec: rbd rm rbd/img0
>               3. after finish, just compare two img's du(USED): rbd du rbd/img1

The rationale is that reading from an image should only require
read-access to the pool. Establishing a watch on an image requires
write access. You could also hit a similar problem if you deleted an
image while exporting it, or deleting a snapshot while reading from
it, or overwrite an image while copying it, etc, etc, etc. I'd be
interesting in your use-case where you are realistically hitting these
scenarios.

>    2. in krbd, image-feature should be only set 'layering' for the
> 'map' operation.But for clone image: the child img set layering, but
> parent img has more feature that krbd not support. it will fail while
> child img exec ' rbd map'.
>        i think it is logical, but maybe a little complex while the
> chain is long. we have to lookup every ancestors and make sure their
> feature is match krbd's support features. will that be any optimize?
>
>         easy to reproduce:
>               1. rbd clone rbd/img0@sn1 rbd/img1 --image-feature=layering
>               2. parent img0 has default feature, which make 'rbd map
> rbd/img1' failed.

This could probably be improved by having krbd pass the optional
read-only flag down to the 'get_features' rbd class method [1][2]. For
the parent image case, it would be opened read-only which means that
its feature flags would be ANDed with a mask to reduce the
incompatible feature set [3].

>
> Thanks and best regards!
> Handong
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

[1] https://github.com/torvalds/linux/blob/master/drivers/block/rbd.c#L4471
[2] https://github.com/ceph/ceph/blob/master/src/cls/rbd/cls_rbd.cc#L403
[3] https://github.com/ceph/ceph/blob/master/src/include/rbd/features.h#L32

-- 
Jason
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



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

  Powered by Linux