summaryrefslogtreecommitdiffstats
path: root/xlators/nfs/server/src/nfs-common.h
diff options
context:
space:
mode:
authorMohammed Rafi KC <rkavunga@redhat.com>2016-09-27 19:01:48 +0530
committerKaleb KEITHLEY <kkeithle@redhat.com>2016-11-10 14:19:08 -0800
commitba7a737b1260bbafe22097bea08814035c8b655d (patch)
tree8063aef9bc90a6a7469e660b0f0a1370813b1f73 /xlators/nfs/server/src/nfs-common.h
parent7874ed245bcc80658547992205f8396f4dd3c76a (diff)
nfs: revalidate lookup converted to fresh lookup
when an inode ctx is missing for a linked inode the revalidate lookups are converted to fresh. This could result in sending ESTALE when the gfid are recreated We are not able to reproduce the issue with normal setup, most part of RCA was done with code reading. Possible scenario in which this bug can reproduce, Delete a file and recreate a new file with same name, at the same time from another client process try to list/or access the file. In this case the second client may throw an ESTALE error for such files Thanks to Soumya and Pranith for doing the complete RCA Change-Id: I73992a65844b09a169cefaaedc0dcfb129d66ea1 BUG: 1379720 Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com> Reviewed-on: http://review.gluster.org/15580 NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Smoke: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: soumya k <skoduri@redhat.com> Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Diffstat (limited to 'xlators/nfs/server/src/nfs-common.h')
-rw-r--r--xlators/nfs/server/src/nfs-common.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/xlators/nfs/server/src/nfs-common.h b/xlators/nfs/server/src/nfs-common.h
index 77bdfb0bbf0..8c9a1e33457 100644
--- a/xlators/nfs/server/src/nfs-common.h
+++ b/xlators/nfs/server/src/nfs-common.h
@@ -57,7 +57,8 @@ nfs_ino_loc_fill (inode_table_t *itable, uuid_t gfid, loc_t *l);
extern int
nfs_entry_loc_fill (xlator_t *this, inode_table_t *itable, uuid_t pargfid,
- char *entry, loc_t *loc, int how);
+ char *entry, loc_t *loc, int how,
+ gf_boolean_t *freshlookup);
extern int
nfs_root_loc_fill (inode_table_t *itable, loc_t *loc);