mirror of https://gitee.com/openkylin/linux.git
rbd: fetch object order before using it
rbd_dev_v2_header_onetime() fetches striping information, and checks whether the image can be read by compariing the stripe unit to the object size. It determines the object size by shifting the object order, which is 0 at this point since it has not been read yet. Move the call to get the image size and object order before rbd_dev_v2_header_onetime() so it is set before use. Signed-off-by: Josh Durgin <josh.durgin@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
This commit is contained in:
parent
3a96d5cd7b
commit
1617e40c1e
|
@ -4245,6 +4245,10 @@ static int rbd_dev_v2_header_info(struct rbd_device *rbd_dev)
|
|||
|
||||
down_write(&rbd_dev->header_rwsem);
|
||||
|
||||
ret = rbd_dev_v2_image_size(rbd_dev);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (first_time) {
|
||||
ret = rbd_dev_v2_header_onetime(rbd_dev);
|
||||
if (ret)
|
||||
|
@ -4278,10 +4282,6 @@ static int rbd_dev_v2_header_info(struct rbd_device *rbd_dev)
|
|||
"is EXPERIMENTAL!");
|
||||
}
|
||||
|
||||
ret = rbd_dev_v2_image_size(rbd_dev);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (rbd_dev->spec->snap_id == CEPH_NOSNAP)
|
||||
if (rbd_dev->mapping.size != rbd_dev->header.image_size)
|
||||
rbd_dev->mapping.size = rbd_dev->header.image_size;
|
||||
|
|
Loading…
Reference in New Issue