Skip to content

Commit

Permalink
rbd: fetch object order before using it
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Josh Durgin authored and Sage Weil committed Jun 25, 2013
1 parent 3a96d5c commit 1617e40
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 1617e40

Please sign in to comment.