]> err.no Git - linux-2.6/blobdiff - fs/nfsd/nfs4proc.c
[PATCH] nfsd4: nfs4state.c miscellaneous goto removals
[linux-2.6] / fs / nfsd / nfs4proc.c
index 361b4007d4a00867059e885855e26549ea702da3..89028f2d8d26aa9e463ba787384c1b5bd39937b9 100644 (file)
@@ -210,6 +210,7 @@ nfsd4_open(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open
                                goto out;
                        break;
                case NFS4_OPEN_CLAIM_PREVIOUS:
+                       open->op_stateowner->so_confirmed = 1;
                        /*
                         * The CURRENT_FH is already set to the file being
                         * opened.  (1) set open->op_cinfo, (2) set
@@ -221,6 +222,7 @@ nfsd4_open(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open
                                goto out;
                        break;
                case NFS4_OPEN_CLAIM_DELEGATE_PREV:
+                       open->op_stateowner->so_confirmed = 1;
                        printk("NFSD: unsupported OPEN claim type %d\n",
                                open->op_claim_type);
                        status = nfserr_notsupp;
@@ -590,25 +592,21 @@ nfsd4_setattr(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_se
        status = nfs_ok;
        if (setattr->sa_iattr.ia_valid & ATTR_SIZE) {
                nfs4_lock_state();
-               if ((status = nfs4_preprocess_stateid_op(current_fh,
-                                               &setattr->sa_stateid,
-                                               CHECK_FH | WR_STATE, NULL))) {
-                       dprintk("NFSD: nfsd4_setattr: couldn't process stateid!\n");
-                       goto out_unlock;
-               }
+               status = nfs4_preprocess_stateid_op(current_fh,
+                       &setattr->sa_stateid, CHECK_FH | WR_STATE, NULL);
                nfs4_unlock_state();
+               if (status) {
+                       dprintk("NFSD: nfsd4_setattr: couldn't process stateid!");
+                       return status;
+               }
        }
        status = nfs_ok;
        if (setattr->sa_acl != NULL)
                status = nfsd4_set_nfs4_acl(rqstp, current_fh, setattr->sa_acl);
        if (status)
-               goto out;
+               return status;
        status = nfsd_setattr(rqstp, current_fh, &setattr->sa_iattr,
                                0, (time_t)0);
-out:
-       return status;
-out_unlock:
-       nfs4_unlock_state();
        return status;
 }
 
@@ -626,15 +624,17 @@ nfsd4_write(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_writ
                return nfserr_inval;
 
        nfs4_lock_state();
-       if ((status = nfs4_preprocess_stateid_op(current_fh, stateid,
-                                       CHECK_FH | WR_STATE, &filp))) {
-               dprintk("NFSD: nfsd4_write: couldn't process stateid!\n");
-               goto out;
-       }
+       status = nfs4_preprocess_stateid_op(current_fh, stateid,
+                                       CHECK_FH | WR_STATE, &filp);
        if (filp)
                get_file(filp);
        nfs4_unlock_state();
 
+       if (status) {
+               dprintk("NFSD: nfsd4_write: couldn't process stateid!\n");
+               return status;
+       }
+
        write->wr_bytes_written = write->wr_buflen;
        write->wr_how_written = write->wr_stable_how;
        p = (u32 *)write->wr_verifier.data;
@@ -650,9 +650,6 @@ nfsd4_write(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_writ
        if (status == nfserr_symlink)
                status = nfserr_inval;
        return status;
-out:
-       nfs4_unlock_state();
-       return status;
 }
 
 /* This routine never returns NFS_OK!  If there are no other errors, it
@@ -768,6 +765,8 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,
        while (!status && resp->opcnt < args->opcnt) {
                op = &args->ops[resp->opcnt++];
 
+               dprintk("nfsv4 compound op #%d: %d\n", resp->opcnt, op->opnum);
+
                /*
                 * The XDR decode routines may have pre-set op->status;
                 * for example, if there is a miscellaneous XDR error