Bug 1566207

Summary: Linux kernel untar failed with "xz: (stdin): Read error: Invalid argument" immediate after add-brick
Product: [Community] GlusterFS Reporter: Susant Kumar Palai <spalai>
Component: distributeAssignee: Susant Kumar Palai <spalai>
Severity: high Docs Contact:
Priority: high    
Version: mainlineCC: atumball, bugs, rhs-bugs, storage-qa-internal, tdesala
Target Milestone: ---Keywords: Regression
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Fixed In Version: glusterfs-v4.1.0 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: 1563692 Environment:
Last Closed: 2018-06-20 18:04:29 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:
Bug Depends On: 1563692    
Bug Blocks:    

Comment 1 Susant Kumar Palai 2018-04-11 19:01:33 UTC
Description of problem:
Linux kernel untar failed with "xz: (stdin): Read error: Invalid argument" immediate after add-brick

xz: (stdin): Read error: Invalid argument
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

How reproducible:

Steps to Reproduce:
1) create a x3 volume and start it.
2) FUSE mount on multiple clients (here used 2 servers as clients out of 4).
3) from one client start linux-4.4.36.tar.xz untar and from another client start  sending "ls -lRt" in a loop.
4) Now add bricks to the volume.

Actual results:
Linux kernel untar failed with "xz: (stdin): Read error: Invalid argument" 

Expected results:
Untar should not fail during add-brick

Comment 2 Worker Ant 2018-04-11 19:10:13 UTC
REVIEW: https://review.gluster.org/19849 (fuse: do fd_resolve in fuse_getattr if fd is received) posted (#2) for review on master by Susant Palai

Comment 3 Worker Ant 2018-04-18 15:04:36 UTC
COMMIT: https://review.gluster.org/19849 committed in master by "Raghavendra G" <rgowdapp@redhat.com> with a commit message- fuse: do fd_resolve in fuse_getattr if fd is received

problem: With the current code, post graph switch the old fd is received for
fuse_getattr and since it is associated with old inode, it does not
have the inode ctx across xlators in new graph. Hence, dht
errored out saying "no layout" for fstat call. Hence the EINVAL.

Solution: if fd is passed, init and resolve fd to carry on getattr

test case:
- Created a single brick distributed volume
- Started untar
- Added a new-brick

Without this fix, untar used to abort with ERROR.

Change-Id: I5805c463fb9a04ba5c24829b768127097ff8b9f9
fixes: bz#1566207
Signed-off-by: Susant Palai <spalai@redhat.com>

Comment 4 Shyamsundar 2018-06-20 18:04:29 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-v4.1.0, please open a new bug report.

glusterfs-v4.1.0 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] http://lists.gluster.org/pipermail/announce/2018-June/000102.html
[2] https://www.gluster.org/pipermail/gluster-users/