diff options
author | Anand Avati <avati@gluster.com> | 2010-10-12 01:22:11 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-10-12 00:11:19 -0700 |
commit | efa94a4237bc98c629671e6fbb58948789604fe5 (patch) | |
tree | 7f6309a10f40970647c0ff0d79816caa2cee916e /xlators/nfs | |
parent | c3b6df1a8e27c66a5c17cc1d6a92fdc37354ae6f (diff) |
Revert "nfs3: Revalidate inode on receiving ESTALE on lookup"
This reverts commit f5afcc47f9f00472d6c2b3f48127e02332cd457a.
Signed-off-by: Anand V. Avati <avati@blackhole.gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 1756 (NFS must revalidate inode on first ESTALE on lookup)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1756
Diffstat (limited to 'xlators/nfs')
-rw-r--r-- | xlators/nfs/server/src/nfs3.c | 45 | ||||
-rw-r--r-- | xlators/nfs/server/src/nfs3.h | 7 |
2 files changed, 1 insertions, 51 deletions
diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c index 1891500c574..a81676d1775 100644 --- a/xlators/nfs/server/src/nfs3.c +++ b/xlators/nfs/server/src/nfs3.c @@ -1013,41 +1013,6 @@ nfs3_lookup_reply (rpcsvc_request_t *req, nfsstat3 stat, struct nfs3_fh *newfh, int -nfs3_lookup_resume (void *carg); - - -int -nfs3_revalidate_lookup (nfs3_call_state_t *cs) -{ - int ret = -EFAULT; - char *oldresolventry = NULL; - - if (!cs) - return -1; - - gf_log (GF_NFS3, GF_LOG_DEBUG, "inode needs revalidation"); - inode_unlink (cs->resolvedloc.inode, cs->resolvedloc.parent, - cs->resolventry); - inode_unref (cs->resolvedloc.inode); - nfs_loc_wipe (&cs->resolvedloc); - - /* Store pointer to currently allocated resolventry because it gets over - * written in fh_resolve_and_resume. - */ - oldresolventry = cs->resolventry; - cs->revalidate = GF_NFS3_REVALIDATE; - ret = nfs3_fh_resolve_and_resume (cs, &cs->resolvefh, cs->resolventry, - nfs3_lookup_resume); - /* Allocated in the previous call to fh_resolve_and_resume using the - * same call_state. - */ - GF_FREE (oldresolventry); - - return ret; -} - - -int nfs3svc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, inode_t *inode, struct iatt *buf, dict_t *xattr, struct iatt *postparent) @@ -1065,18 +1030,11 @@ nfs3svc_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this, nfs3_fh_build_child_fh (&cs->parent, buf, &newfh); xmit_res: - /* Only revalidate if it wasnt already a revalidation lookup. */ - if ((op_errno == ESTALE) && (!nfs3_is_revalidate_lookup (cs))) { - op_ret = nfs3_revalidate_lookup (cs); - if (op_ret < 0) - goto out; - } - nfs3_log_newfh_res (nfs_rpcsvc_request_xid (cs->req), "LOOKUP", status, op_errno, &newfh); nfs3_lookup_reply (cs->req, status, &newfh, buf, postparent); nfs3_call_state_wipe (cs); -out: + return 0; } @@ -1253,7 +1211,6 @@ nfs3_lookup (rpcsvc_request_t *req, struct nfs3_fh *fh, int fhlen, char *name) nfs3_map_fh_to_volume (nfs3, fh, req, vol, stat, nfs3err); nfs3_handle_call_state_init (nfs3, cs, req, vol, stat, nfs3err); - cs->revalidate = GF_NFS3_NONREVALIDATE; if (!nfs3_is_parentdir_entry (name)) ret = nfs3_fh_resolve_and_resume (cs, fh, name, nfs3_lookup_resume); diff --git a/xlators/nfs/server/src/nfs3.h b/xlators/nfs/server/src/nfs3.h index 823a911dcc9..a43fdc4af28 100644 --- a/xlators/nfs/server/src/nfs3.h +++ b/xlators/nfs/server/src/nfs3.h @@ -134,10 +134,6 @@ struct nfs3_state { int fdcount; }; -typedef enum nfs3_revalidate { - GF_NFS3_REVALIDATE = 1, - GF_NFS3_NONREVALIDATE -} nfs3_revalidate_t; typedef int (*nfs3_resume_fn_t) (void *cs); /* Structure used to communicate state between a fop and its callback. @@ -201,11 +197,8 @@ struct nfs3_local { int hashidx; fd_t *resolve_dir_fd; char *resolventry; - nfs3_revalidate_t revalidate; }; -#define nfs3_is_revalidate_lookup(cst) ((cst)->revalidate == GF_NFS3_REVALIDATE) - typedef struct nfs3_local nfs3_call_state_t; /* Queue of ops waiting for open fop to return. */ |