diff options
Diffstat (limited to 'xlators')
-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: |