diff options
-rwxr-xr-x | tests/bugs/bug-877885.t | 35 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs3-helpers.c | 3 |
2 files changed, 37 insertions, 1 deletions
diff --git a/tests/bugs/bug-877885.t b/tests/bugs/bug-877885.t new file mode 100755 index 00000000000..0d4620b0092 --- /dev/null +++ b/tests/bugs/bug-877885.t @@ -0,0 +1,35 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/brick0 $H0:$B0/brick1 +TEST $CLI volume start $V0 + +sleep 5 + +## Mount FUSE with caching disabled +TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 \ +$M0; + +TEST touch $M0/file +TEST mkdir $M0/dir + +TEST mount -t nfs -o vers=3,nolock $H0:/$V0 $N0 +cd $N0 + +rm -rf * & + +TEST mount -t nfs -o retry=0,nolock,vers=3 $H0:/$V0 $N1; + +cd; + +kill %1; + +TEST umount $N0 +TEST umount $N1; + +cleanup diff --git a/xlators/nfs/server/src/nfs3-helpers.c b/xlators/nfs/server/src/nfs3-helpers.c index 253fe075410..fbfd17d1a83 100644 --- a/xlators/nfs/server/src/nfs3-helpers.c +++ b/xlators/nfs/server/src/nfs3-helpers.c @@ -3575,7 +3575,8 @@ nfs3_fh_resolve_entry_lookup_cbk (call_frame_t *frame, void *cookie, cs->resolvedloc.name, buf); if (linked_inode) { inode_lookup (linked_inode); - inode_unref (linked_inode); + inode_unref (cs->resolvedloc.inode); + cs->resolvedloc.inode = linked_inode; } err: nfs3_call_resume (cs); |