nfsd4: remove redundant "if" in nfs4_preprocess_stateid_op
authorJ. Bruce Fields <bfields@citi.umich.edu>
Sat, 21 Feb 2009 19:14:43 +0000 (11:14 -0800)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Wed, 18 Mar 2009 21:30:52 +0000 (17:30 -0400)
Note that we exit this first big "if" with stp == NULL if and only if we
took the first branch; therefore, the second "if" is redundant, and we
can just combine the two, simplifying the logic.

Reviewed-by: Yang Hongyang <yanghy@cn.fujitsu.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
fs/nfsd/nfs4state.c

index d6ca2be306dc99cce8145fdb66fac7bb9666df05..16fcb656f47fdb155ba691fa7f256b95f8119d1a 100644 (file)
@@ -2087,6 +2087,14 @@ nfs4_preprocess_stateid_op(struct svc_fh *current_fh, stateid_t *stateid, int fl
                status = check_stateid_generation(stateid, stidp);
                if (status)
                        goto out;
+               status = nfs4_check_delegmode(dp, flags);
+               if (status)
+                       goto out;
+               renew_client(dp->dl_client);
+               if (flags & DELEG_RET)
+                       unhash_delegation(dp);
+               if (filpp)
+                       *filpp = dp->dl_vfs_file;
        } else { /* open or lock stateid */
                stp = find_stateid(stateid, flags);
                if (!stp) {
@@ -2101,23 +2109,12 @@ nfs4_preprocess_stateid_op(struct svc_fh *current_fh, stateid_t *stateid, int fl
                status = check_stateid_generation(stateid, stidp);
                if (status)
                        goto out;
-       }
-       if (stp) {
                status = nfs4_check_openmode(stp, flags);
                if (status)
                        goto out;
                renew_client(stp->st_stateowner->so_client);
                if (filpp)
                        *filpp = stp->st_vfs_file;
-       } else {
-               status = nfs4_check_delegmode(dp, flags);
-               if (status)
-                       goto out;
-               renew_client(dp->dl_client);
-               if (flags & DELEG_RET)
-                       unhash_delegation(dp);
-               if (filpp)
-                       *filpp = dp->dl_vfs_file;
        }
        status = nfs_ok;
 out: