diff options
| author | Alex Elder <elder@inktank.com> | 2013-02-15 11:42:30 -0600 | 
|---|---|---|
| committer | Alex Elder <elder@inktank.com> | 2013-02-18 12:20:22 -0600 | 
| commit | 4c46459cae3b945e6e167f3f3a12b68f55cc5937 (patch) | |
| tree | c94c7736f781c7807915fbe9d50d4277ed239c4b | |
| parent | 2979ddb11befcd757a6ab5a04fad9e264560385b (diff) | |
libceph: report defined but unsupported osd ops
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>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
| -rw-r--r-- | net/ceph/osd_client.c | 54 | 
1 files changed, 54 insertions, 0 deletions
| diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c index ad6b8b35f5ca..ac7bcbf19574 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);  } | 
