Patchwork [BUG:1756,1/2] Revert "nfs3: Revalidate inode on receiving ESTALE on lookup"

login
register
Submitter Anand Avati
Date 2010-10-11 12:12:39
Message ID <20101011121239.GA9888@dev.gluster.com>
Download mbox | patch
Permalink /patch/5429/
State Accepted
Headers show

Comments

Anand Avati - 2010-10-11 12:12:39
This reverts commit f5afcc47f9f00472d6c2b3f48127e02332cd457a.

Signed-off-by: Anand V. Avati <avati@blackhole.gluster.com>
---
 xlators/nfs/server/src/nfs3.c |   45 +----------------------------------------
 xlators/nfs/server/src/nfs3.h |    7 ------
 2 files changed, 1 insertions(+), 51 deletions(-)

Patch

diff --git a/xlators/nfs/server/src/nfs3.c b/xlators/nfs/server/src/nfs3.c
index 1891500..a81676d 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 823a911..a43fdc4 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. */