summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/basic/uss.t8
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c17
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volgen.c5
3 files changed, 23 insertions, 7 deletions
diff --git a/tests/basic/uss.t b/tests/basic/uss.t
index f86c19d981e..aabe00cd880 100644
--- a/tests/basic/uss.t
+++ b/tests/basic/uss.t
@@ -13,6 +13,7 @@ function check_readonly()
}
cleanup;
+TESTS_EXPECTED_IN_LOOP=10
TEST init_n_bricks 3;
TEST setup_lvm 3;
@@ -50,6 +51,13 @@ for i in {11..20} ; do echo "foo" > $M0/dir2/foo$i ; done
TEST $CLI snapshot create snap4 $V0;
+## Test that features.uss takes only options enable/disable and throw error for
+## any other argument.
+for i in {1..10}; do
+ RANDOM_STRING=`cat /dev/urandom | tr -dc 'a-zA-Z' | fold -w 8 | head -n 1`
+ TEST_IN_LOOP ! $CLI volume set $V0 features.uss $RANDOM_STRING
+done
+
TEST $CLI volume set $V0 features.uss enable;
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index b5128aa6426..6c83446e9b1 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -13117,14 +13117,12 @@ glusterd_is_snapd_enabled (glusterd_volinfo_t *volinfo)
ret = dict_get_str_boolean (volinfo->dict, "features.uss", -2);
if (ret == -2) {
gf_log (this->name, GF_LOG_DEBUG, "Key features.uss not "
- "present in the volinfo dict");
+ "present in the dict for volume %s", volinfo->volname);
ret = 0;
} else if (ret == -1) {
- gf_log (this->name, GF_LOG_ERROR, "Failed to get "
- "'features.uss' from %s volume dict",
- volinfo->volname);
- ret = 0;
+ gf_log (this->name, GF_LOG_ERROR, "Failed to get 'features.uss'"
+ " from dict for volume %s", volinfo->volname);
}
return ret;
@@ -13462,7 +13460,14 @@ glusterd_handle_snapd_option (glusterd_volinfo_t *volinfo)
if (volinfo->is_snap_volume)
return 0;
- if (glusterd_is_snapd_enabled (volinfo)) {
+ ret = glusterd_is_snapd_enabled (volinfo);
+ if (ret == -1) {
+ gf_log (this->name, GF_LOG_ERROR, "Failed to read volume "
+ "options");
+ goto out;
+ }
+
+ if (ret) {
if (!glusterd_is_volume_started (volinfo)) {
if (glusterd_is_snapd_running (volinfo)) {
ret = glusterd_snapd_stop (volinfo);
diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
index 476e3b0c1d9..22af263547b 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
@@ -2876,7 +2876,10 @@ client_graph_builder (volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
if (ret)
goto out;
- if (!volinfo->is_snap_volume && glusterd_is_snapd_enabled (volinfo)) {
+ ret = dict_get_str_boolean (set_dict, "features.uss", _gf_false);
+ if (ret == -1)
+ goto out;
+ if (ret && !volinfo->is_snap_volume) {
ret = volgen_graph_build_snapview_client
(graph, volinfo, volname, set_dict);
if (ret == -1)