From cf1667cf2fdc9306ae23db1c171b6bdb225153d7 Mon Sep 17 00:00:00 2001 From: Anuradha Talur Date: Thu, 12 Nov 2015 19:45:10 +0530 Subject: cluster/afr : Readdirp performance enhancement Backport of: http://review.gluster.org/#/c/12507/ Things done : 1) during lookup and inode_refresh as part of read_txn, request is sent to detect if heal is required or not. 2) If heal is required, be conservative in setting the readdirp entry inodes to NULL, otherwise don't be. 3) Self-heal-daemon now crawls both indices/xattrop and indices/dirty directory while healing. Change-Id: Ic4a4da63fb7e0726eab5f341a200859b29cf7eb7 BUG: 1287531 Signed-off-by: Anuradha Talur Reviewed-on: http://review.gluster.org/12507 Tested-by: Gluster Build System Tested-by: NetBSD Build System Reviewed-by: Pranith Kumar Karampuri Signed-off-by: Anuradha Talur Reviewed-on: http://review.gluster.org/12853 --- xlators/cluster/afr/src/afr-self-heal-common.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'xlators/cluster/afr/src/afr-self-heal-common.c') diff --git a/xlators/cluster/afr/src/afr-self-heal-common.c b/xlators/cluster/afr/src/afr-self-heal-common.c index c9010dff308..63a52fcae84 100644 --- a/xlators/cluster/afr/src/afr-self-heal-common.c +++ b/xlators/cluster/afr/src/afr-self-heal-common.c @@ -658,6 +658,8 @@ afr_selfheal_discover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, { afr_local_t *local = NULL; int i = -1; + GF_UNUSED int ret = -1; + int8_t need_heal = 1; local = frame->local; i = (long) cookie; @@ -669,8 +671,13 @@ afr_selfheal_discover_cbk (call_frame_t *frame, void *cookie, xlator_t *this, local->replies[i].poststat = *buf; if (parbuf) local->replies[i].postparent = *parbuf; - if (xdata) + if (xdata) { local->replies[i].xdata = dict_ref (xdata); + ret = dict_get_int8 (xdata, "link-count", &need_heal); + local->replies[i].need_heal = need_heal; + } else { + local->replies[i].need_heal = need_heal; + } syncbarrier_wake (&local->barrier); -- cgit