summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSakshi Bansal <sabansal@redhat.com>2015-11-12 12:28:53 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2016-04-27 00:52:24 -0700
commitfa78b755e9c58328c1df4ef1bfeb752d47534a4a (patch)
tree4dca8fb5ef77f2cb3bea1b98aa735dc0c0159a96
parent57f66ea86a2fbf61df34b3d6854f639f437cc12b (diff)
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 <sabansal@redhat.com> > Reviewed-on: http://review.gluster.org/12573 > Reviewed-by: Ravishankar N <ravishankar@redhat.com> > Reviewed-by: Susant Palai <spalai@redhat.com> > Tested-by: NetBSD Build System <jenkins@build.gluster.org> > Tested-by: Gluster Build System <jenkins@build.gluster.com> > Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Change-Id: Ida30240d1ad8b8730af7ab50b129dfb05264fdf9 BUG: 1283972 Signed-off-by: Sakshi Bansal <sabansal@redhat.com> Reviewed-on: http://review.gluster.org/12767 Smoke: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
-rw-r--r--libglusterfs/src/glusterfs.h1
-rw-r--r--xlators/cluster/afr/src/afr-common.c2
-rw-r--r--xlators/cluster/dht/src/dht-common.c6
3 files changed, 8 insertions, 1 deletions
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;