debug/error-gen : Added dumpops to print private values of error-gen in the statedump.
Change-Id: I4aa299bd8ecdaa82cdfdc2d97a89fcddcbb25930 BUG: 767095 Signed-off-by: Avra Sengupta <asengupt@redhat.com> Reviewed-on: http://review.gluster.org/4245 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
This commit is contained in:
parent
48d749dda3
commit
9864b3a8e4
51
tests/bugs/bug-767095.t
Executable file
51
tests/bugs/bug-767095.t
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
. $(dirname $0)/../include.rc
|
||||
|
||||
cleanup;
|
||||
|
||||
## Start and create a volume
|
||||
TEST glusterd;
|
||||
TEST pidof glusterd;
|
||||
TEST $CLI volume info;
|
||||
|
||||
TEST $CLI volume create $V0 replica 2 stripe 2 $H0:$B0/${V0}{1,2,3,4,5,6,7,8};
|
||||
|
||||
function volinfo_field()
|
||||
{
|
||||
local vol=$1;
|
||||
local field=$2;
|
||||
|
||||
$CLI volume info $vol | grep "^$field: " | sed 's/.*: //';
|
||||
}
|
||||
|
||||
dump_dir='/tmp/gerrit_glusterfs'
|
||||
TEST mkdir -p $dump_dir;
|
||||
## Verify volume is is created
|
||||
EXPECT "$V0" volinfo_field $V0 'Volume Name';
|
||||
EXPECT 'Created' volinfo_field $V0 'Status';
|
||||
TEST $CLI volume set $V0 error-gen posix;
|
||||
TEST $CLI volume set $V0 server.statedump-path $dump_dir;
|
||||
|
||||
## Start volume and verify
|
||||
TEST $CLI volume start $V0;
|
||||
EXPECT 'Started' volinfo_field $V0 'Status';
|
||||
|
||||
TEST PID=`gluster volume status $V0 | grep patchy1 | awk {'print $5'}`;
|
||||
TEST kill -USR1 $PID;
|
||||
sleep 2;
|
||||
for file_name in $(ls $dump_dir)
|
||||
do
|
||||
TEST grep "error-gen.priv" $dump_dir/$file_name;
|
||||
done
|
||||
|
||||
## Finish up
|
||||
TEST $CLI volume stop $V0;
|
||||
EXPECT 'Stopped' volinfo_field $V0 'Status';
|
||||
|
||||
TEST $CLI volume delete $V0;
|
||||
TEST ! $CLI volume info $V0;
|
||||
|
||||
TEST rm -rf $dump_dir;
|
||||
|
||||
cleanup;
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "xlator.h"
|
||||
#include "error-gen.h"
|
||||
#include "statedump.h"
|
||||
|
||||
sys_error_t error_no_list[] = {
|
||||
[GF_FOP_LOOKUP] = { .error_no_count = 4,
|
||||
@ -1953,6 +1954,39 @@ error_gen_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t
|
||||
error_gen_priv_dump (xlator_t *this)
|
||||
{
|
||||
char key_prefix[GF_DUMP_MAX_BUF_LEN];
|
||||
int ret = -1;
|
||||
eg_t *conf = NULL;
|
||||
|
||||
if (!this)
|
||||
goto out;
|
||||
|
||||
conf = this->private;
|
||||
if (!conf)
|
||||
goto out;
|
||||
|
||||
ret = TRY_LOCK(&conf->lock);
|
||||
if (ret != 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
gf_proc_dump_add_section("xlator.debug.error-gen.%s.priv", this->name);
|
||||
gf_proc_dump_build_key(key_prefix,"xlator.debug.error-gen","%s.priv",
|
||||
this->name);
|
||||
|
||||
gf_proc_dump_write("op_count", "%d", conf->op_count);
|
||||
gf_proc_dump_write("failure_iter_no", "%d", conf->failure_iter_no);
|
||||
gf_proc_dump_write("error_no", "%s", conf->error_no);
|
||||
gf_proc_dump_write("random_failure", "%d", conf->random_failure);
|
||||
|
||||
UNLOCK(&conf->lock);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int32_t
|
||||
mem_acct_init (xlator_t *this)
|
||||
{
|
||||
@ -2093,6 +2127,10 @@ fini (xlator_t *this)
|
||||
return;
|
||||
}
|
||||
|
||||
struct xlator_dumpops dumpops = {
|
||||
.priv = error_gen_priv_dump,
|
||||
};
|
||||
|
||||
struct xlator_fops cbks = {
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user