diff options
Diffstat (limited to 'xlators/mgmt')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 41 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.h | 4 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-set.c | 23 |
3 files changed, 42 insertions, 26 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index e14e3133679..f65ad94ace6 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -2548,16 +2548,15 @@ debugxl_option_handler (volgen_graph_t *graph, struct volopt_map_entry *vme, return 0; if (!strcmp (vme->key , "debug.trace") || - !strcmp (vme->key, "debug.error-gen")) { + !strcmp (vme->key, "debug.error-gen") || + !strcmp (vme->key, "debug.delay-gen")) { if (get_server_xlator (vme->value) == GF_XLATOR_NONE && get_client_xlator (vme->value) == GF_CLNT_XLATOR_NONE) return 0; - else - goto add_graph; } if (gf_string2boolean (vme->value, &enabled) == -1) - return -1; + goto add_graph; if (!enabled) return 0; @@ -2574,34 +2573,28 @@ int check_and_add_debug_xl (volgen_graph_t *graph, dict_t *set_dict, char *volname, char *xlname) { + int i = 0; int ret = 0; char *value_str = NULL; + static char *xls[] = {"debug.trace", "debug.error-gen", + "debug.delay-gen", NULL}; if (!xlname) goto out; - ret = dict_get_str (set_dict, "debug.trace", &value_str); - if (!ret) { - if (strcmp (xlname, value_str) == 0) { - ret = volgen_graph_set_options_generic (graph, - set_dict, volname, - &debugxl_option_handler); - if (ret) - goto out; - } - } - - ret = dict_get_str (set_dict, "debug.error-gen", &value_str); - if (!ret) { - if (strcmp (xlname, value_str) == 0) { - ret = volgen_graph_set_options_generic (graph, - set_dict, volname, - &debugxl_option_handler); - if (ret) - goto out; + while (xls[i]) { + ret = dict_get_str (set_dict, xls[i], &value_str); + if (!ret) { + if (strcmp (xlname, value_str) == 0) { + ret = volgen_graph_set_options_generic (graph, + set_dict, volname, + &debugxl_option_handler); + if (ret) + goto out; + } } + i++; } - ret = 0; out: diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.h b/xlators/mgmt/glusterd/src/glusterd-volgen.h index 6c79c776436..aa4359c2589 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.h +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.h @@ -163,8 +163,8 @@ struct volgen_brick_xlator { /* function that builds a xlator */ brick_xlator_builder builder; /* debug key for a xlator that - * gets used for adding debug translators like trace, error-gen - * before this xlator */ + * gets used for adding debug translators like trace, error-gen, + * delay-gen before this xlator */ char *dbg_key; }; typedef struct volgen_brick_xlator volgen_brick_xlator_t; diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index 3dcfafb4a3e..2c4dc413b0d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -3526,6 +3526,29 @@ struct volopt_map_entry glusterd_volopt_map[] = { .op_version = GD_OP_VERSION_3_12_0, .validate_fn = validate_boolean }, + { .key = "debug.delay-gen", + .voltype = "debug/delay-gen", + .option = "!debug", + .value = "off", + .type = NO_DOC, + .op_version = GD_OP_VERSION_4_0_0, + .flags = VOLOPT_FLAG_XLATOR_OPT + }, + { .key = "delay-gen.delay-percentage", + .voltype = "debug/delay-gen", + .type = NO_DOC, + .op_version = GD_OP_VERSION_4_0_0, + }, + { .key = "delay-gen.delay-duration", + .voltype = "debug/delay-gen", + .type = NO_DOC, + .op_version = GD_OP_VERSION_4_0_0, + }, + { .key = "delay-gen.enable", + .voltype = "debug/delay-gen", + .type = NO_DOC, + .op_version = GD_OP_VERSION_4_0_0, + }, { .key = NULL } }; |