diff options
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-sm.c | 28 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 31 | 
2 files changed, 41 insertions, 18 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-sm.c b/xlators/mgmt/glusterd/src/glusterd-sm.c index d99662af584..1c342e8d8fb 100644 --- a/xlators/mgmt/glusterd/src/glusterd-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-sm.c @@ -609,17 +609,6 @@ glusterd_peer_detach_cleanup (glusterd_conf_t *priv)          cds_list_for_each_entry_safe (volinfo, tmp_volinfo, &priv->volumes,                                        vol_list) { -                /* Stop snapd daemon service if snapd daemon is running*/ -                if (!volinfo->is_snap_volume) { -                        svc = &(volinfo->snapd.svc); -                        ret = svc->stop (svc, SIGTERM); -                        if (ret) { -                                gf_msg (THIS->name, GF_LOG_ERROR, 0, -                                        GD_MSG_SVC_STOP_FAIL, "Failed to " -                                        "stop snapd daemon service."); -                        } -                } -                  /* The peer detach checks make sure that, at this point in the                   * detach process, there are only volumes contained completely                   * within or completely outside the detached peer. @@ -632,6 +621,17 @@ glusterd_peer_detach_cleanup (glusterd_conf_t *priv)                                  GD_MSG_STALE_VOL_DELETE_INFO,                                  "Deleting stale volume %s", volinfo->volname); +                        /*Stop snapd daemon service if snapd daemon is running*/ +                        if (!volinfo->is_snap_volume) { +                                svc = &(volinfo->snapd.svc); +                                ret = svc->stop (svc, SIGTERM); +                                if (ret) { +                                        gf_msg (THIS->name, GF_LOG_ERROR, 0, +                                                GD_MSG_SVC_STOP_FAIL, "Failed " +                                                "to stop snapd daemon service"); +                                } +                        } +                          ret = glusterd_cleanup_snaps_for_volume (volinfo);                          if (ret) {                                  gf_msg (THIS->name, GF_LOG_ERROR, 0, @@ -649,12 +649,12 @@ glusterd_peer_detach_cleanup (glusterd_conf_t *priv)                  }          } -        /* Stop all daemon services of Detaching node once  peer detached */ -        ret = glusterd_svcs_stop (); +        /*Reconfigure all daemon services upon peer detach*/ +        ret = glusterd_svcs_reconfigure ();          if (ret) {                  gf_msg (THIS->name, GF_LOG_ERROR, 0,                          GD_MSG_SVC_STOP_FAIL, -                        "Failed to stop all daemon services."); +                        "Failed to reconfigure all daemon services.");          }  } diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 461a6047dff..1c32201202a 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -6869,10 +6869,11 @@ glusterd_friend_contains_vol_bricks (glusterd_volinfo_t *volinfo,  int  glusterd_friend_remove_cleanup_vols (uuid_t uuid)  { -        int                     ret = -1; -        glusterd_conf_t         *priv = NULL; -        glusterd_volinfo_t      *volinfo = NULL; -        glusterd_volinfo_t      *tmp_volinfo = NULL; +        int                     ret           = -1; +        glusterd_conf_t         *priv         = NULL; +        glusterd_svc_t          *svc          = NULL; +        glusterd_volinfo_t      *volinfo      = NULL; +        glusterd_volinfo_t      *tmp_volinfo  = NULL;          priv = THIS->private;          GF_ASSERT (priv); @@ -6891,6 +6892,28 @@ glusterd_friend_remove_cleanup_vols (uuid_t uuid)                                  goto out;                          }                  } + +                if (!glusterd_friend_contains_vol_bricks (volinfo, +                                                          MY_UUID)) { +                        /*Stop snapd daemon service if snapd daemon is running*/ +                        if (!volinfo->is_snap_volume) { +                                svc = &(volinfo->snapd.svc); +                                ret = svc->stop (svc, SIGTERM); +                                if (ret) { +                                        gf_msg (THIS->name, GF_LOG_ERROR, 0, +                                                GD_MSG_SVC_STOP_FAIL, "Failed " +                                                "to stop snapd daemon service"); +                                } +                        } +                } +        } + +        /* Reconfigure all daemon services upon peer detach */ +        ret = glusterd_svcs_reconfigure (); +        if (ret) { +                gf_msg (THIS->name, GF_LOG_ERROR, 0, +                        GD_MSG_SVC_STOP_FAIL, +                        "Failed to reconfigure all daemon services.");          }          ret = 0;  out:  | 
