diff options
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handshake.c | 18 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 9 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-server-quorum.c | 16 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c | 10 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 19 |
5 files changed, 62 insertions, 10 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handshake.c b/xlators/mgmt/glusterd/src/glusterd-handshake.c index 8dc7e265b49..319c99f65db 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handshake.c +++ b/xlators/mgmt/glusterd/src/glusterd-handshake.c @@ -703,6 +703,15 @@ glusterd_create_missed_snap (glusterd_missed_snap_info *missed_snapinfo, } brickinfo->snap_status = 0; + ret = glusterd_brick_start (snap_vol, brickinfo, _gf_false); + if (ret) { + gf_msg (this->name, GF_LOG_WARNING, 0, + GD_MSG_BRICK_DISCONNECTED, "starting the " + "brick %s:%s for the snap %s failed", + brickinfo->hostname, brickinfo->path, + snap->snapname); + goto out; + } ret = glusterd_store_volinfo (snap_vol, GLUSTERD_VOLINFO_VER_AC_NONE); if (ret) { @@ -713,15 +722,6 @@ glusterd_create_missed_snap (glusterd_missed_snap_info *missed_snapinfo, goto out; } - ret = glusterd_brick_start (snap_vol, brickinfo, _gf_false); - if (ret) { - gf_msg (this->name, GF_LOG_WARNING, 0, - GD_MSG_BRICK_DISCONNECTED, "starting the " - "brick %s:%s for the snap %s failed", - brickinfo->hostname, brickinfo->path, - snap->snapname); - goto out; - } out: if (device) GF_FREE (device); diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index f04cb2e7466..c53c1fbf08d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -2424,8 +2424,15 @@ glusterd_start_bricks (glusterd_volinfo_t *volinfo) brickinfo->path); goto out; } - } + } + ret = glusterd_store_volinfo (volinfo, GLUSTERD_VOLINFO_VER_AC_NONE); + if (ret) { + gf_msg (THIS->name, GF_LOG_ERROR, 0, GD_MSG_VOLINFO_STORE_FAIL, + "Failed to write volinfo for volume %s", + volinfo->volname); + goto out; + } ret = 0; out: return ret; diff --git a/xlators/mgmt/glusterd/src/glusterd-server-quorum.c b/xlators/mgmt/glusterd/src/glusterd-server-quorum.c index 468191cd27f..ae0243bad58 100644 --- a/xlators/mgmt/glusterd/src/glusterd-server-quorum.c +++ b/xlators/mgmt/glusterd/src/glusterd-server-quorum.c @@ -12,6 +12,7 @@ #include "glusterd-utils.h" #include "glusterd-messages.h" #include "glusterd-server-quorum.h" +#include "glusterd-store.h" #include "glusterd-syncop.h" #include "glusterd-op-sm.h" @@ -311,6 +312,7 @@ void glusterd_do_volume_quorum_action (xlator_t *this, glusterd_volinfo_t *volinfo, gf_boolean_t meets_quorum) { + int ret = -1; glusterd_brickinfo_t *brickinfo = NULL; gd_quorum_status_t quorum_status = NOT_APPLICABLE_QUORUM; gf_boolean_t follows_quorum = _gf_false; @@ -367,6 +369,20 @@ glusterd_do_volume_quorum_action (xlator_t *this, glusterd_volinfo_t *volinfo, glusterd_brick_start (volinfo, brickinfo, _gf_false); } volinfo->quorum_status = quorum_status; + if (quorum_status == MEETS_QUORUM) { + /* bricks might have been restarted and so as the port change + * might have happened + */ + ret = glusterd_store_volinfo (volinfo, + GLUSTERD_VOLINFO_VER_AC_NONE); + if (ret) { + gf_msg (this->name, GF_LOG_ERROR, 0, + GD_MSG_VOLINFO_STORE_FAIL, + "Failed to write volinfo for volume %s", + volinfo->volname); + goto out; + } + } out: return; } diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c index f1a2bbb4c35..fc31dd2820b 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot-utils.c @@ -1694,6 +1694,16 @@ glusterd_import_friend_snap (dict_t *peer_data, int32_t snap_count, } (void) glusterd_start_bricks (snap_vol); + ret = glusterd_store_volinfo + (snap_vol, + GLUSTERD_VOLINFO_VER_AC_NONE); + if (ret) { + gf_msg (this->name, GF_LOG_ERROR, 0, + GD_MSG_VOLINFO_STORE_FAIL, "Failed to " + "write volinfo for volume %s", + snap_vol->volname); + goto out; + } } else { (void) glusterd_stop_bricks(snap_vol); ret = glusterd_snap_unmount(this, snap_vol); diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 52ebbc2638f..a91f8dd7138 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -6023,6 +6023,15 @@ glusterd_restart_bricks (glusterd_conf_t *conf) glusterd_brick_start (volinfo, brickinfo, _gf_false); } + ret = glusterd_store_volinfo + (volinfo, GLUSTERD_VOLINFO_VER_AC_NONE); + if (ret) { + gf_msg (this->name, GF_LOG_ERROR, 0, + GD_MSG_VOLINFO_STORE_FAIL, "Failed to " + "write volinfo for volume %s", + volinfo->volname); + goto out; + } } } @@ -6054,6 +6063,16 @@ glusterd_restart_bricks (glusterd_conf_t *conf) glusterd_brick_start (volinfo, brickinfo, _gf_false); } + ret = glusterd_store_volinfo + (volinfo, GLUSTERD_VOLINFO_VER_AC_NONE); + if (ret) { + gf_msg (this->name, GF_LOG_ERROR, 0, + GD_MSG_VOLINFO_STORE_FAIL, "Failed to " + "write volinfo for volume %s", + volinfo->volname); + goto out; + } + } } ret = 0; |