Steps to Reproduce: 1. Create ganesha cluster and create 2*(4+2) EC volume. 2. Enable nfs-ganesha on the volume with mdcache settings. 3. Mount the volume. 4. Create a file and write contents to it. 5. Create hard link to that file. 6. Read the contents of the file. Actual results: Contents of original file are not seen when hardlink is created Expected results: Contents should not get removed Additional info: [root@dhcp47-49 ec_test]# echo "testfile" > test1 [root@dhcp47-49 ec_test]# cat test1 testfile [root@dhcp47-49 ec_test]# ls -lhrtia test1 10548474259765385418 -rw-r--r--. 1 root root 9 Dec 27 20:38 test1 [root@dhcp47-49 ec_test]# ln test1 test1_hlink [root@dhcp47-49 ec_test]# ls -lhrtia test1 test1_hlink 10548474259765385418 -rw-r--r--. 2 root root 0 Dec 27 20:38 test1_hlink 10548474259765385418 -rw-r--r--. 2 root root 0 Dec 27 20:38 test1 [root@dhcp47-49 ec_test]# cat test1 [root@dhcp47-49 ec_test]# cat test1_hlink [root@dhcp47-49 ec_test]# [root@dhcp47-49 ec_test]# [root@dhcp47-49 ec_test]# cat test1 [root@dhcp47-49 ec_test]# cat test1_hlink [root@dhcp47-49 ec_test]# cat test1 [root@dhcp47-49 ec_test]# cat test1
Works as expected with the fix: root@dhcp35-190 - ~ 13:34:05 :) ⚡ glusterd && gluster v create ec2 disperse-data 4 redundancy 2 localhost.localdomain:/home/gfs/ec_{0..5} force && gluster v start ec2 && mount -t glusterfs localhost.localdomain:/ec2 /mnt/ec2 volume create: ec2: success: please start the volume to access data cd ^[. volume start: ec2: success root@dhcp35-190 - ~ 13:34:49 :) ⚡ cd /mnt/ec2 root@dhcp35-190 - /mnt/ec2 13:36:46 :( ⚡ echo abc > a && ln a c && cat c abc
REVIEW: http://review.gluster.org/16320 (cluster/ec: Do lookup on an existing file in link) posted (#1) for review on master by Pranith Kumar Karampuri (pkarampu)
COMMIT: http://review.gluster.org/16320 committed in master by Pranith Kumar Karampuri (pkarampu) ------ commit 395c55483724912821929ff2a793e99fd7bf4e71 Author: Pranith Kumar K <pkarampu> Date: Wed Jan 4 13:37:23 2017 +0530 cluster/ec: Do lookup on an existing file in link Problem: In link fop lookup is happening on the new fop which doesn't exist so the iatt ec serves parent xlators has size as zero which leads to 'cat' giving empty output Fix: Change code so that lookup happens on the existing link instead. BUG: 1409730 Change-Id: I70eb02fe0633e61d1d110575589cc2dbe5235d76 Signed-off-by: Pranith Kumar K <pkarampu> Reviewed-on: http://review.gluster.org/16320 Smoke: Gluster Build System <jenkins.org> Reviewed-by: Xavier Hernandez <xhernandez> Tested-by: Xavier Hernandez <xhernandez> CentOS-regression: Gluster Build System <jenkins.org> NetBSD-regression: NetBSD Build System <jenkins.org>
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-3.10.0, please open a new bug report. glusterfs-3.10.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/gluster-users/2017-February/030119.html [2] https://www.gluster.org/pipermail/gluster-users/