From 9c29312628af743f16badb4bc820cbd31f2a9488 Mon Sep 17 00:00:00 2001 From: Pranith K Date: Fri, 29 Oct 2010 03:39:56 +0000 Subject: cli,mgmt/glusterd: fsm log implementation Signed-off-by: Pranith Kumar K Signed-off-by: Anand V. Avati BUG: 1966 (Unnecessarily verbose logs at the default log level) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1966 --- rpc/rpc-lib/src/protocol-common.h | 2 ++ rpc/xdr/src/cli1-xdr.c | 35 ++++++++++++++++++++++++++++++----- rpc/xdr/src/cli1-xdr.h | 24 ++++++++++++++++++++++-- rpc/xdr/src/cli1.c | 28 ++++++++++++++++++++++++++++ rpc/xdr/src/cli1.h | 11 +++++++++++ rpc/xdr/src/cli1.x | 14 +++++++++++++- 6 files changed, 106 insertions(+), 8 deletions(-) (limited to 'rpc') diff --git a/rpc/rpc-lib/src/protocol-common.h b/rpc/rpc-lib/src/protocol-common.h index bfd043e31d2..2fe70408eda 100644 --- a/rpc/rpc-lib/src/protocol-common.h +++ b/rpc/rpc-lib/src/protocol-common.h @@ -104,6 +104,7 @@ enum gf_mgmt_procnum_ { GD_MGMT_CLI_LOG_ROTATE, GD_MGMT_CLI_SYNC_VOLUME, GD_MGMT_CLI_RESET_VOLUME, + GD_MGMT_CLI_FSM_LOG, GD_MGMT_MAXVALUE, }; @@ -133,6 +134,7 @@ enum gf_cli_procnum { GF1_CLI_PMAP_PORTBYBRICK, GF1_CLI_SYNC_VOLUME, GF1_CLI_RESET_VOLUME, + GF1_CLI_FSM_LOG, GF1_CLI_MAXVALUE, }; diff --git a/rpc/xdr/src/cli1-xdr.c b/rpc/xdr/src/cli1-xdr.c index 713648ffaa1..2db0c7cc647 100644 --- a/rpc/xdr/src/cli1-xdr.c +++ b/rpc/xdr/src/cli1-xdr.c @@ -25,6 +25,7 @@ #include "cli1.h" #include "compat.h" + bool_t xdr_gf1_cluster_type (XDR *xdrs, gf1_cluster_type *objp) { @@ -316,9 +317,9 @@ xdr_gf1_cli_stop_vol_rsp (XDR *xdrs, gf1_cli_stop_vol_rsp *objp) return FALSE; if (!xdr_string (xdrs, &objp->volname, ~0)) return FALSE; - if (!xdr_string (xdrs, &objp->op_errstr, ~0)) - return FALSE; - return TRUE; + if (!xdr_string (xdrs, &objp->op_errstr, ~0)) + return FALSE; + return TRUE; } bool_t @@ -512,8 +513,8 @@ xdr_gf1_cli_set_vol_rsp (XDR *xdrs, gf1_cli_set_vol_rsp *objp) return FALSE; if (!xdr_string (xdrs, &objp->volname, ~0)) return FALSE; - if (!xdr_string (xdrs, &objp->op_errstr, ~0)) - return FALSE; + if (!xdr_string (xdrs, &objp->op_errstr, ~0)) + return FALSE; if (!xdr_bytes (xdrs, (char **)&objp->dict.dict_val, (u_int *) &objp->dict.dict_len, ~0)) return FALSE; return TRUE; @@ -618,3 +619,27 @@ xdr_gf1_cli_sync_volume_rsp (XDR *xdrs, gf1_cli_sync_volume_rsp *objp) return FALSE; return TRUE; } + +bool_t +xdr_gf1_cli_fsm_log_req (XDR *xdrs, gf1_cli_fsm_log_req *objp) +{ + + if (!xdr_string (xdrs, &objp->name, ~0)) + return FALSE; + return TRUE; +} + +bool_t +xdr_gf1_cli_fsm_log_rsp (XDR *xdrs, gf1_cli_fsm_log_rsp *objp) +{ + + if (!xdr_int (xdrs, &objp->op_ret)) + return FALSE; + if (!xdr_int (xdrs, &objp->op_errno)) + return FALSE; + if (!xdr_string (xdrs, &objp->op_errstr, ~0)) + return FALSE; + if (!xdr_bytes (xdrs, (char **)&objp->fsm_log.fsm_log_val, (u_int *) &objp->fsm_log.fsm_log_len, ~0)) + return FALSE; + return TRUE; +} diff --git a/rpc/xdr/src/cli1-xdr.h b/rpc/xdr/src/cli1-xdr.h index 5bc3b03d24b..38b5843fac0 100644 --- a/rpc/xdr/src/cli1-xdr.h +++ b/rpc/xdr/src/cli1-xdr.h @@ -194,7 +194,7 @@ struct gf1_cli_stop_vol_rsp { int op_ret; int op_errno; char *volname; - char *op_errstr; + char *op_errstr; }; typedef struct gf1_cli_stop_vol_rsp gf1_cli_stop_vol_rsp; @@ -314,7 +314,7 @@ struct gf1_cli_set_vol_rsp { int op_ret; int op_errno; char *volname; - char *op_errstr; + char *op_errstr; struct { u_int dict_len; char *dict_val; @@ -376,6 +376,22 @@ struct gf1_cli_sync_volume_rsp { }; typedef struct gf1_cli_sync_volume_rsp gf1_cli_sync_volume_rsp; +struct gf1_cli_fsm_log_req { + char *name; +}; +typedef struct gf1_cli_fsm_log_req gf1_cli_fsm_log_req; + +struct gf1_cli_fsm_log_rsp { + int op_ret; + int op_errno; + char *op_errstr; + struct { + u_int fsm_log_len; + char *fsm_log_val; + } fsm_log; +}; +typedef struct gf1_cli_fsm_log_rsp gf1_cli_fsm_log_rsp; + /* the xdr functions */ #if defined(__STDC__) || defined(__cplusplus) @@ -423,6 +439,8 @@ extern bool_t xdr_gf1_cli_log_locate_rsp (XDR *, gf1_cli_log_locate_rsp*); extern bool_t xdr_gf1_cli_log_rotate_req (XDR *, gf1_cli_log_rotate_req*); extern bool_t xdr_gf1_cli_log_rotate_rsp (XDR *, gf1_cli_log_rotate_rsp*); extern bool_t xdr_gf1_cli_sync_volume_rsp (XDR *, gf1_cli_sync_volume_rsp*); +extern bool_t xdr_gf1_cli_fsm_log_req (XDR *, gf1_cli_fsm_log_req*); +extern bool_t xdr_gf1_cli_fsm_log_rsp (XDR *, gf1_cli_fsm_log_rsp*); #else /* K&R C */ extern bool_t xdr_gf1_cluster_type (); @@ -469,6 +487,8 @@ extern bool_t xdr_gf1_cli_log_locate_rsp (); extern bool_t xdr_gf1_cli_log_rotate_req (); extern bool_t xdr_gf1_cli_log_rotate_rsp (); extern bool_t xdr_gf1_cli_sync_volume_rsp (); +extern bool_t xdr_gf1_cli_fsm_log_req (); +extern bool_t xdr_gf1_cli_fsm_log_rsp (); #endif /* K&R C */ diff --git a/rpc/xdr/src/cli1.c b/rpc/xdr/src/cli1.c index 41a97f983ac..14f38394176 100644 --- a/rpc/xdr/src/cli1.c +++ b/rpc/xdr/src/cli1.c @@ -581,3 +581,31 @@ gf_xdr_from_cli_sync_volume_rsp (struct iovec outmsg, void *args) return xdr_serialize_generic (outmsg, (void *)args, (xdrproc_t)xdr_gf1_cli_sync_volume_rsp); } + +ssize_t +gf_xdr_to_cli_fsm_log_req (struct iovec inmsg, void *args) +{ + return xdr_to_generic (inmsg, (void *)args, + (xdrproc_t)xdr_gf1_cli_fsm_log_req); +} + +ssize_t +gf_xdr_from_cli_fsm_log_req (struct iovec outmsg, void *args) +{ + return xdr_serialize_generic (outmsg, (void *)args, + (xdrproc_t)xdr_gf1_cli_fsm_log_req); +} + +ssize_t +gf_xdr_to_cli_fsm_log_rsp (struct iovec inmsg, void *args) +{ + return xdr_to_generic (inmsg, (void *)args, + (xdrproc_t)xdr_gf1_cli_fsm_log_rsp); +} + +ssize_t +gf_xdr_from_cli_fsm_log_rsp (struct iovec outmsg, void *args) +{ + return xdr_serialize_generic (outmsg, (void *)args, + (xdrproc_t)xdr_gf1_cli_fsm_log_rsp); +} diff --git a/rpc/xdr/src/cli1.h b/rpc/xdr/src/cli1.h index 8d9e1674a97..d0c43d802aa 100644 --- a/rpc/xdr/src/cli1.h +++ b/rpc/xdr/src/cli1.h @@ -258,4 +258,15 @@ gf_xdr_to_cli_sync_volume_rsp (struct iovec inmsg, void *args); ssize_t gf_xdr_from_cli_sync_volume_rsp (struct iovec outmsg, void *args); +ssize_t +gf_xdr_to_cli_fsm_log_req (struct iovec inmsg, void *args); + +ssize_t +gf_xdr_from_cli_fsm_log_req (struct iovec outmsg, void *args); + +ssize_t +gf_xdr_to_cli_fsm_log_rsp (struct iovec inmsg, void *args); + +ssize_t +gf_xdr_from_cli_fsm_log_rsp (struct iovec outmsg, void *args); #endif /* !_CLI1_H */ diff --git a/rpc/xdr/src/cli1.x b/rpc/xdr/src/cli1.x index d729548ed39..0ac34aea159 100644 --- a/rpc/xdr/src/cli1.x +++ b/rpc/xdr/src/cli1.x @@ -10,7 +10,8 @@ GF_REPLACE_OP_COMMIT, GF_REPLACE_OP_PAUSE, GF_REPLACE_OP_ABORT, - GF_REPLACE_OP_STATUS + GF_REPLACE_OP_STATUS, + GF_REPLACE_OP_COMMIT_FORCE } ; enum gf1_cli_friends_list { @@ -269,3 +270,14 @@ struct gf1_cli_sync_volume_rsp { int op_errno; string op_errstr<>; }; + +struct gf1_cli_fsm_log_req { + string name<>; +}; + +struct gf1_cli_fsm_log_rsp { + int op_ret; + int op_errno; + string op_errstr<>; + opaque fsm_log<>; +}; -- cgit