* [PATCH 0/2] libceph: update osd_req_encode_op()
@ 2013-02-16 17:00 Alex Elder
2013-02-16 17:00 ` [PATCH 1/2] libceph: report defined but unsupported osd ops Alex Elder
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Alex Elder @ 2013-02-16 17:00 UTC (permalink / raw)
To: ceph-devel
This series just modifies osd_req_encode_op so it is
more informative, distinguishing between defined but
not supported opcodes and garbage opcodes.
-Alex
[PATCH 1/2] libceph: report defined but unsupported osd ops
[PATCH 2/2] libceph: remove dead code in osd_req_encode_op()
^ permalink raw reply [flat|nested] 4+ messages in thread* [PATCH 1/2] libceph: report defined but unsupported osd ops 2013-02-16 17:00 [PATCH 0/2] libceph: update osd_req_encode_op() Alex Elder @ 2013-02-16 17:00 ` Alex Elder 2013-02-16 17:01 ` [PATCH 2/2] libceph: remove dead code in osd_req_encode_op() Alex Elder 2013-02-16 23:56 ` [PATCH 0/2] libceph: update osd_req_encode_op() Josh Durgin 2 siblings, 0 replies; 4+ messages in thread From: Alex Elder @ 2013-02-16 17:00 UTC (permalink / raw) To: ceph-devel If osd_req_encode_op() is given any opcode it doesn't recognize it reports an error. This patch fleshes out that routine to distinguish between well-defined but unsupported values and values that are simply bogus. This and the next commit are related to: http://tracker.ceph.com/issues/4126 Signed-off-by: Alex Elder <elder@inktank.com> --- net/ceph/osd_client.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index ad6b8b3..ac7bcbf 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c @@ -281,6 +281,60 @@ 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: + case CEPH_OSD_OP_ASSERT_VER: + case CEPH_OSD_OP_WRITEFULL: + case CEPH_OSD_OP_TRUNCATE: + case CEPH_OSD_OP_ZERO: + case CEPH_OSD_OP_DELETE: + case CEPH_OSD_OP_APPEND: + case CEPH_OSD_OP_SETTRUNC: + case CEPH_OSD_OP_TRIMTRUNC: + case CEPH_OSD_OP_TMAPUP: + case CEPH_OSD_OP_TMAPPUT: + case CEPH_OSD_OP_TMAPGET: + case CEPH_OSD_OP_CREATE: + case CEPH_OSD_OP_OMAPGETKEYS: + case CEPH_OSD_OP_OMAPGETVALS: + case CEPH_OSD_OP_OMAPGETHEADER: + case CEPH_OSD_OP_OMAPGETVALSBYKEYS: + case CEPH_OSD_OP_MODE_RD: + case CEPH_OSD_OP_OMAPSETVALS: + case CEPH_OSD_OP_OMAPSETHEADER: + case CEPH_OSD_OP_OMAPCLEAR: + case CEPH_OSD_OP_OMAPRMKEYS: + case CEPH_OSD_OP_OMAP_CMP: + case CEPH_OSD_OP_CLONERANGE: + case CEPH_OSD_OP_ASSERT_SRC_VERSION: + case CEPH_OSD_OP_SRC_CMPXATTR: + case CEPH_OSD_OP_GETXATTRS: + case CEPH_OSD_OP_SETXATTRS: + case CEPH_OSD_OP_RESETXATTRS: + case CEPH_OSD_OP_RMXATTR: + case CEPH_OSD_OP_PULL: + case CEPH_OSD_OP_PUSH: + case CEPH_OSD_OP_BALANCEREADS: + case CEPH_OSD_OP_UNBALANCEREADS: + case CEPH_OSD_OP_SCRUB: + case CEPH_OSD_OP_SCRUB_RESERVE: + case CEPH_OSD_OP_SCRUB_UNRESERVE: + case CEPH_OSD_OP_SCRUB_STOP: + case CEPH_OSD_OP_SCRUB_MAP: + case CEPH_OSD_OP_WRLOCK: + case CEPH_OSD_OP_WRUNLOCK: + case CEPH_OSD_OP_RDLOCK: + case CEPH_OSD_OP_RDUNLOCK: + case CEPH_OSD_OP_UPLOCK: + case CEPH_OSD_OP_DNLOCK: + case CEPH_OSD_OP_PGLS: + case CEPH_OSD_OP_PGLS_FILTER: + pr_err("unsupported osd opcode %s\n", + ceph_osd_op_name(dst->op)); + WARN_ON(1); + break; } dst->payload_len = cpu_to_le32(src->payload_len); } -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] libceph: remove dead code in osd_req_encode_op() 2013-02-16 17:00 [PATCH 0/2] libceph: update osd_req_encode_op() Alex Elder 2013-02-16 17:00 ` [PATCH 1/2] libceph: report defined but unsupported osd ops Alex Elder @ 2013-02-16 17:01 ` Alex Elder 2013-02-16 23:56 ` [PATCH 0/2] libceph: update osd_req_encode_op() Josh Durgin 2 siblings, 0 replies; 4+ messages in thread From: Alex Elder @ 2013-02-16 17:01 UTC (permalink / raw) To: ceph-devel In osd_req_encode_op() there are a few cases that handle osd opcodes that are never used in the kernel. The presence of this code gives the impression it's correct (which really can't be assumed), and may impose some unnecessary restrictions on some upcoming refactoring of this code. So delete this effectively dead code, and report uses of the previously handled cases as unsupported. Signed-off-by: Alex Elder <elder@inktank.com> --- net/ceph/osd_client.c | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index ac7bcbf..bbd1575 100644 --- a/net/ceph/osd_client.c +++ b/net/ceph/osd_client.c @@ -231,19 +231,6 @@ static void osd_req_encode_op(struct ceph_osd_request *req, dst->extent.truncate_seq = cpu_to_le32(src->extent.truncate_seq); break; - - case CEPH_OSD_OP_GETXATTR: - case CEPH_OSD_OP_SETXATTR: - case CEPH_OSD_OP_CMPXATTR: - dst->xattr.name_len = cpu_to_le32(src->xattr.name_len); - dst->xattr.value_len = cpu_to_le32(src->xattr.value_len); - dst->xattr.cmp_op = src->xattr.cmp_op; - dst->xattr.cmp_mode = src->xattr.cmp_mode; - ceph_pagelist_append(&req->r_trail, src->xattr.name, - src->xattr.name_len); - ceph_pagelist_append(&req->r_trail, src->xattr.val, - src->xattr.value_len); - break; case CEPH_OSD_OP_CALL: dst->cls.class_len = src->cls.class_len; dst->cls.method_len = src->cls.method_len; @@ -256,21 +243,8 @@ static void osd_req_encode_op(struct ceph_osd_request *req, ceph_pagelist_append(&req->r_trail, src->cls.indata, src->cls.indata_len); break; - case CEPH_OSD_OP_ROLLBACK: - dst->snap.snapid = cpu_to_le64(src->snap.snapid); - break; case CEPH_OSD_OP_STARTSYNC: break; - case CEPH_OSD_OP_NOTIFY: - { - __le32 prot_ver = cpu_to_le32(src->watch.prot_ver); - __le32 timeout = cpu_to_le32(src->watch.timeout); - - ceph_pagelist_append(&req->r_trail, - &prot_ver, sizeof(prot_ver)); - ceph_pagelist_append(&req->r_trail, - &timeout, sizeof(timeout)); - } case CEPH_OSD_OP_NOTIFY_ACK: case CEPH_OSD_OP_WATCH: dst->watch.cookie = cpu_to_le64(src->watch.cookie); @@ -285,6 +259,7 @@ static void osd_req_encode_op(struct ceph_osd_request *req, case CEPH_OSD_OP_MAPEXT: case CEPH_OSD_OP_MASKTRUNC: case CEPH_OSD_OP_SPARSE_READ: + case CEPH_OSD_OP_NOTIFY: case CEPH_OSD_OP_ASSERT_VER: case CEPH_OSD_OP_WRITEFULL: case CEPH_OSD_OP_TRUNCATE: @@ -297,6 +272,7 @@ static void osd_req_encode_op(struct ceph_osd_request *req, case CEPH_OSD_OP_TMAPPUT: case CEPH_OSD_OP_TMAPGET: case CEPH_OSD_OP_CREATE: + case CEPH_OSD_OP_ROLLBACK: case CEPH_OSD_OP_OMAPGETKEYS: case CEPH_OSD_OP_OMAPGETVALS: case CEPH_OSD_OP_OMAPGETHEADER: @@ -310,7 +286,10 @@ static void osd_req_encode_op(struct ceph_osd_request *req, case CEPH_OSD_OP_CLONERANGE: case CEPH_OSD_OP_ASSERT_SRC_VERSION: case CEPH_OSD_OP_SRC_CMPXATTR: + case CEPH_OSD_OP_GETXATTR: case CEPH_OSD_OP_GETXATTRS: + case CEPH_OSD_OP_CMPXATTR: + case CEPH_OSD_OP_SETXATTR: case CEPH_OSD_OP_SETXATTRS: case CEPH_OSD_OP_RESETXATTRS: case CEPH_OSD_OP_RMXATTR: -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 0/2] libceph: update osd_req_encode_op() 2013-02-16 17:00 [PATCH 0/2] libceph: update osd_req_encode_op() Alex Elder 2013-02-16 17:00 ` [PATCH 1/2] libceph: report defined but unsupported osd ops Alex Elder 2013-02-16 17:01 ` [PATCH 2/2] libceph: remove dead code in osd_req_encode_op() Alex Elder @ 2013-02-16 23:56 ` Josh Durgin 2 siblings, 0 replies; 4+ messages in thread From: Josh Durgin @ 2013-02-16 23:56 UTC (permalink / raw) To: Alex Elder; +Cc: ceph-devel On 02/16/2013 09:00 AM, Alex Elder wrote: > This series just modifies osd_req_encode_op so it is > more informative, distinguishing between defined but > not supported opcodes and garbage opcodes. > > -Alex > > [PATCH 1/2] libceph: report defined but unsupported osd ops > [PATCH 2/2] libceph: remove dead code in osd_req_encode_op() These look good. Reviewed-by: Josh Durgin <josh.durgin@inktank.com> ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-02-16 23:56 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-02-16 17:00 [PATCH 0/2] libceph: update osd_req_encode_op() Alex Elder 2013-02-16 17:00 ` [PATCH 1/2] libceph: report defined but unsupported osd ops Alex Elder 2013-02-16 17:01 ` [PATCH 2/2] libceph: remove dead code in osd_req_encode_op() Alex Elder 2013-02-16 23:56 ` [PATCH 0/2] libceph: update osd_req_encode_op() Josh Durgin
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.