diff options
author | Alex Elder <elder@inktank.com> | 2013-02-15 23:10:17 -0500 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-05-02 00:14:25 -0400 |
commit | 47a05811b656915789bdd4c7e8cc18007e09c56d (patch) | |
tree | 37a38954651d1ffa23a7a3ca99d525f0f5a6b46f | |
parent | 07c09b725543ff2958c11522d583f90f7fdba735 (diff) |
libceph: pass object number back to calc_layout() caller
Have calc_layout() pass the computed object number back to its
caller. (This is a small step to simplify review.)
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
-rw-r--r-- | net/ceph/osd_client.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index cf4e15bfe0db..f4bdb6a69588 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c | |||
@@ -67,16 +67,15 @@ static int calc_layout(struct ceph_vino vino, | |||
67 | struct ceph_file_layout *layout, | 67 | struct ceph_file_layout *layout, |
68 | u64 off, u64 *plen, | 68 | u64 off, u64 *plen, |
69 | struct ceph_osd_request *req, | 69 | struct ceph_osd_request *req, |
70 | struct ceph_osd_req_op *op) | 70 | struct ceph_osd_req_op *op, u64 *bno) |
71 | { | 71 | { |
72 | u64 orig_len = *plen; | 72 | u64 orig_len = *plen; |
73 | u64 bno = 0; | ||
74 | u64 objoff = 0; | 73 | u64 objoff = 0; |
75 | u64 objlen = 0; | 74 | u64 objlen = 0; |
76 | int r; | 75 | int r; |
77 | 76 | ||
78 | /* object extent? */ | 77 | /* object extent? */ |
79 | r = ceph_calc_file_object_mapping(layout, off, orig_len, &bno, | 78 | r = ceph_calc_file_object_mapping(layout, off, orig_len, bno, |
80 | &objoff, &objlen); | 79 | &objoff, &objlen); |
81 | if (r < 0) | 80 | if (r < 0) |
82 | return r; | 81 | return r; |
@@ -104,9 +103,9 @@ static int calc_layout(struct ceph_vino vino, | |||
104 | op->payload_len = *plen; | 103 | op->payload_len = *plen; |
105 | 104 | ||
106 | dout("calc_layout bno=%llx %llu~%llu (%d pages)\n", | 105 | dout("calc_layout bno=%llx %llu~%llu (%d pages)\n", |
107 | bno, objoff, objlen, req->r_num_pages); | 106 | *bno, objoff, objlen, req->r_num_pages); |
108 | 107 | ||
109 | snprintf(req->r_oid, sizeof(req->r_oid), "%llx.%08llx", vino.ino, bno); | 108 | snprintf(req->r_oid, sizeof(req->r_oid), "%llx.%08llx", vino.ino, *bno); |
110 | req->r_oid_len = strlen(req->r_oid); | 109 | req->r_oid_len = strlen(req->r_oid); |
111 | 110 | ||
112 | return 0; | 111 | return 0; |
@@ -449,6 +448,7 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc, | |||
449 | struct ceph_osd_req_op ops[2]; | 448 | struct ceph_osd_req_op ops[2]; |
450 | struct ceph_osd_request *req; | 449 | struct ceph_osd_request *req; |
451 | unsigned int num_op = 1; | 450 | unsigned int num_op = 1; |
451 | u64 bno = 0; | ||
452 | int r; | 452 | int r; |
453 | 453 | ||
454 | memset(&ops, 0, sizeof ops); | 454 | memset(&ops, 0, sizeof ops); |
@@ -469,11 +469,12 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc, | |||
469 | req->r_flags = flags; | 469 | req->r_flags = flags; |
470 | 470 | ||
471 | /* calculate max write size */ | 471 | /* calculate max write size */ |
472 | r = calc_layout(vino, layout, off, plen, req, ops); | 472 | r = calc_layout(vino, layout, off, plen, req, ops, &bno); |
473 | if (r < 0) { | 473 | if (r < 0) { |
474 | ceph_osdc_put_request(req); | 474 | ceph_osdc_put_request(req); |
475 | return ERR_PTR(r); | 475 | return ERR_PTR(r); |
476 | } | 476 | } |
477 | |||
477 | req->r_file_layout = *layout; /* keep a copy */ | 478 | req->r_file_layout = *layout; /* keep a copy */ |
478 | 479 | ||
479 | /* in case it differs from natural (file) alignment that | 480 | /* in case it differs from natural (file) alignment that |