aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-02-15 23:10:17 -0500
committerSage Weil <sage@inktank.com>2013-05-02 00:14:25 -0400
commit47a05811b656915789bdd4c7e8cc18007e09c56d (patch)
tree37a38954651d1ffa23a7a3ca99d525f0f5a6b46f
parent07c09b725543ff2958c11522d583f90f7fdba735 (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.c13
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