diff options
| -rw-r--r-- | tests/bugs/glusterd/bug-1266818-shared-storage-disable.t | 36 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-messages.h | 2 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 28 | 
3 files changed, 60 insertions, 6 deletions
diff --git a/tests/bugs/glusterd/bug-1266818-shared-storage-disable.t b/tests/bugs/glusterd/bug-1266818-shared-storage-disable.t new file mode 100644 index 00000000000..a9ccf1b8954 --- /dev/null +++ b/tests/bugs/glusterd/bug-1266818-shared-storage-disable.t @@ -0,0 +1,36 @@ +#!/bin/bash + +## Test case for BZ 1266818; +## Disabling enable-shared-storage option should not delete user created +## volume with name glusterd_shared_storage + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../cluster.rc + +cleanup; + +## Start a 2 node virtual cluster +TEST launch_cluster 2; + +## Peer probe server 2 from server 1 cli +TEST $CLI_1 peer probe $H2; + +EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count + +## Creating a volume with name glusterd_shared_storage +TEST $CLI_1 volume create glusterd_shared_storage  $H1:$B1/${V0}0 $H2:$B1/${V0}1 + +## Disabling enable-shared-storage should not succeed and should not delete the +## user created volume with name "glusterd_shared_storage" +TEST ! $CLI_1 volume all enable-shared-storage disable + +## Volume with name should exist +TEST $CLI_1 volume info glusterd_shared_storage + +cleanup; + + + + + diff --git a/xlators/mgmt/glusterd/src/glusterd-messages.h b/xlators/mgmt/glusterd/src/glusterd-messages.h index 9b3f5178bde..8dcbcdb2cd2 100644 --- a/xlators/mgmt/glusterd/src/glusterd-messages.h +++ b/xlators/mgmt/glusterd/src/glusterd-messages.h @@ -46,7 +46,7 @@  #define GLUSTERD_COMP_BASE      GLFS_MSGID_GLUSTERD -#define GLFS_NUM_MESSAGES       568 +#define GLFS_NUM_MESSAGES       573  #define GLFS_MSGID_END          (GLUSTERD_COMP_BASE + GLFS_NUM_MESSAGES + 1)  /* Messaged with message IDs */ diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 8c39c304366..437690faede 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -778,13 +778,19 @@ out:  static int  glusterd_validate_shared_storage (char *key, char *value, char *errstr)  { -        int32_t       ret      = -1; -        int32_t       exists   = -1; -        int32_t       count    = -1; -        xlator_t     *this     = NULL; +        int32_t            ret      = -1; +        int32_t            exists   = -1; +        int32_t            count    = -1; +        char              *op       = NULL; +        xlator_t          *this     = NULL; +        glusterd_conf_t   *conf     = NULL;          this = THIS;          GF_VALIDATE_OR_GOTO ("glusterd", this, out); + +        conf = this->private; +        GF_VALIDATE_OR_GOTO (this->name, conf, out); +          GF_VALIDATE_OR_GOTO (this->name, key, out);          GF_VALIDATE_OR_GOTO (this->name, value, out);          GF_VALIDATE_OR_GOTO (this->name, errstr, out); @@ -806,7 +812,19 @@ glusterd_validate_shared_storage (char *key, char *value, char *errstr)                  goto out;          } -        if (strcmp (value, "enable")) { +        if (!strncmp (value, "disable", strlen ("disable"))) { +                ret = dict_get_str (conf->opts, GLUSTERD_SHARED_STORAGE_KEY, +                                                                           &op); +                if (ret || !strncmp (op, "disable", strlen ("disable"))) { +                        snprintf (errstr, PATH_MAX, "Shared storage volume " +                                  "does not exist. Please enable shared storage" +                                  " for creating shared storage volume."); +                        gf_msg (this->name, GF_LOG_ERROR, 0, +                                GD_MSG_SHARED_STORAGE_DOES_NOT_EXIST, "%s", +                                errstr); +                        ret = -1; +                        goto out; +                }                  goto out;          }  | 
