summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt
diff options
context:
space:
mode:
authorPranith K <pranithk@gluster.com>2010-10-20 01:20:59 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-10-24 21:13:53 -0700
commita9187b9609dacb017aff171c317cd5332ef64bd5 (patch)
tree2669dd41a548cbaea7250b98570bb5fba5382b57 /xlators/mgmt
parentdb61075a123008ebd94ab8ff00b984e484155654 (diff)
mgmt/glusterd: resolve the bricks before comparing uuid
Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 1985 (peer detach fails if bricks are not resolved) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1985
Diffstat (limited to 'xlators/mgmt')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-handler.c23
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c12
2 files changed, 27 insertions, 8 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c
index 51704b3d22c..9ef81a4a7dc 100644
--- a/xlators/mgmt/glusterd/src/glusterd-handler.c
+++ b/xlators/mgmt/glusterd/src/glusterd-handler.c
@@ -624,15 +624,23 @@ glusterd_handle_cli_deprobe (rpcsvc_request_t *req)
goto out;
}
- ret = glusterd_all_volume_cond_check (glusterd_friend_brick_belongs,
- -1, &uuid);
- if (ret) {
- op_errno = GF_DEPROBE_BRICK_EXIST;
- goto out;
+ if (!uuid_is_null (uuid)) {
+ ret = glusterd_all_volume_cond_check (
+ glusterd_friend_brick_belongs,
+ -1, &uuid);
+ if (ret) {
+ op_errno = GF_DEPROBE_BRICK_EXIST;
+ goto out;
+ }
}
- ret = glusterd_deprobe_begin (req, cli_req.hostname,
- cli_req.port, uuid);
+ if (!uuid_is_null (uuid)) {
+ ret = glusterd_deprobe_begin (req, cli_req.hostname,
+ cli_req.port, uuid);
+ } else {
+ ret = glusterd_deprobe_begin (req, cli_req.hostname,
+ cli_req.port, NULL);
+ }
gf_cmd_log ("peer deprobe", "on host %s:%d %s", cli_req.hostname,
cli_req.port, (ret) ? "FAILED" : "SUCCESS");
@@ -641,6 +649,7 @@ out:
ret = glusterd_xfer_cli_deprobe_resp (req, ret, op_errno,
cli_req.hostname);
}
+
if (cli_req.hostname)
free (cli_req.hostname);//malloced by xdr
return ret;
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 8c27036b5e8..7746ec49c23 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -1604,6 +1604,7 @@ glusterd_import_friend_volume (dict_t *vols, int count)
strcpy (brickinfo->path, path);
strcpy (brickinfo->hostname, hostname);
+ glusterd_resolve_brick (brickinfo);
list_add_tail (&brickinfo->brick_list, &volinfo->bricks);
@@ -2008,13 +2009,22 @@ int
glusterd_friend_brick_belongs (glusterd_volinfo_t *volinfo,
glusterd_brickinfo_t *brickinfo, void* uuid)
{
+ int ret = -1;
+
GF_ASSERT (volinfo);
GF_ASSERT (brickinfo);
GF_ASSERT (uuid);
+ if (uuid_is_null (brickinfo->uuid)) {
+ ret = glusterd_resolve_brick (brickinfo);
+ if (ret) {
+ GF_ASSERT (0);
+ goto out;
+ }
+ }
if (!uuid_compare (brickinfo->uuid, *((uuid_t *)uuid)))
return 0;
-
+out:
return -1;
}