[Gluster-devel] split-brain-healing.t failure on NetBSD

Ravishankar N ravishankar at redhat.com
Mon Mar 16 03:14:22 UTC 2015


On 03/15/2015 08:27 PM, Emmanuel Dreyfus wrote:
> Emmanuel Dreyfus <manu at netbsd.org> wrote:
>
>> NetBSD passes the tests because before the test can fail, the client
>> goes into afr_inode_refresh_done(), where spit brain is detected and
>> repaired by syntask with a afr_refresh_selfheal_wrap() callback.
> Here is how I understand it: the split brain has been created by direct
> operations on the bricks, there is no pending operations in xattr.

No, the IO is done from the mount point, so there will be pending afr 
xattrs.

> We go through: afr_inode_refresh_done() -> afr_replies_interpret() ->
> afr_accuse_smallfiles(). Here we discover one of the brick has a smaller
> and accuse it. This way the file can be healed.
>
> Question: how was it supposed to fail?
>

Because of the pending xattrs, data_accused = [1,1], so 
afr_accuse_smallfiles() won't do anything. By the time we reach 
afr_readv_wind(), subvol=-1 and we fail with EIO.



More information about the Gluster-devel mailing list