summaryrefslogtreecommitdiff
path: root/drivers/block/rbd.c
diff options
context:
space:
mode:
authorIlya Dryomov <ilya.dryomov@inktank.com>2014-01-27 19:40:18 +0400
committerIlya Dryomov <ilya.dryomov@inktank.com>2014-01-28 01:57:03 +0400
commit22116525baec1d63f4878eaa92f0b57946a78819 (patch)
tree8630a9fdeec976e58fea4f0c131dabbf193a82f3 /drivers/block/rbd.c
parent0b4af2e8c9f3fc9c31d2f9374b79af2c890ef897 (diff)
downloadlinux-22116525baec1d63f4878eaa92f0b57946a78819.tar.xz
libceph: start using oloc abstraction
Instead of relying on pool fields in ceph_file_layout (for mapping) and ceph_pg (for enconding), start using ceph_object_locator (oloc) abstraction. Note that userspace oloc currently consists of pool, key, nspace and hash fields, while this one contains only a pool. This is OK, because at this point we only send (i.e. encode) olocs and never have to receive (i.e. decode) them. This makes keeping a copy of ceph_file_layout in every osd request unnecessary, so ceph_osd_request::r_file_layout field is nuked. Signed-off-by: Ilya Dryomov <ilya.dryomov@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 72a7eec456a9..6614e8d95525 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -1808,12 +1808,12 @@ static struct ceph_osd_request *rbd_osd_req_create(
osd_req->r_callback = rbd_osd_req_callback;
osd_req->r_priv = obj_request;
+ osd_req->r_oloc.pool = ceph_file_layout_pg_pool(rbd_dev->layout);
+
osd_req->r_oid_len = strlen(obj_request->object_name);
rbd_assert(osd_req->r_oid_len < sizeof (osd_req->r_oid));
memcpy(osd_req->r_oid, obj_request->object_name, osd_req->r_oid_len);
- osd_req->r_file_layout = rbd_dev->layout; /* struct */
-
return osd_req;
}
@@ -1849,12 +1849,12 @@ rbd_osd_req_create_copyup(struct rbd_obj_request *obj_request)
osd_req->r_callback = rbd_osd_req_callback;
osd_req->r_priv = obj_request;
+ osd_req->r_oloc.pool = ceph_file_layout_pg_pool(rbd_dev->layout);
+
osd_req->r_oid_len = strlen(obj_request->object_name);
rbd_assert(osd_req->r_oid_len < sizeof (osd_req->r_oid));
memcpy(osd_req->r_oid, obj_request->object_name, osd_req->r_oid_len);
- osd_req->r_file_layout = rbd_dev->layout; /* struct */
-
return osd_req;
}