diff options
author | Alex Elder <elder@inktank.com> | 2012-11-09 09:43:15 -0500 |
---|---|---|
committer | Alex Elder <elder@inktank.com> | 2013-01-17 16:52:01 -0500 |
commit | 0ec8ce87f3bb5e4a561190f5320934e003405b6f (patch) | |
tree | 75962a9eee906e1b02704ed4f5268f62b97118b5 /drivers/block | |
parent | a7b4c65f4f15aa657b09d13da8f45ba0b72ec0df (diff) |
rbd: separate layout init
Pull a block of code that initializes the layout structure in an osd
request into its own function so it can be reused.
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Dan Mick <dan.mick@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/rbd.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c index 0fbe9add0446..d4e93a28fb6a 100644 --- a/drivers/block/rbd.c +++ b/drivers/block/rbd.c | |||
@@ -54,6 +54,7 @@ | |||
54 | 54 | ||
55 | /* It might be useful to have this defined elsewhere too */ | 55 | /* It might be useful to have this defined elsewhere too */ |
56 | 56 | ||
57 | #define U32_MAX ((u32) (~0U)) | ||
57 | #define U64_MAX ((u64) (~0ULL)) | 58 | #define U64_MAX ((u64) (~0ULL)) |
58 | 59 | ||
59 | #define RBD_DRV_NAME "rbd" | 60 | #define RBD_DRV_NAME "rbd" |
@@ -1096,6 +1097,16 @@ static void rbd_coll_end_req(struct rbd_request *rbd_req, | |||
1096 | ret, len); | 1097 | ret, len); |
1097 | } | 1098 | } |
1098 | 1099 | ||
1100 | static void rbd_layout_init(struct ceph_file_layout *layout, u64 pool_id) | ||
1101 | { | ||
1102 | memset(layout, 0, sizeof (*layout)); | ||
1103 | layout->fl_stripe_unit = cpu_to_le32(1 << RBD_MAX_OBJ_ORDER); | ||
1104 | layout->fl_stripe_count = cpu_to_le32(1); | ||
1105 | layout->fl_object_size = cpu_to_le32(1 << RBD_MAX_OBJ_ORDER); | ||
1106 | rbd_assert(pool_id <= (u64) U32_MAX); | ||
1107 | layout->fl_pg_pool = cpu_to_le32((u32) pool_id); | ||
1108 | } | ||
1109 | |||
1099 | /* | 1110 | /* |
1100 | * Send ceph osd request | 1111 | * Send ceph osd request |
1101 | */ | 1112 | */ |
@@ -1117,7 +1128,6 @@ static int rbd_do_request(struct request *rq, | |||
1117 | u64 *ver) | 1128 | u64 *ver) |
1118 | { | 1129 | { |
1119 | struct ceph_osd_request *osd_req; | 1130 | struct ceph_osd_request *osd_req; |
1120 | struct ceph_file_layout *layout; | ||
1121 | int ret; | 1131 | int ret; |
1122 | u64 bno; | 1132 | u64 bno; |
1123 | struct timespec mtime = CURRENT_TIME; | 1133 | struct timespec mtime = CURRENT_TIME; |
@@ -1161,14 +1171,9 @@ static int rbd_do_request(struct request *rq, | |||
1161 | strncpy(osd_req->r_oid, object_name, sizeof(osd_req->r_oid)); | 1171 | strncpy(osd_req->r_oid, object_name, sizeof(osd_req->r_oid)); |
1162 | osd_req->r_oid_len = strlen(osd_req->r_oid); | 1172 | osd_req->r_oid_len = strlen(osd_req->r_oid); |
1163 | 1173 | ||
1164 | layout = &osd_req->r_file_layout; | 1174 | rbd_layout_init(&osd_req->r_file_layout, rbd_dev->spec->pool_id); |
1165 | memset(layout, 0, sizeof(*layout)); | 1175 | ret = ceph_calc_raw_layout(osdc, &osd_req->r_file_layout, |
1166 | layout->fl_stripe_unit = cpu_to_le32(1 << RBD_MAX_OBJ_ORDER); | 1176 | snapid, ofs, &len, &bno, osd_req, ops); |
1167 | layout->fl_stripe_count = cpu_to_le32(1); | ||
1168 | layout->fl_object_size = cpu_to_le32(1 << RBD_MAX_OBJ_ORDER); | ||
1169 | layout->fl_pg_pool = cpu_to_le32((int) rbd_dev->spec->pool_id); | ||
1170 | ret = ceph_calc_raw_layout(osdc, layout, snapid, ofs, &len, &bno, | ||
1171 | osd_req, ops); | ||
1172 | rbd_assert(ret == 0); | 1177 | rbd_assert(ret == 0); |
1173 | 1178 | ||
1174 | ceph_osdc_build_request(osd_req, ofs, &len, | 1179 | ceph_osdc_build_request(osd_req, ofs, &len, |