Bug 765528 (GLUSTER-3796)

Summary: split-brain/all-fool xattr directory self-heal should try to merge the entries
Product: [Community] GlusterFS Reporter: Pranith Kumar K <pkarampu>
Component: replicateAssignee: Pranith Kumar K <pkarampu>
Status: CLOSED CURRENTRELEASE QA Contact: Shwetha Panduranga <shwetha.h.panduranga>
Severity: medium Docs Contact:
Priority: medium    
Version: pre-releaseCC: gluster-bugs, vijay
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: glusterfs-3.4.0 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-07-24 17:49:59 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 817967    

Description Pranith Kumar K 2011-11-09 10:11:00 UTC
In case of split-brain, all-fool xattrs, the self-heal of that dir should be creating the entries that are missing on either of the subvols.

Comment 1 Anand Avati 2011-11-09 14:57:24 UTC
CHANGE: http://review.gluster.com/695 (Change-Id: I058ed91494e1a9bbcf5e6e6c49e8ee4f7e014e23) merged in release-3.2 by Anand Avati (avati)

Comment 2 Anand Avati 2011-12-27 10:18:11 UTC
CHANGE: http://review.gluster.com/2521 (cluster/afr: Handle split-brain/all-fool xattrs for directory) merged in master by Vijay Bellur (vijay)

Comment 3 Anand Avati 2011-12-29 06:47:19 UTC
CHANGE: http://review.gluster.com/2541 (cluster/afr: EIO should overwrite ENOENT in lookup) merged in master by Vijay Bellur (vijay)

Comment 4 Anand Avati 2012-03-13 02:37:32 UTC
CHANGE: http://review.gluster.com/2674 (cluster/afr: Handle split-brain/all-fool xattrs for directory) merged in release-3.2 by Anand Avati (avati)

Comment 5 Shwetha Panduranga 2012-06-01 07:41:26 UTC
Case 1 :- Replicate Volume (1x3)
--------------------------------
1. create a replicate volume
2. set self-heal daemon off for the volume
3. start the volume
4. create a fuse/nfs mount. 
5. mkdir testdir1 on fuse/nfs mount
6. bring down brick2, brick3
7. execute "dd if=/dev/urandom of=testdir1/f1 bs=1M count=1" on the mount
8. bring back brick2, brick3
9. bring down brick3, brick1
10. execute "dd if=/dev/urandom of=testdir1/f2 bs=1M count=1" on the mount
11. bring back brick3, brick1
12. bring down brick1, brick2
13. execute "dd if=/dev/urandom of=testdir1/f3 bs=1M count=1" on the mount
14. bring back brick1, brick2
15. execute "ls -l testdir1/f1" on mount
16. execute "ls -l testdir1/f2" on mount
17. execute "ls -l testdir1/f3" on mount

Expected Output:-
~~~~~~~~~~~~~~~~~
file f1 has to be self-healed(force merge) to brick2,brick3
file f2 has to be self-healed(force merge) to brick3,brick1
file f3 has to be self-healed(force merge) to brick1,brick2

Verified the fix on 3.3.0qa45. Bug is fixed.