summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt
diff options
context:
space:
mode:
authorSachin Pandit <spandit@redhat.com>2014-12-19 03:24:23 +0530
committerRaghavendra Bhat <raghavendra@redhat.com>2014-12-24 03:36:04 -0800
commit7d89b78a56f1eed261a56dcb671ba8b804c2bf5a (patch)
tree0017d1a6fc66b5593bb6b0d0c615ec2b05d061af /xlators/mgmt
parent190037c10ce0e5e56e67a248e10f86538e3cdfc4 (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>
Diffstat (limited to 'xlators/mgmt')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c34
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.h3
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