From f3a6752cc455676d6e1f946b513636d991825da8 Mon Sep 17 00:00:00 2001 From: Rajesh Amaravathi Date: Tue, 27 Sep 2011 16:25:58 +0530 Subject: glusterd: allow non-related directories with same prefix Earlier, using two directories with names like /test and /test1 failed volume creation. This patch sees that the next character is checked to be '/' to conclude that they are recursive. Eg: /test and /test2 succeed, while /test and /test/alpha does not. Change-Id: Idee1e15b7e0a0d0965d1aea910b52f1da286d64b BUG: 3645 Reviewed-on: http://review.gluster.com/511 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi Reviewed-by: Krishnan Parthasarathi --- xlators/mgmt/glusterd/src/glusterd-brick-ops.c | 2 +- xlators/mgmt/glusterd/src/glusterd-utils.c | 11 ++++++++--- xlators/mgmt/glusterd/src/glusterd-volume-ops.c | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index 75087d547..c61d18f66 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -202,7 +202,7 @@ brick_val: if (!ret) { ret = -1; snprintf (err_str, sizeof (err_str), "Brick: %s:%s, %s" - " one of the arguments contain the other", + " one of the bricks contain the other", tmpbrkinfo->hostname, tmpbrkinfo->path, brick); goto out; } diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index e27d2209f..d2305df1e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -756,14 +756,19 @@ glusterd_volume_brickinfo_get (uuid_t uuid, char *hostname, char *path, gf_log (THIS->name, GF_LOG_ERROR, "given path %s lies within brick %s", path, brickiter->path); + *brickinfo = brickiter; + ret = 0; + break; } else if (path[smaller_path] == '/') { gf_log (THIS->name, GF_LOG_ERROR, "brick %s is a part of %s", brickiter->path, path); + *brickinfo = brickiter; + ret = 0; + break; + } else { + ret = -1; } - *brickinfo = brickiter; - ret = 0; - break; } } diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c index a335a98cd..6888fd9d5 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c @@ -180,7 +180,7 @@ glusterd_handle_create_volume (rpcsvc_request_t *req) if (!ret) { ret = -1; snprintf (err_str, sizeof (err_str), "Brick: %s:%s, %s" - " one of the arguments contain the other", + " one of the bricks contain the other", tmpbrkinfo->hostname, tmpbrkinfo->path, brick); goto out; } -- cgit