diff options
| author | Krishnan Parthasarathi <kparthas@redhat.com> | 2013-05-09 18:07:59 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2013-05-15 22:22:24 -0700 | 
| commit | f8d77623ff49ebc60686dcb17978175e861b6634 (patch) | |
| tree | b4163eab69c6957d865ba678892d8b2093b3e7f1 | |
| parent | 4c0b149d8e7c574186a1ccefd9c74b79f8a06267 (diff) | |
glusterd: Start bricks on glusterd startup, only once
The restarting of bricks has been deffered until the cluster 'stabilizes'
itself volumes' view. Since glusterd_spawn_daemons is executed everytime
a peer 'joins' the cluster, it may inadvertently restart bricks that
were taken offline for say, maintenance purposes. This fix avoids that.
Change-Id: Ic2a0a9657eb95c82d03cf5eb893322cf55c44eba
BUG: 960190
Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/4973
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-sm.c | 2 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 6 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.c | 3 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.h | 1 | 
4 files changed, 7 insertions, 5 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-sm.c b/xlators/mgmt/glusterd/src/glusterd-sm.c index 47e559e748b..ba36b7f458a 100644 --- a/xlators/mgmt/glusterd/src/glusterd-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-sm.c @@ -1092,7 +1092,7 @@ out:               * the functions spawn process(es) only if they are not started yet.               *               * */ -                glusterd_spawn_daemons ((void*) _gf_false); +                glusterd_spawn_daemons (NULL);                  glusterd_do_quorum_action ();          }          return ret; diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 950b5554d7a..7970777aefd 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -2416,10 +2416,12 @@ int  glusterd_spawn_daemons (void *opaque)  {          glusterd_conf_t *conf = THIS->private; -        gf_boolean_t    start_bricks = (long) opaque; +        gf_boolean_t    start_bricks = !conf->restart_done; -        if (start_bricks) +        if (start_bricks) {                  glusterd_restart_bricks (conf); +                conf->restart_done = _gf_true; +        }          glusterd_restart_gsyncds (conf);          glusterd_restart_rebalance (conf);          return 0; diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c index 41a1cb368f8..3b419d2e052 100644 --- a/xlators/mgmt/glusterd/src/glusterd.c +++ b/xlators/mgmt/glusterd/src/glusterd.c @@ -1154,8 +1154,7 @@ init (xlator_t *this)           * time (this) glusterd was up.*/          if (list_empty (&conf->peers)) { -                glusterd_launch_synctask (glusterd_spawn_daemons, -                                          (void*) _gf_true); +                glusterd_launch_synctask (glusterd_spawn_daemons, NULL);          }          ret = glusterd_options_init (this);          if (ret < 0) diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index 49e7e727a89..9271a85439d 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -152,6 +152,7 @@ typedef struct {          gf_boolean_t   pending_quorum_action;          dict_t             *opts;          synclock_t      big_lock; +        gf_boolean_t    restart_done;  } glusterd_conf_t;  | 
