From ad31ed4e484337df9f49eb4352fc94aafb4ed3b5 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Fri, 8 Feb 2013 09:55:48 -0600 Subject: [PATCH] --- yaml --- r: 359671 b: refs/heads/master c: fbfab53966b279f9cdb36b96ffa1e22f042c96ff h: refs/heads/master i: 359669: 7bde7ed5de48beba1ae62c06720bc0fcfc63f5ef 359667: 9a8118e925c4bd35f30063bd7a4c17114207ebb8 359663: c1ace9beea66715084761bf155e0f694fa86397f v: v3 --- [refs] | 2 +- trunk/drivers/block/rbd.c | 15 +++++++++++++++ trunk/net/ceph/osd_client.c | 3 ++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 043ca56898c8..1a034036b30a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ef06f4d32ae5b656f17b53ee3f3c43471a11cc73 +refs/heads/master: fbfab53966b279f9cdb36b96ffa1e22f042c96ff diff --git a/trunk/drivers/block/rbd.c b/trunk/drivers/block/rbd.c index ff9e9255745c..09514d9d8a97 100644 --- a/trunk/drivers/block/rbd.c +++ b/trunk/drivers/block/rbd.c @@ -1148,6 +1148,8 @@ struct ceph_osd_req_op *rbd_osd_req_op_create(u16 opcode, ...) if (opcode == CEPH_OSD_OP_WRITE) op->payload_len = op->extent.length; break; + case CEPH_OSD_OP_STAT: + break; case CEPH_OSD_OP_CALL: /* rbd_osd_req_op_create(CALL, class, method, data, datalen) */ op->cls.class_name = va_arg(args, char *); @@ -1277,6 +1279,16 @@ static void rbd_osd_write_callback(struct rbd_obj_request *obj_request, obj_request_done_set(obj_request); } +/* + * For a simple stat call there's nothing to do. We'll do more if + * this is part of a write sequence for a layered image. + */ +static void rbd_osd_stat_callback(struct rbd_obj_request *obj_request, + struct ceph_osd_op *op) +{ + obj_request_done_set(obj_request); +} + static void rbd_osd_req_callback(struct ceph_osd_request *osd_req, struct ceph_msg *msg) { @@ -1307,6 +1319,9 @@ static void rbd_osd_req_callback(struct ceph_osd_request *osd_req, case CEPH_OSD_OP_WRITE: rbd_osd_write_callback(obj_request, op); break; + case CEPH_OSD_OP_STAT: + rbd_osd_stat_callback(obj_request, op); + break; case CEPH_OSD_OP_CALL: case CEPH_OSD_OP_NOTIFY_ACK: case CEPH_OSD_OP_WATCH: diff --git a/trunk/net/ceph/osd_client.c b/trunk/net/ceph/osd_client.c index b58748ec405d..39629b66f3b1 100644 --- a/trunk/net/ceph/osd_client.c +++ b/trunk/net/ceph/osd_client.c @@ -220,6 +220,8 @@ static void osd_req_encode_op(struct ceph_osd_request *req, 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 = @@ -255,7 +257,6 @@ static void osd_req_encode_op(struct ceph_osd_request *req, pr_err("unrecognized osd opcode %d\n", dst->op); WARN_ON(1); break; - case CEPH_OSD_OP_STAT: case CEPH_OSD_OP_MAPEXT: case CEPH_OSD_OP_MASKTRUNC: case CEPH_OSD_OP_SPARSE_READ: