lnet_nid_t tc_nid;
/** Jobid of the client. */
char tc_jobid[LUSTRE_JOBID_SIZE];
+ /** opcode of the client. */
+ __u32 tc_opcode;
/** Reference number of the client. */
atomic_t tc_ref;
/** Lock to protect rule and linkage. */
struct list_head tr_jobids;
/** Jobid list string of the rule.*/
char *tr_jobids_str;
+ /** Opcode bitmap of the rule. */
+ struct cfs_bitmap *tr_opcodes;
+ /** Opcode list string of the rule.*/
+ char *tr_opcodes_str;
/** RPC/s limit. */
__u64 tr_rpc_rate;
/** Time to wait for next token. */
#define NRS_TBF_TYPE_JOBID "jobid"
#define NRS_TBF_TYPE_NID "nid"
+#define NRS_TBF_TYPE_OPCODE "opcode"
#define NRS_TBF_TYPE_MAX_LEN 20
-#define NRS_TBF_FLAG_INVALID 0
-#define NRS_TBF_FLAG_JOBID 0x0000001
-#define NRS_TBF_FLAG_NID 0x0000002
+
+enum nrs_tbf_flag {
+ NRS_TBF_FLAG_INVALID = 0x0000000,
+ NRS_TBF_FLAG_JOBID = 0x0000001,
+ NRS_TBF_FLAG_NID = 0x0000002,
+ NRS_TBF_FLAG_OPCODE = 0x0000004,
+};
+
+struct nrs_tbf_type {
+ const char *ntt_name;
+ enum nrs_tbf_flag ntt_flag;
+ struct nrs_tbf_ops *ntt_ops;
+};
struct nrs_tbf_bucket {
/**
char *ts_nids_str;
struct list_head ts_jobids;
char *ts_jobids_str;
+ struct cfs_bitmap *ts_opcodes;
+ char *ts_opcodes_str;
__u32 ts_valid_type;
__u32 ts_rule_flags;
char *ts_next_name;