Blob Blame History Raw
From eb9844229ded89ce5b68b79e1ebab4377de4ab25 Mon Sep 17 00:00:00 2001
From: Sakshi Bansal <sabansal@redhat.com>
Date: Thu, 12 Nov 2015 12:28:53 +0530
Subject: [PATCH 094/104] afr: replica pair going offline does not require CHILD_MODIFIED event

Patch in master: http://review.gluster.org/#/c/12573/
Patch in release-3.7: http://review.gluster.org/12767

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.

Change-Id: Icb9f7d655691f1eae86f990059771869ec710ee6
BUG: 1330901
Signed-off-by: Sakshi Bansal <sabansal@redhat.com>
Reviewed-on: https://code.engineering.redhat.com/gerrit/73111
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Reviewed-by: Nithya Balachandran <nbalacha@redhat.com>
Reviewed-by: Ravishankar Narayanankutty <ravishankar@redhat.com>
Tested-by: Ravishankar Narayanankutty <ravishankar@redhat.com>
---
 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 deletions(-)

diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h
index b9ed3bd..67bfd5a 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 c79ec06..1345d4d 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 06b9c37..b3f3774 100644
--- a/xlators/cluster/dht/src/dht-common.c
+++ b/xlators/cluster/dht/src/dht-common.c
@@ -8510,6 +8510,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;
 
-- 
1.7.1