forked from luck/tmp_suning_uos_patched
nfsd: Allow nfsd_vfs_write() to take the nfsd_file as an argument
Needed in order to fix stable writes. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
90d2f1da83
commit
16f8f89410
|
@ -1021,7 +1021,7 @@ nfsd4_write(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|||
&write->wr_head, write->wr_buflen);
|
||||
WARN_ON_ONCE(nvecs > ARRAY_SIZE(rqstp->rq_vec));
|
||||
|
||||
status = nfsd_vfs_write(rqstp, &cstate->current_fh, nf->nf_file,
|
||||
status = nfsd_vfs_write(rqstp, &cstate->current_fh, nf,
|
||||
write->wr_offset, rqstp->rq_vec, nvecs, &cnt,
|
||||
write->wr_how_written);
|
||||
nfsd_file_put(nf);
|
||||
|
|
|
@ -947,10 +947,11 @@ static int wait_for_concurrent_writes(struct file *file)
|
|||
}
|
||||
|
||||
__be32
|
||||
nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,
|
||||
nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf,
|
||||
loff_t offset, struct kvec *vec, int vlen,
|
||||
unsigned long *cnt, int stable)
|
||||
{
|
||||
struct file *file = nf->nf_file;
|
||||
struct svc_export *exp;
|
||||
struct iov_iter iter;
|
||||
__be32 nfserr;
|
||||
|
@ -1057,7 +1058,7 @@ nfsd_write(struct svc_rqst *rqstp, struct svc_fh *fhp, loff_t offset,
|
|||
if (err)
|
||||
goto out;
|
||||
|
||||
err = nfsd_vfs_write(rqstp, fhp, nf->nf_file, offset, vec,
|
||||
err = nfsd_vfs_write(rqstp, fhp, nf, offset, vec,
|
||||
vlen, cnt, stable);
|
||||
nfsd_file_put(nf);
|
||||
out:
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#define NFSD_MAY_CREATE (NFSD_MAY_EXEC|NFSD_MAY_WRITE)
|
||||
#define NFSD_MAY_REMOVE (NFSD_MAY_EXEC|NFSD_MAY_WRITE|NFSD_MAY_TRUNC)
|
||||
|
||||
struct nfsd_file;
|
||||
|
||||
/*
|
||||
* Callback function for readdir
|
||||
*/
|
||||
|
@ -93,7 +95,7 @@ __be32 nfsd_read(struct svc_rqst *, struct svc_fh *,
|
|||
__be32 nfsd_write(struct svc_rqst *, struct svc_fh *, loff_t,
|
||||
struct kvec *, int, unsigned long *, int);
|
||||
__be32 nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp,
|
||||
struct file *file, loff_t offset,
|
||||
struct nfsd_file *nf, loff_t offset,
|
||||
struct kvec *vec, int vlen, unsigned long *cnt,
|
||||
int stable);
|
||||
__be32 nfsd_readlink(struct svc_rqst *, struct svc_fh *,
|
||||
|
|
Loading…
Reference in New Issue
Block a user