diff options
| author | Sachin Pandit <spandit@redhat.com> | 2014-12-19 03:24:23 +0530 | 
|---|---|---|
| committer | Raghavendra Bhat <raghavendra@redhat.com> | 2014-12-24 03:36:04 -0800 | 
| commit | 7d89b78a56f1eed261a56dcb671ba8b804c2bf5a (patch) | |
| tree | 0017d1a6fc66b5593bb6b0d0c615ec2b05d061af | |
| parent | 190037c10ce0e5e56e67a248e10f86538e3cdfc4 (diff) | |
glusterd/snapshot: Don't append nouuid mount option for snapshot brick if original brick already has this option
Change-Id: I2841d2ac371a3e9505f6061f35d1d447946c0bae
BUG: 1175732
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/8526
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
Signed-off-by: Sachin Pandit <spandit@redhat.com>
Reviewed-on: http://review.gluster.org/9303
Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 34 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.h | 3 | 
2 files changed, 36 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 7252e50113b..948bd36d869 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -12086,7 +12086,8 @@ glusterd_mount_lvm_snapshot (glusterd_brickinfo_t *brickinfo,           * Therefore to mount such a snapshot in XFS we need to pass nouuid           * option           */ -        if (!strcmp (brickinfo->fstype, "xfs")) { +        if (!strcmp (brickinfo->fstype, "xfs") && +            !mntopts_exists (mnt_opts, "nouuid")) {                  if ( strlen (mnt_opts) > 0 )                          strcat (mnt_opts, ",");                  strcat (mnt_opts, "nouuid"); @@ -13653,3 +13654,34 @@ glusterd_have_peers ()          return !list_empty (&conf->peers);  } + +gf_boolean_t +mntopts_exists (const char *str, const char *opts) +{ +        char          *dup_val     = NULL; +        char          *savetok     = NULL; +        char          *token       = NULL; +        gf_boolean_t   exists      = _gf_false; + +        GF_ASSERT (opts); + +        if (!str || !strlen(str)) +                goto out; + +        dup_val = gf_strdup (str); +        if (!dup_val) +                goto out; + +        token = strtok_r (dup_val, ",", &savetok); +        while (token) { +                if (!strcmp (token, opts)) { +                        exists = _gf_true; +                        goto out; +                } +                token = strtok_r (NULL, ",", &savetok); +        } + +out: +        GF_FREE (dup_val); +        return exists; +} diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index 987f00cc91a..2fe926c5fc9 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -903,4 +903,7 @@ gd_get_snap_conf_values_if_present (dict_t *opts, uint64_t *sys_hard_limit,  gf_boolean_t  glusterd_have_peers (); + +gf_boolean_t +mntopts_exists (const char *str, const char *opts);  #endif  | 
