Bug 1726205

Summary: Windows client fails to copy large file to GlusterFS volume share with fruit and streams_xattr VFS modules via Samba
Product: [Community] GlusterFS Reporter: Anoop C S <anoopcs>
Component: md-cacheAssignee: Anoop C S <anoopcs>
Status: CLOSED NEXTRELEASE QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: mainlineCC: atumball, bugs, gdeschner, madam, pgurusid, ryan
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1732376 1743782 1785228 (view as bug list) Environment:
Last Closed: 2019-08-20 10:13:03 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1732376, 1743782, 1785228    
Attachments:
Description Flags
windows error dialogue box none

Description Anoop C S 2019-07-02 10:29:57 UTC
Created attachment 1586648 [details]
windows error dialogue box

Description of problem:
Windows client errors out while copying large file into GlusterFS volume share configured with fruit and streams_xattr VFS modules. See attachment for error message.

Version-Release number of selected component (if applicable):
master

How reproducible:
Always

Steps to Reproduce:
1. Create a basic distribute-replicate volume
2. Enable "group samba" volume set on the volume
3. Set up a Samba share with fruit and streams_xattr VFS modules
   vfs objects = fruit streams_xattr glusterfs
4. Connect to the share from a Windows client
5. Try to copy a large file(probably with size > 600M) into share

Actual results:
Windows client fails to copy large file with error(see attachment).

Expected results:
Copy completes successfully.

Additional info(root cause):
Problem lies in md-cache layer where it fails to update cache for xattrs with null value("\0"). Following steps reproduce the core issue on a plain FUSE mount:

# touch /mnt/glusterfs/foobar

# setfattr -n "user.DosStream.Zone.Identifier:\$DATA" -v "\0"
/mnt/glusterfs/foobar 

# echo $?
0

# getfattr -d -m . -e hex /mnt/glusterfs/foobar 
getfattr: Removing leading '/' from absolute path names
# file: mnt/glusterfs/foobar
security.selinux=0x73797374656d5f753a6f626a6563745f723a6675736566735f74
3a733000
/mnt/glusterfs/foobar: user.DosStream.Zone.Identifier:$DATA: No such
attribute

# getfattr -d -m . -e hex /brick/brick1/foobar 
getfattr: Removing leading '/' from absolute path names
# file: brick/brick1/foobar
security.selinux=0x73797374656d5f753a6f626a6563745f723a676c757374657264
5f627269636b5f743a733000
trusted.gfid=0xde7d450691b24107b0c03fac58d9e49e
trusted.gfid2path.17f514a2c19aaa57=0x30303030303030302d303030302d303030
302d303030302d3030303030303030303030312f666f6f626172
user.DosStream.Zone.Identifier:$DATA=0x00

# gluster v set vol performance.cache-samba-metadata off
volume set: success

# getfattr -d -m . -e hex /mnt/glusterfs/foobar 
getfattr: Removing leading '/' from absolute path names
# file: mnt/glusterfs/foobar
security.selinux=0x73797374656d5f753a6f626a6563745f723a6675736566735f74
3a733000
user.DosStream.Zone.Identifier:$DATA=0x00

Comment 1 ryan 2019-07-04 10:52:06 UTC
Just raised this bug:
https://bugzilla.redhat.com/show_bug.cgi?id=1727062

Not sure if there are any similarities?

Comment 2 Anoop C S 2019-07-05 11:41:08 UTC
*** Bug 1727062 has been marked as a duplicate of this bug. ***

Comment 3 Worker Ant 2019-08-12 05:13:49 UTC
REVIEW: https://review.gluster.org/23206 (performance/md-cache: Do not skip caching of null character xattr values) posted (#1) for review on master by Anoop C S

Comment 4 Worker Ant 2019-08-20 10:13:03 UTC
REVIEW: https://review.gluster.org/23206 (performance/md-cache: Do not skip caching of null character xattr values) merged (#5) on master by Amar Tumballi