diff options
-rw-r--r-- | libglusterfs/src/globals.h | 4 | ||||
-rw-r--r-- | tests/bugs/replicate/bug-1297695.t | 2 | ||||
-rw-r--r-- | tests/bugs/replicate/bug-821056.t | 2 | ||||
-rw-r--r-- | tests/bugs/replicate/bug-921231.t | 4 | ||||
-rw-r--r-- | tests/bugs/replicate/bug-966018.t | 2 | ||||
-rw-r--r-- | tests/bugs/replicate/bug-976800.t | 2 | ||||
-rwxr-xr-x | tests/bugs/replicate/bug-979365.t | 2 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec-common.c | 9 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec.c | 9 | ||||
-rw-r--r-- | xlators/cluster/ec/src/ec.h | 1 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-set.c | 5 |
11 files changed, 32 insertions, 10 deletions
diff --git a/libglusterfs/src/globals.h b/libglusterfs/src/globals.h index be6a06bbafb..9d2ca8d2241 100644 --- a/libglusterfs/src/globals.h +++ b/libglusterfs/src/globals.h @@ -61,6 +61,10 @@ #define GD_OP_VERSION_3_7_7 30707 /* Op-version for GlusterFS 3.7.7 */ +/* Op-version was not bumped up for 3.7.8 */ + +#define GD_OP_VERSION_3_7_10 30710 /* Op-version for GlusterFS 3.7.10 */ + #define GD_OP_VER_PERSISTENT_AFR_XATTRS GD_OP_VERSION_3_6_0 #include "xlator.h" diff --git a/tests/bugs/replicate/bug-1297695.t b/tests/bugs/replicate/bug-1297695.t index e0f431684e8..d5c1a214fe2 100644 --- a/tests/bugs/replicate/bug-1297695.t +++ b/tests/bugs/replicate/bug-1297695.t @@ -13,7 +13,7 @@ TEST glusterd TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}0 $H0:$B0/${V0}1 -TEST $CLI volume set $V0 eager-lock on +TEST $CLI volume set $V0 cluster.eager-lock on TEST $CLI volume set $V0 post-op-delay-secs 3 TEST $CLI volume set $V0 cluster.entry-self-heal off TEST $CLI volume set $V0 cluster.data-self-heal off diff --git a/tests/bugs/replicate/bug-821056.t b/tests/bugs/replicate/bug-821056.t index 02a9c78b6f0..a1633004404 100644 --- a/tests/bugs/replicate/bug-821056.t +++ b/tests/bugs/replicate/bug-821056.t @@ -8,7 +8,7 @@ TEST glusterd TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1} -TEST $CLI volume set $V0 eager-lock off +TEST $CLI volume set $V0 cluster.eager-lock off TEST $CLI volume set $V0 cluster.self-heal-daemon off TEST $CLI volume set $V0 performance.quick-read off TEST $CLI volume set $V0 performance.open-behind off diff --git a/tests/bugs/replicate/bug-921231.t b/tests/bugs/replicate/bug-921231.t index 93c642beb1e..81504612f63 100644 --- a/tests/bugs/replicate/bug-921231.t +++ b/tests/bugs/replicate/bug-921231.t @@ -3,7 +3,7 @@ . $(dirname $0)/../../include.rc . $(dirname $0)/../../volume.rc -# This test writes to same file with 2 fds and tests that eager-lock is not +# This test writes to same file with 2 fds and tests that cluster.eager-lock is not # causing extra delay because of post-op-delay-secs cleanup; @@ -14,7 +14,7 @@ function write_to_file { TEST glusterd TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}0 $H0:$B0/${V0}1 -TEST $CLI volume set $V0 eager-lock on +TEST $CLI volume set $V0 cluster.eager-lock on TEST $CLI volume set $V0 post-op-delay-secs 3 TEST $CLI volume set $V0 client-log-level DEBUG TEST $CLI volume start $V0 diff --git a/tests/bugs/replicate/bug-966018.t b/tests/bugs/replicate/bug-966018.t index be4d0b97b88..ec3beb15d56 100644 --- a/tests/bugs/replicate/bug-966018.t +++ b/tests/bugs/replicate/bug-966018.t @@ -4,7 +4,7 @@ . $(dirname $0)/../../volume.rc . $(dirname $0)/../../nfs.rc -#This tests if eager-lock blocks metadata operations on nfs/fuse mounts. +#This tests if cluster.eager-lock blocks metadata operations on nfs/fuse mounts. #If it is not woken up, INODELK from the next command waits #for post-op-delay secs. diff --git a/tests/bugs/replicate/bug-976800.t b/tests/bugs/replicate/bug-976800.t index 8311734ab24..27f8b27619e 100644 --- a/tests/bugs/replicate/bug-976800.t +++ b/tests/bugs/replicate/bug-976800.t @@ -20,7 +20,7 @@ TEST glusterd TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1} TEST $CLI volume set $V0 ensure-durability off -TEST $CLI volume set $V0 eager-lock off +TEST $CLI volume set $V0 cluster.eager-lock off TEST $CLI volume set $V0 flush-behind off TEST $CLI volume start $V0 TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 --attribute-timeout=0 --entry-timeout=0 diff --git a/tests/bugs/replicate/bug-979365.t b/tests/bugs/replicate/bug-979365.t index b1396c23348..c09c7d51772 100755 --- a/tests/bugs/replicate/bug-979365.t +++ b/tests/bugs/replicate/bug-979365.t @@ -15,7 +15,7 @@ TEST glusterd TEST pidof glusterd TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1} TEST $CLI volume set $V0 ensure-durability on -TEST $CLI volume set $V0 eager-lock off +TEST $CLI volume set $V0 cluster.eager-lock off TEST $CLI volume start $V0 TEST $CLI volume profile $V0 start TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 diff --git a/xlators/cluster/ec/src/ec-common.c b/xlators/cluster/ec/src/ec-common.c index 8c6ff78c27e..de0e597d124 100644 --- a/xlators/cluster/ec/src/ec-common.c +++ b/xlators/cluster/ec/src/ec-common.c @@ -2034,11 +2034,13 @@ void ec_flush_size_version(ec_fop_data_t *fop) void ec_lock_reuse(ec_fop_data_t *fop) { ec_cbk_data_t *cbk; + ec_t *ec = NULL; int32_t i, count; gf_boolean_t release = _gf_false; - + ec = fop->xl->private; cbk = fop->answer; - if (cbk != NULL) { + + if (ec->eager_lock && cbk != NULL) { if (cbk->xdata != NULL) { if ((dict_get_int32(cbk->xdata, GLUSTERFS_INODELK_COUNT, &count) == 0) && (count > 1)) { @@ -2050,7 +2052,8 @@ void ec_lock_reuse(ec_fop_data_t *fop) } } } else { - /* If we haven't get an answer with enough quorum, we always release + /* If eager lock is disabled or If we haven't get + * an answer with enough quorum, we always release * the lock. */ release = _gf_true; } diff --git a/xlators/cluster/ec/src/ec.c b/xlators/cluster/ec/src/ec.c index e8acc2303b9..3133962cb4f 100644 --- a/xlators/cluster/ec/src/ec.c +++ b/xlators/cluster/ec/src/ec.c @@ -261,6 +261,8 @@ reconfigure (xlator_t *this, dict_t *options) failed); GF_OPTION_RECONF ("iam-self-heal-daemon", ec->shd.iamshd, options, bool, failed); + GF_OPTION_RECONF ("eager-lock", ec->eager_lock, options, + bool, failed); GF_OPTION_RECONF ("background-heals", background_heals, options, uint32, failed); GF_OPTION_RECONF ("heal-wait-qlength", heal_wait_qlen, options, @@ -599,6 +601,7 @@ init (xlator_t *this) ec_method_initialize(); GF_OPTION_INIT ("self-heal-daemon", ec->shd.enabled, bool, failed); GF_OPTION_INIT ("iam-self-heal-daemon", ec->shd.iamshd, bool, failed); + GF_OPTION_INIT ("eager-lock", ec->eager_lock, bool, failed); GF_OPTION_INIT ("background-heals", ec->background_heals, uint32, failed); GF_OPTION_INIT ("heal-wait-qlength", ec->heal_wait_qlen, uint32, failed); ec_configure_background_heal_opts (ec, ec->background_heals, @@ -1309,6 +1312,12 @@ struct volume_options options[] = "translator is running as part of self-heal-daemon " "or not." }, + { .key = {"eager-lock"}, + .type = GF_OPTION_TYPE_BOOL, + .default_value = "on", + .description = "This option will enable/diable eager lock for" + "disperse volume " + }, { .key = {"background-heals"}, .type = GF_OPTION_TYPE_INT, .min = 0,/*Disabling background heals*/ diff --git a/xlators/cluster/ec/src/ec.h b/xlators/cluster/ec/src/ec.h index 480125e35d3..49af5c2daf2 100644 --- a/xlators/cluster/ec/src/ec.h +++ b/xlators/cluster/ec/src/ec.h @@ -54,6 +54,7 @@ struct _ec gf_lock_t lock; gf_timer_t * timer; gf_boolean_t shutdown; + gf_boolean_t eager_lock; uint32_t background_heals; uint32_t heal_wait_qlen; struct list_head pending_fops; diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index b8821680d4c..bbfe2d387d2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -1080,6 +1080,11 @@ struct volopt_map_entry glusterd_volopt_map[] = { .op_version = 1, .flags = OPT_FLAG_CLIENT_OPT }, + { .key = "disperse.eager-lock", + .voltype = "cluster/disperse", + .op_version = GD_OP_VERSION_3_7_10, + .flags = OPT_FLAG_CLIENT_OPT + }, { .key = "cluster.quorum-type", .voltype = "cluster/replicate", .option = "quorum-type", |