diff options
| -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;  | 
