diff options
| -rw-r--r-- | tests/bugs/bitrot/1209751-bitrot-scrub-tunable-reset.t | 46 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-bitrot.c | 12 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-set.c | 17 | 
3 files changed, 72 insertions, 3 deletions
diff --git a/tests/bugs/bitrot/1209751-bitrot-scrub-tunable-reset.t b/tests/bugs/bitrot/1209751-bitrot-scrub-tunable-reset.t new file mode 100644 index 00000000000..4f98174c16f --- /dev/null +++ b/tests/bugs/bitrot/1209751-bitrot-scrub-tunable-reset.t @@ -0,0 +1,46 @@ +#!/bin/bash + +## Test case for bitrot +## On restarting glusterd should not reset bitrot tunable value to default + + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../cluster.rc + +cleanup; + + +## Start glusterd +TEST glusterd; +TEST pidof glusterd; + +## Lets create and start the volume +TEST $CLI volume create $V0 $H0:$B0/${V0}0 $H0:$B0/${V0}1 +TEST $CLI volume start $V0 + +## Enable bitrot on volume $V0 +TEST $CLI volume bitrot $V0 enable + +## Set bitrot scrub-throttle value to lazy +TEST $CLI volume bitrot $V0 scrub-throttle lazy + +## Set bitrot scrub-frequency value to monthly +TEST $CLI volume bitrot $V0 scrub-frequency monthly + +## Set bitrot scrubber to pause state +TEST $CLI volume bitrot $V0 scrub pause + +## restart glusterd process +pkill glusterd; +TEST glusterd; +TEST pidof glusterd; + +## All the bitrot scrub tunable value should come back again. +EXPECT_WITHIN $PROCESS_UP_TIMEOUT 'Started' volinfo_field $V0 'Status'; +EXPECT 'lazy' volinfo_field $V0 'features.scrub-throttle'; +EXPECT 'monthly' volinfo_field $V0 'features.scrub-freq'; +EXPECT 'pause' volinfo_field $V0 'features.scrub'; +EXPECT 'on' volinfo_field $V0 'features.bitrot'; + +cleanup; diff --git a/xlators/mgmt/glusterd/src/glusterd-bitrot.c b/xlators/mgmt/glusterd/src/glusterd-bitrot.c index 083a714f596..13e08962c7a 100644 --- a/xlators/mgmt/glusterd/src/glusterd-bitrot.c +++ b/xlators/mgmt/glusterd/src/glusterd-bitrot.c @@ -396,18 +396,24 @@ glusterd_op_bitrot (dict_t *dict, char **op_errstr, dict_t *rsp_dict)                  ret = glusterd_bitrot_scrub_throttle (volinfo, dict,                                                        "features.scrub-throttle",                                                        op_errstr); -                goto out; +                if (ret) +                        goto out; +                break;          case GF_BITROT_OPTION_TYPE_SCRUB_FREQ:                  ret = glusterd_bitrot_scrub_freq (volinfo, dict,                                                    "features.scrub-freq",                                                    op_errstr); -                goto out; +                if (ret) +                        goto out; +                break;          case GF_BITROT_OPTION_TYPE_SCRUB:                  ret = glusterd_bitrot_scrub (volinfo, dict, "features.scrub",                                               op_errstr); -                goto out; +                if (ret) +                        goto out; +                break;          default:                  gf_asprintf (op_errstr, "Bitrot command failed. Invalid " diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index 22cac46e876..4c3d8518c6e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -1782,6 +1782,23 @@ struct volopt_map_entry glusterd_volopt_map[] = {            .op_version = GD_OP_VERSION_3_7_0,            .type       = NO_DOC,          }, +        { .key        = "features.scrub-throttle", +          .voltype    = "features/bitrot", +          .value      = "normal", +          .op_version = GD_OP_VERSION_3_7_0, +          .type       = NO_DOC, +        }, +        { .key        = "features.scrub-freq", +          .voltype    = "features/bitrot", +          .value      = "monthly", +          .op_version = GD_OP_VERSION_3_7_0, +          .type       = NO_DOC, +        }, +        { .key        = "features.scrub", +          .voltype    = "features/bitrot", +          .op_version = GD_OP_VERSION_3_7_0, +          .type       = NO_DOC, +        },          /* Upcall translator options */          { .key         = "features.cache-invalidation",            .voltype     = "features/upcall",  | 
