summaryrefslogtreecommitdiffstats
path: root/drivers/block/rbd.c
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2013-06-12 17:43:10 -0400
committerSage Weil <sage@inktank.com>2013-06-25 15:27:31 -0400
commit1617e40c1eeeeb857ff4b66acee20ed2acc1b5e7 (patch)
tree9dc61d610aadb7fb43163ea22dca87df166fb79a /drivers/block/rbd.c
parent3a96d5cd7bdce45d5dded75c3a62d4fb98050280 (diff)
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>
Diffstat (limited to 'drivers/block/rbd.c')
-rw-r--r--drivers/block/rbd.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index cc7c60e8f277..7c66173e2d83 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -4245,6 +4245,10 @@ static int rbd_dev_v2_header_info(struct rbd_device *rbd_dev)
4245 4245
4246 down_write(&rbd_dev->header_rwsem); 4246 down_write(&rbd_dev->header_rwsem);
4247 4247
4248 ret = rbd_dev_v2_image_size(rbd_dev);
4249 if (ret)
4250 goto out;
4251
4248 if (first_time) { 4252 if (first_time) {
4249 ret = rbd_dev_v2_header_onetime(rbd_dev); 4253 ret = rbd_dev_v2_header_onetime(rbd_dev);
4250 if (ret) 4254 if (ret)
@@ -4278,10 +4282,6 @@ static int rbd_dev_v2_header_info(struct rbd_device *rbd_dev)
4278 "is EXPERIMENTAL!"); 4282 "is EXPERIMENTAL!");
4279 } 4283 }
4280 4284
4281 ret = rbd_dev_v2_image_size(rbd_dev);
4282 if (ret)
4283 goto out;
4284
4285 if (rbd_dev->spec->snap_id == CEPH_NOSNAP) 4285 if (rbd_dev->spec->snap_id == CEPH_NOSNAP)
4286 if (rbd_dev->mapping.size != rbd_dev->header.image_size) 4286 if (rbd_dev->mapping.size != rbd_dev->header.image_size)
4287 rbd_dev->mapping.size = rbd_dev->header.image_size; 4287 rbd_dev->mapping.size = rbd_dev->header.image_size;