From d497922a725da0690e5c5c75911e59d30c5d53a1 Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Fri, 25 May 2012 15:02:47 +0530 Subject: glusterd: Cherry-picked e44ac01b08c3ee from master branch 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. Signed-off-by: Emmanuel Dreyfus Change-Id: Ie5106b0ee7bda126666cd0ec9c827c895ec035c9 BUG: 812214 Signed-off-by: Krishnan Parthasarathi Reviewed-on: http://review.gluster.com/3441 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- xlators/mgmt/glusterd/src/glusterd-utils.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index ab72d85149a..b75fad18347 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -4385,17 +4385,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; } - ret = 0; + 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; + } out: return ret; } @@ -4430,7 +4440,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