summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr.h
diff options
context:
space:
mode:
authorAnuradha Talur <atalur@redhat.com>2015-11-12 19:45:10 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2015-12-21 01:18:46 -0800
commitcf1667cf2fdc9306ae23db1c171b6bdb225153d7 (patch)
treee32b8198c229c6d7bdd76cd73dc972fc0059d13c /xlators/cluster/afr/src/afr.h
parent95a576dec754af6609c5356e07003c54058eb675 (diff)
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 <atalur@redhat.com> Reviewed-on: http://review.gluster.org/12507 Tested-by: Gluster Build System <jenkins@build.gluster.com> Tested-by: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com> Signed-off-by: Anuradha Talur <atalur@redhat.com> Reviewed-on: http://review.gluster.org/12853
Diffstat (limited to 'xlators/cluster/afr/src/afr.h')
-rw-r--r--xlators/cluster/afr/src/afr.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/xlators/cluster/afr/src/afr.h b/xlators/cluster/afr/src/afr.h
index c2fd1166d96..8e0a1f18816 100644
--- a/xlators/cluster/afr/src/afr.h
+++ b/xlators/cluster/afr/src/afr.h
@@ -132,6 +132,7 @@ typedef struct _afr_private {
gf_boolean_t use_afr_in_pump;
gf_boolean_t consistent_metadata;
uint64_t spb_choice_timeout;
+ gf_boolean_t need_heal;
} afr_private_t;
@@ -273,6 +274,8 @@ struct afr_reply {
/* For rchecksum */
uint8_t checksum[MD5_DIGEST_LENGTH];
gf_boolean_t buf_has_zeroes;
+ /* For lookup */
+ int8_t need_heal;
};
typedef enum {
@@ -1088,4 +1091,10 @@ afr_spb_choice_timeout_cancel (xlator_t *this, inode_t *inode);
int
afr_set_split_brain_choice (int ret, call_frame_t *frame, void *opaque);
+
+gf_boolean_t
+afr_get_need_heal (xlator_t *this);
+
+void
+afr_set_need_heal (xlator_t *this, afr_local_t *local);
#endif /* __AFR_H__ */