aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2012-11-09 09:43:15 -0500
committerAlex Elder <elder@inktank.com>2013-01-17 16:52:01 -0500
commit0ec8ce87f3bb5e4a561190f5320934e003405b6f (patch)
tree75962a9eee906e1b02704ed4f5268f62b97118b5 /drivers/block
parenta7b4c65f4f15aa657b09d13da8f45ba0b72ec0df (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.c23
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
1100static 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,