aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4proc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfs4proc.c')
-rw-r--r--fs/nfsd/nfs4proc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index 77f584f69dfe..283d77a47120 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -682,6 +682,7 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
682 struct file *filp = NULL; 682 struct file *filp = NULL;
683 u32 *p; 683 u32 *p;
684 __be32 status = nfs_ok; 684 __be32 status = nfs_ok;
685 unsigned long cnt;
685 686
686 /* no need to check permission - this will be done in nfsd_write() */ 687 /* no need to check permission - this will be done in nfsd_write() */
687 688
@@ -700,7 +701,7 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
700 return status; 701 return status;
701 } 702 }
702 703
703 write->wr_bytes_written = write->wr_buflen; 704 cnt = write->wr_buflen;
704 write->wr_how_written = write->wr_stable_how; 705 write->wr_how_written = write->wr_stable_how;
705 p = (u32 *)write->wr_verifier.data; 706 p = (u32 *)write->wr_verifier.data;
706 *p++ = nfssvc_boot.tv_sec; 707 *p++ = nfssvc_boot.tv_sec;
@@ -708,10 +709,12 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
708 709
709 status = nfsd_write(rqstp, &cstate->current_fh, filp, 710 status = nfsd_write(rqstp, &cstate->current_fh, filp,
710 write->wr_offset, rqstp->rq_vec, write->wr_vlen, 711 write->wr_offset, rqstp->rq_vec, write->wr_vlen,
711 write->wr_buflen, &write->wr_how_written); 712 &cnt, &write->wr_how_written);
712 if (filp) 713 if (filp)
713 fput(filp); 714 fput(filp);
714 715
716 write->wr_bytes_written = cnt;
717
715 if (status == nfserr_symlink) 718 if (status == nfserr_symlink)
716 status = nfserr_inval; 719 status = nfserr_inval;
717 return status; 720 return status;