From fa78b755e9c58328c1df4ef1bfeb752d47534a4a Mon Sep 17 00:00:00 2001 From: Sakshi Bansal Date: Thu, 12 Nov 2015 12:28:53 +0530 Subject: afr: replica pair going offline does not require CHILD_MODIFIED event As a part of CHILD_MODIFIED event DHT forgets the current layout and performs fresh lookup. However this is not required when a replica pair goes offline as the xattrs can be read from other replica pairs. Hence setting different event to handle replica pair going down. > Backport of http://review.gluster.org/#/c/12573/ > Change-Id: I5ede2a6398e63f34f89f9d3c9bc30598974402e3 > BUG: 1281230 > Signed-off-by: Sakshi Bansal > Reviewed-on: http://review.gluster.org/12573 > Reviewed-by: Ravishankar N > Reviewed-by: Susant Palai > Tested-by: NetBSD Build System > Tested-by: Gluster Build System > Reviewed-by: Jeff Darcy Change-Id: Ida30240d1ad8b8730af7ab50b129dfb05264fdf9 BUG: 1283972 Signed-off-by: Sakshi Bansal Reviewed-on: http://review.gluster.org/12767 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Pranith Kumar Karampuri --- libglusterfs/src/glusterfs.h | 1 + xlators/cluster/afr/src/afr-common.c | 2 +- xlators/cluster/dht/src/dht-common.c | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h index b9ed3bdf96e..67bfd5ad260 100644 --- a/libglusterfs/src/glusterfs.h +++ b/libglusterfs/src/glusterfs.h @@ -631,6 +631,7 @@ typedef enum { GF_EVENT_VOLUME_BARRIER_OP, GF_EVENT_UPCALL, GF_EVENT_SCRUB_STATUS, + GF_EVENT_SOME_CHILD_DOWN, GF_EVENT_MAXVAL, } glusterfs_event_t; diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index c79ec06972a..1345d4d0bcc 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -4044,7 +4044,7 @@ afr_notify (xlator_t *this, int32_t event, "All subvolumes are down. Going offline " "until atleast one of them comes back up."); } else { - event = GF_EVENT_CHILD_MODIFIED; + event = GF_EVENT_SOME_CHILD_DOWN; } priv->last_event[idx] = event; diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index ed884b60035..555b9f9c7d6 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -8509,6 +8509,12 @@ dht_notify (xlator_t *this, int event, void *data, ...) break; + case GF_EVENT_SOME_CHILD_DOWN: + subvol = data; + propagate = 1; + + break; + case GF_EVENT_CHILD_DOWN: subvol = data; -- cgit