<div dir="ltr">The following commit has broken the brick multiplexing regression job. tests/bugs/bug-1371806_1.t has failed couple of times.  One of the latest regression job report is at <a href="https://build.gluster.org/job/regression-test-with-multiplex/406/console">https://build.gluster.org/job/regression-test-with-multiplex/406/console</a> .<br><br><br>commit 9b4de61a136b8e5ba7bf0e48690cdb1292d0dee8<br>Author: Mohit Agrawal &lt;<a href="mailto:moagrawa@redhat.com">moagrawa@redhat.com</a>&gt;<br>Date:   Fri May 12 21:12:47 2017 +0530<br><br>    cluster/dht : User xattrs are not healed after brick stop/start<br>    <br>    Problem: In a distributed volume custom extended attribute value for a directory<br>             does not display correct value after stop/start or added newly brick.<br>             If any extended(acl) attribute value is set for a directory after stop/added<br>             the brick the attribute(user|acl|quota) value is not updated on brick<br>             after start the brick.<br>    <br>    Solution: First store hashed subvol or subvol(has internal xattr) on inode ctx and<br>              consider it as a MDS subvol.At the time of update custom xattr<br>              (user,quota,acl, selinux) on directory first check the mds from<br>              inode ctx, if mds is not present on inode ctx then throw EINVAL error<br>              to application otherwise set xattr on MDS subvol with internal xattr<br>              value of -1 and then try to update the attribute on other non MDS<br>              volumes also.If mds subvol is down in that case throw an<br>              error &quot;Transport endpoint is not connected&quot;. In dht_dir_lookup_cbk|<br>              dht_revalidate_cbk|dht_discover_complete call dht_call_dir_xattr_heal<br>              to heal custom extended attribute.<br>              In case of gnfs server if hashed subvol has not found based on<br>              loc then wind a call on all subvol to update xattr.<br>    <br>    Fix:    1) Save MDS subvol on inode ctx<br>            2) Check if mds subvol is present on inode ctx<br>            3) If mds subvol is down then call unwind with error ENOTCONN and if it is up<br>               then set new xattr &quot;GF_DHT_XATTR_MDS&quot; to -1 and wind a call on other<br>               subvol.<br>            4) If setxattr fop is successful on non-mds subvol then increment the value of<br>               internal xattr to +1<br>            5) At the time of directory_lookup check the value of new xattr GF_DHT_XATTR_MDS<br>            6) If value is not 0 in dht_lookup_dir_cbk(other cbk) functions then call heal<br>               function to heal user xattr<br>            7) syncop_setxattr on hashed_subvol to reset the value of xattr to 0<br>               if heal is successful on all subvol.<br>    <br>    Test : To reproduce the issue followed below steps<br>           1) Create a distributed volume and create mount point<br>           2) Create some directory from mount point mkdir tmp{1..5}<br>           3) Kill any one brick from the volume<br>           4) Set extended attribute from mount point on directory<br>              setfattr -n user.foo -v &quot;abc&quot; ./tmp{1..5}<br>              It will throw error &quot; Transport End point is not connected &quot;<br>              for those hashed subvol is down<br>           5) Start volume with force option to start brick process<br>           6) Execute getfattr command on mount point for directory<br>           7) Check extended attribute on brick<br>              getfattr -n user.foo &lt;volume-location&gt;/tmp{1..5}<br>              It shows correct value for directories for those<br>              xattr fop were executed successfully.<br>    <br>    Note: The patch will resolve xattr healing problem only for fuse mount<br>          not for nfs mount.<br>    <br>    BUG: 1371806<br>    Signed-off-by: Mohit Agrawal &lt;<a href="mailto:moagrawa@redhat.com">moagrawa@redhat.com</a>&gt;<br>    <br>    Change-Id: I4eb137eace24a8cb796712b742f1d177a65343d5<br><br></div>