diff options
author | Poornima G <pgurusid@redhat.com> | 2016-01-22 11:44:21 -0500 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2017-02-13 20:53:10 -0500 |
commit | 99ce0d43fffa9b2094edcd4917df2ff9ca7afe5d (patch) | |
tree | 50635ed81bcf2d5be11612ef54dc54bf058d38ab /rpc | |
parent | 12cbaabb16ad1f1e5156c35dafe6a7a29a2027a1 (diff) |
glusterd: add a cli command to trigger a statedump on a client
With this, we will be able to trigger statedumps on remote Gluster
clients, mainly targetted for applications using libgfapi.
Design:
SIGUSR signal is the most comman way of taking a statedump in Gluster.
But it cannot be used for libgfapi based processes, as the process
loading the library might have already consumed SIGUSR signal. Hence
going by the command way.
One has to issue a Gluster command to initiate a statedump on the
libgfapi based client. The command takes hostname and PID as an
argument. All the glusterds in the cluster, check if they are connected
to the specified hostname, and send an RPC request to all the connected
clients from that hostname (via the mgmt connection).
> URL: http://review.gluster.org/16357
> BUG: 1169302
> Signed-off-by: Poornima G <pgurusid@redhat.com>
> [ndevos: minor fixes and split patch in smaller pieces]
> Reviewed-on-master: https://review.gluster.org/9228
> Reviewed-by: Niels de Vos <ndevos@redhat.com>
> Tested-by: Niels de Vos <ndevos@redhat.com>
> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
> Reviewed-by: Samikshan Bairagya <samikshan@gmail.com>
BUG: 1418981
Change-Id: Icbe4d2f026b32a2c7d5535e1bfb2cdaaff042e91
Signed-off-by: Shyam <srangana@redhat.com>
Reviewed-on: https://review.gluster.org/16601
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'rpc')
-rw-r--r-- | rpc/rpc-lib/src/protocol-common.h | 1 | ||||
-rw-r--r-- | rpc/rpc-lib/src/rpc-transport.h | 2 | ||||
-rw-r--r-- | rpc/xdr/src/rpc-common-xdr.x | 3 |
3 files changed, 5 insertions, 1 deletions
diff --git a/rpc/rpc-lib/src/protocol-common.h b/rpc/rpc-lib/src/protocol-common.h index cd21ad8564f..8865baf759b 100644 --- a/rpc/rpc-lib/src/protocol-common.h +++ b/rpc/rpc-lib/src/protocol-common.h @@ -146,6 +146,7 @@ enum gf_cbk_procnum { GF_CBK_CHILD_UP, GF_CBK_CHILD_DOWN, GF_CBK_RECALL_LEASE, + GF_CBK_STATEDUMP, GF_CBK_MAXVALUE, }; diff --git a/rpc/rpc-lib/src/rpc-transport.h b/rpc/rpc-lib/src/rpc-transport.h index 717c40af13a..e3b630e2919 100644 --- a/rpc/rpc-lib/src/rpc-transport.h +++ b/rpc/rpc-lib/src/rpc-transport.h @@ -70,7 +70,7 @@ struct peer_info { uint32_t max_op_version; uint32_t min_op_version; //Volume mounted by client - char volname[1024]; + char volname[NAME_MAX]; }; typedef struct peer_info peer_info_t; diff --git a/rpc/xdr/src/rpc-common-xdr.x b/rpc/xdr/src/rpc-common-xdr.x index 464a7478c73..7ccfbb11a51 100644 --- a/rpc/xdr/src/rpc-common-xdr.x +++ b/rpc/xdr/src/rpc-common-xdr.x @@ -39,6 +39,9 @@ struct gf_dump_req { u_quad_t gfs_id; }; +struct gf_statedump { + unsigned int pid; +}; struct gf_prog_detail { string progname<>; |