summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-utils.c
diff options
context:
space:
mode:
authorAmar Tumballi <amarts@redhat.com>2012-10-23 22:41:41 +0530
committerAnand Avati <avati@redhat.com>2012-10-24 09:49:30 -0700
commit0d868525d2d6e33761842e0e134eb59475c6c2bb (patch)
tree9ce9c92afef94c79b28fe2492f87dd51e3fe42c9 /xlators/mgmt/glusterd/src/glusterd-utils.c
parent8952b2729d7d554ac435a5057f3c758bfe95a2bb (diff)
glusterd: fix for remove-brick on just created/stopped volumes
in a fix to avoid race between stopping the brick and deleting it in remove-brick (15396f490d23c665d51a64a049679cb40472ab05) we moved delete of the brick inside stop volume, which was totally inside the 'if (volinfo->status == STARTED)' section. thus it made remove-brick of stopped/created volume as a failure. Signed-off-by: Amar Tumballi <amarts@redhat.com> BUG: 867252 Change-Id: Ie251e59a0b7ddb6965d8d48fb2a3bdb3bd11653d Reviewed-on: http://review.gluster.org/4127 Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com> Tested-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index d9f589b20e9..e55fc3ad79d 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -1400,20 +1400,23 @@ glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo,
if (del_brick)
list_del_init (&brickinfo->brick_list);
- (void) glusterd_brick_disconnect (brickinfo);
+ if (GLUSTERD_STATUS_STARTED == volinfo->status) {
+ (void) glusterd_brick_disconnect (brickinfo);
- GLUSTERD_GET_VOLUME_DIR (path, volinfo, priv);
- GLUSTERD_GET_BRICK_PIDFILE (pidfile, path, brickinfo->hostname,
- brickinfo->path);
+ GLUSTERD_GET_VOLUME_DIR (path, volinfo, priv);
+ GLUSTERD_GET_BRICK_PIDFILE (pidfile, path, brickinfo->hostname,
+ brickinfo->path);
- ret = glusterd_service_stop ("brick", pidfile, SIGTERM, _gf_false);
- if (ret == 0) {
- glusterd_set_brick_status (brickinfo, GF_BRICK_STOPPED);
- (void) glusterd_brick_unlink_socket_file (volinfo, brickinfo);
+ ret = glusterd_service_stop ("brick", pidfile, SIGTERM, _gf_false);
+ if (ret == 0) {
+ glusterd_set_brick_status (brickinfo, GF_BRICK_STOPPED);
+ (void) glusterd_brick_unlink_socket_file (volinfo, brickinfo);
+ }
}
if (del_brick)
glusterd_delete_brick (volinfo, brickinfo);
+
return ret;
}