diff options
| -rw-r--r-- | tests/basic/uss.t | 8 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 17 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volgen.c | 5 | 
3 files changed, 23 insertions, 7 deletions
diff --git a/tests/basic/uss.t b/tests/basic/uss.t index ff59a78ad87..a90919ca0f6 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 948bd36d869..938f4842533 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -13097,14 +13097,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; @@ -13442,7 +13440,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 f1e30e1ee82..151a0931a20 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -3002,7 +3002,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)  | 
