From 7d89b78a56f1eed261a56dcb671ba8b804c2bf5a Mon Sep 17 00:00:00 2001 From: Sachin Pandit Date: Fri, 19 Dec 2014 03:24:23 +0530 Subject: 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 Reviewed-on: http://review.gluster.org/8526 Tested-by: Gluster Build System Reviewed-by: Atin Mukherjee Reviewed-by: Krishnan Parthasarathi Tested-by: Krishnan Parthasarathi Signed-off-by: Sachin Pandit Reviewed-on: http://review.gluster.org/9303 Reviewed-by: Raghavendra Bhat --- xlators/mgmt/glusterd/src/glusterd-utils.c | 34 +++++++++++++++++++++++++++++- xlators/mgmt/glusterd/src/glusterd-utils.h | 3 +++ 2 files changed, 36 insertions(+), 1 deletion(-) 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 -- cgit