From 7fcdcebd81fd38cbb59cf9a890e44ac01b08c3ee Mon Sep 17 00:00:00 2001 From: Emmanuel Dreyfus Date: Mon, 21 May 2012 18:38:11 +0200 Subject: Fix volume create Improve Krishnan Parthasarathi's patch, which fixed situation where a brick mount point did not had EA enabled. This fixes an incorrect assumption that dirname(3) returns the same address it was given as argument. GNU dirname(3) does it, BSD dirname(3) does not. Also makes the code a bit easier to read. Change-Id: I031fda5b9359a64eefb2279e640e73a416e58d90 BUG: 812214 Signed-off-by: Emmanuel Dreyfus Reviewed-on: http://review.gluster.com/3380 Tested-by: Gluster Build System Reviewed-by: Jeff Darcy Reviewed-by: Anand Avati --- xlators/mgmt/glusterd/src/glusterd-utils.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 987244e75..2b5c1c6ca 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -4388,17 +4388,27 @@ glusterd_is_uuid_present (char *path, char *xattr, gf_boolean_t *present) goto out; ret = sys_lgetxattr (path, xattr, &uid, 16); - if (ret < 0 && errno != ENODATA) { - goto out; - } else if (ret >= 0) { + if (ret >= 0) { *present = _gf_true; - - } else { - *present = _gf_false; + ret = 0; + goto out; + } + + switch (errno) { +#if defined(ENODATA) + case ENODATA: /* FALLTHROUGH */ +#endif +#if defined(ENOATTR) && (ENOATTR != ENODATA) + case ENOATTR: /* FALLTHROUGH */ +#endif + case ENOTSUP: + *present = _gf_false; + ret = 0; + break; + default: + break; } - - ret = 0; out: return ret; } @@ -4433,7 +4443,7 @@ glusterd_is_path_in_use (char *path, gf_boolean_t *in_use, char **op_errstr) if (used) break; - curdir = dirname (dir); + curdir = dirname (curdir); if (!strcmp (curdir, ".")) goto out; -- cgit