From a144f2ca40d43a6ee3a50802fe1e8d1eda7a53b7 Mon Sep 17 00:00:00 2001 From: Anand Avati Date: Fri, 4 Feb 2011 21:43:19 +0000 Subject: core: have framework for GF_EVENT_CHILD_MODIFIED notifcation event If anything changes anywhere in the graph, all xlators know that something has changed. Previously dht and afr would mask certain events from propagating up. Now they forward GF_EVENT_CHILD_MODIFIED event in those situations Signed-off-by: Anand Avati Signed-off-by: Anand V. Avati BUG: 2450 (scalability enhancements) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2450 --- xlators/cluster/afr/src/afr-common.c | 4 ++++ xlators/cluster/dht/src/dht-common.c | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'xlators/cluster') diff --git a/xlators/cluster/afr/src/afr-common.c b/xlators/cluster/afr/src/afr-common.c index 4b59d26db..ffd220006 100644 --- a/xlators/cluster/afr/src/afr-common.c +++ b/xlators/cluster/afr/src/afr-common.c @@ -2552,6 +2552,8 @@ afr_notify (xlator_t *this, int32_t event, "going online.", ((xlator_t *)data)->name); default_notify (this, event, data); + } else { + default_notify (this, GF_EVENT_CHILD_MODIFIED, data); } break; @@ -2582,6 +2584,8 @@ afr_notify (xlator_t *this, int32_t event, "until atleast one of them comes back up."); default_notify (this, event, data); + } else { + default_notify (this, GF_EVENT_CHILD_MODIFIED, data); } break; diff --git a/xlators/cluster/dht/src/dht-common.c b/xlators/cluster/dht/src/dht-common.c index 18f15696b..ef8fb1a60 100644 --- a/xlators/cluster/dht/src/dht-common.c +++ b/xlators/cluster/dht/src/dht-common.c @@ -5046,6 +5046,13 @@ dht_notify (xlator_t *this, int event, void *data, ...) break; + case GF_EVENT_CHILD_MODIFIED: + subvol = data; + + conf->gen++; + + break; + case GF_EVENT_CHILD_DOWN: subvol = data; @@ -5134,7 +5141,7 @@ dht_notify (xlator_t *this, int event, void *data, ...) } } - if (propagate) + if (propagate || event == GF_EVENT_CHILD_MODIFIED) ret = default_notify (this, event, data); return ret; -- cgit