Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 373356
b: refs/heads/master
c: 175face
h: refs/heads/master
v: v3
  • Loading branch information
Alex Elder authored and Sage Weil committed May 2, 2013
1 parent 4912e83 commit df438a2
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 18 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: e766d7b55e10f93c7bab298135a4e90dcc46620d
refs/heads/master: 175face2ba31025b0dcd6da4e711fca7764287fa
2 changes: 1 addition & 1 deletion trunk/drivers/block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1462,7 +1462,7 @@ static struct ceph_osd_request *rbd_osd_req_create(

/* osd_req will get its own reference to snapc (if non-null) */

ceph_osdc_build_request(osd_req, offset, length, 1, op,
ceph_osdc_build_request(osd_req, offset, 1, op,
snapc, snap_id, mtime);

return osd_req;
Expand Down
3 changes: 1 addition & 2 deletions trunk/include/linux/ceph/osd_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,7 @@ extern struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *
bool use_mempool,
gfp_t gfp_flags);

extern void ceph_osdc_build_request(struct ceph_osd_request *req,
u64 off, u64 len,
extern void ceph_osdc_build_request(struct ceph_osd_request *req, u64 off,
unsigned int num_op,
struct ceph_osd_req_op *src_ops,
struct ceph_snap_context *snapc,
Expand Down
33 changes: 19 additions & 14 deletions trunk/net/ceph/osd_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,21 +222,24 @@ struct ceph_osd_request *ceph_osdc_alloc_request(struct ceph_osd_client *osdc,
}
EXPORT_SYMBOL(ceph_osdc_alloc_request);

static void osd_req_encode_op(struct ceph_osd_request *req,
static u64 osd_req_encode_op(struct ceph_osd_request *req,
struct ceph_osd_op *dst,
struct ceph_osd_req_op *src)
{
u64 out_data_len = 0;
u64 tmp;

dst->op = cpu_to_le16(src->op);

switch (src->op) {
case CEPH_OSD_OP_STAT:
break;
case CEPH_OSD_OP_READ:
case CEPH_OSD_OP_WRITE:
dst->extent.offset =
cpu_to_le64(src->extent.offset);
dst->extent.length =
cpu_to_le64(src->extent.length);
if (src->op == CEPH_OSD_OP_WRITE)
out_data_len = src->extent.length;
dst->extent.offset = cpu_to_le64(src->extent.offset);
dst->extent.length = cpu_to_le64(src->extent.length);
dst->extent.truncate_size =
cpu_to_le64(src->extent.truncate_size);
dst->extent.truncate_seq =
Expand All @@ -247,12 +250,14 @@ static void osd_req_encode_op(struct ceph_osd_request *req,
dst->cls.method_len = src->cls.method_len;
dst->cls.indata_len = cpu_to_le32(src->cls.indata_len);

tmp = req->r_trail.length;
ceph_pagelist_append(&req->r_trail, src->cls.class_name,
src->cls.class_len);
ceph_pagelist_append(&req->r_trail, src->cls.method_name,
src->cls.method_len);
ceph_pagelist_append(&req->r_trail, src->cls.indata,
src->cls.indata_len);
out_data_len = req->r_trail.length - tmp;
break;
case CEPH_OSD_OP_STARTSYNC:
break;
Expand Down Expand Up @@ -326,14 +331,16 @@ static void osd_req_encode_op(struct ceph_osd_request *req,
break;
}
dst->payload_len = cpu_to_le32(src->payload_len);

return out_data_len;
}

/*
* build new request AND message
*
*/
void ceph_osdc_build_request(struct ceph_osd_request *req,
u64 off, u64 len, unsigned int num_ops,
u64 off, unsigned int num_ops,
struct ceph_osd_req_op *src_ops,
struct ceph_snap_context *snapc, u64 snap_id,
struct timespec *mtime)
Expand Down Expand Up @@ -385,12 +392,13 @@ void ceph_osdc_build_request(struct ceph_osd_request *req,
dout("oid '%.*s' len %d\n", req->r_oid_len, req->r_oid, req->r_oid_len);
p += req->r_oid_len;

/* ops */
/* ops--can imply data */
ceph_encode_16(&p, num_ops);
src_op = src_ops;
req->r_request_ops = p;
data_len = 0;
for (i = 0; i < num_ops; i++, src_op++) {
osd_req_encode_op(req, p, src_op);
data_len += osd_req_encode_op(req, p, src_op);
p += sizeof(struct ceph_osd_op);
}

Expand All @@ -407,11 +415,9 @@ void ceph_osdc_build_request(struct ceph_osd_request *req,
req->r_request_attempts = p;
p += 4;

data_len = req->r_trail.length;
if (flags & CEPH_OSD_FLAG_WRITE) {
/* data */
if (flags & CEPH_OSD_FLAG_WRITE)
req->r_request->hdr.data_off = cpu_to_le16(off);
data_len += len;
}
req->r_request->hdr.data_len = cpu_to_le32(data_len);

BUG_ON(p > msg->front.iov_base + msg->front.iov_len);
Expand Down Expand Up @@ -477,13 +483,12 @@ struct ceph_osd_request *ceph_osdc_new_request(struct ceph_osd_client *osdc,
ceph_osdc_put_request(req);
return ERR_PTR(r);
}

req->r_file_layout = *layout; /* keep a copy */

snprintf(req->r_oid, sizeof(req->r_oid), "%llx.%08llx", vino.ino, bno);
req->r_oid_len = strlen(req->r_oid);

ceph_osdc_build_request(req, off, *plen, num_op, ops,
ceph_osdc_build_request(req, off, num_op, ops,
snapc, vino.snap, mtime);

return req;
Expand Down

0 comments on commit df438a2

Please sign in to comment.