On 03/15/2015 08:27 PM, Emmanuel Dreyfus wrote:
Emmanuel Dreyfus <m...@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.

_______________________________________________
Gluster-devel mailing list
Gluster-devel@gluster.org
http://www.gluster.org/mailman/listinfo/gluster-devel

Reply via email to