diff options
author | Ravishankar N <ravishankar@redhat.com> | 2018-09-20 10:14:26 +0530 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2018-09-21 16:35:26 +0000 |
commit | 9d8f5a34c1ff4ae512f80fe9651508ae201c273e (patch) | |
tree | 32c54faf293bc707280820a11c8bd8c7cbfe5a9f /xlators/cluster/afr/src/afr-self-heal.h | |
parent | d901308a06c38fa53a3b07ed1641522a3248378d (diff) |
afr: fix incorrect reporting of directory split-brain
Problem:
When a directory has dirty xattrs due to failed post-ops or when
replace/reset brick is performed, AFR does a conservative merge as
expected, but heal-info reports it as split-brain because there are no
clear sources.
Fix:
Modify pending flag to contain information about pending heals and
split-brains. For directories, if spit-brain flag is not set,just show
them as needing heal and not being in split-brain.
Fixes: bz#1626994
Change-Id: I09ef821f6887c87d315ae99e6b1de05103cd9383
Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-self-heal.h')
-rw-r--r-- | xlators/cluster/afr/src/afr-self-heal.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/xlators/cluster/afr/src/afr-self-heal.h b/xlators/cluster/afr/src/afr-self-heal.h index 545e67f774d..9c7418c7169 100644 --- a/xlators/cluster/afr/src/afr-self-heal.h +++ b/xlators/cluster/afr/src/afr-self-heal.h @@ -177,7 +177,7 @@ afr_selfheal_find_direction(call_frame_t *frame, xlator_t *this, struct afr_reply *replies, afr_transaction_type type, unsigned char *locked_on, unsigned char *sources, unsigned char *sinks, - uint64_t *witness, gf_boolean_t *flag); + uint64_t *witness, unsigned char *flag); int afr_selfheal_fill_matrix(xlator_t *this, int **matrix, int subvol, int idx, dict_t *xdata); @@ -284,7 +284,7 @@ __afr_selfheal_data_prepare(call_frame_t *frame, xlator_t *this, inode_t *inode, unsigned char *locked_on, unsigned char *sources, unsigned char *sinks, unsigned char *healed_sinks, unsigned char *undid_pending, - struct afr_reply *replies, gf_boolean_t *flag); + struct afr_reply *replies, unsigned char *flag); int __afr_selfheal_metadata_prepare(call_frame_t *frame, xlator_t *this, @@ -292,14 +292,14 @@ __afr_selfheal_metadata_prepare(call_frame_t *frame, xlator_t *this, unsigned char *sources, unsigned char *sinks, unsigned char *healed_sinks, unsigned char *undid_pending, - struct afr_reply *replies, gf_boolean_t *flag); + struct afr_reply *replies, unsigned char *flag); int __afr_selfheal_entry_prepare(call_frame_t *frame, xlator_t *this, inode_t *inode, unsigned char *locked_on, unsigned char *sources, unsigned char *sinks, unsigned char *healed_sinks, struct afr_reply *replies, int *source_p, - gf_boolean_t *flag); + unsigned char *flag); int afr_selfheal_unlocked_inspect(call_frame_t *frame, xlator_t *this, uuid_t gfid, |