summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorIlya Dryomov <ilya.dryomov@inktank.com>2014-01-27 16:40:18 +0100
committerIlya Dryomov <ilya.dryomov@inktank.com>2014-01-27 22:57:28 +0100
commit4295f2217a5aa8ef2738e3a368db3c1ceab41212 (patch)
tree557b4efd8558bfa71bae87413d0f4d6f0ba0511a /net
parentlibceph: rename MAX_OBJ_NAME_SIZE to CEPH_MAX_OID_NAME_LEN (diff)
downloadlinux-4295f2217a5aa8ef2738e3a368db3c1ceab41212.tar.xz
linux-4295f2217a5aa8ef2738e3a368db3c1ceab41212.zip
libceph: introduce and start using oid abstraction
In preparation for tiering support, which would require having two (base and target) object names for each osd request and also copying those names around, introduce struct ceph_object_id (oid) and a couple helpers to facilitate those copies and encapsulate the fact that object name is not necessarily a NUL-terminated string. Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com> Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'net')
-rw-r--r--net/ceph/debugfs.c3
-rw-r--r--net/ceph/osd_client.c17
2 files changed, 11 insertions, 9 deletions
diff --git a/net/ceph/debugfs.c b/net/ceph/debugfs.c
index 83661cdc0766..1f8562706393 100644
--- a/net/ceph/debugfs.c
+++ b/net/ceph/debugfs.c
@@ -132,7 +132,8 @@ static int osdc_show(struct seq_file *s, void *pp)
req->r_osd ? req->r_osd->o_osd : -1,
req->r_pgid.pool, req->r_pgid.seed);
- seq_printf(s, "%.*s", req->r_oid_len, req->r_oid);
+ seq_printf(s, "%.*s", req->r_oid.name_len,
+ req->r_oid.name);
if (req->r_reassert_version.epoch)
seq_printf(s, "\t%u'%llu",
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index a053e7e4a780..2988d68b24c6 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -765,9 +765,9 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
req->r_oloc.pool = ceph_file_layout_pg_pool(*layout);
- snprintf(req->r_oid, sizeof(req->r_oid), "%llx.%08llx",
- vino.ino, objnum);
- req->r_oid_len = strlen(req->r_oid);
+ snprintf(req->r_oid.name, sizeof(req->r_oid.name),
+ "%llx.%08llx", vino.ino, objnum);
+ req->r_oid.name_len = strlen(req->r_oid.name);
return req;
}
@@ -1269,7 +1269,7 @@ static int __map_request(struct ceph_osd_client *osdc,
bool was_paused;
dout("map_request %p tid %lld\n", req, req->r_tid);
- err = ceph_calc_ceph_pg(&pgid, req->r_oid, osdc->osdmap,
+ err = ceph_calc_ceph_pg(&pgid, req->r_oid.name, osdc->osdmap,
req->r_oloc.pool);
if (err) {
list_move(&req->r_req_lru_item, &osdc->req_notarget);
@@ -2118,10 +2118,11 @@ void ceph_osdc_build_request(struct ceph_osd_request *req, u64 off,
ceph_encode_32(&p, -1); /* preferred */
/* oid */
- ceph_encode_32(&p, req->r_oid_len);
- memcpy(p, req->r_oid, req->r_oid_len);
- dout("oid '%.*s' len %d\n", req->r_oid_len, req->r_oid, req->r_oid_len);
- p += req->r_oid_len;
+ ceph_encode_32(&p, req->r_oid.name_len);
+ memcpy(p, req->r_oid.name, req->r_oid.name_len);
+ dout("oid '%.*s' len %d\n", req->r_oid.name_len,
+ req->r_oid.name, req->r_oid.name_len);
+ p += req->r_oid.name_len;
/* ops--can imply data */
ceph_encode_16(&p, (u16)req->r_num_ops);