]> git.baikalelectronics.ru Git - kernel.git/commitdiff
nfsd: Pass the nfsd_file as arguments to nfsd4_clone_file_range()
authorTrond Myklebust <trondmy@gmail.com>
Mon, 6 Jan 2020 18:40:32 +0000 (13:40 -0500)
committerJ. Bruce Fields <bfields@redhat.com>
Wed, 22 Jan 2020 21:25:40 +0000 (16:25 -0500)
Needed in order to fix exclusion w.r.t. writes.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
fs/nfsd/nfs4proc.c
fs/nfsd/vfs.c
fs/nfsd/vfs.h

index a2baf538473cfc0c762cff9df3355d738491040e..634f32d847e02a9a56786f7ef86396eb24094729 100644 (file)
@@ -1085,8 +1085,8 @@ nfsd4_clone(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
        if (status)
                goto out;
 
-       status = nfsd4_clone_file_range(src->nf_file, clone->cl_src_pos,
-                       dst->nf_file, clone->cl_dst_pos, clone->cl_count,
+       status = nfsd4_clone_file_range(src, clone->cl_src_pos,
+                       dst, clone->cl_dst_pos, clone->cl_count,
                        EX_ISSYNC(cstate->current_fh.fh_export));
 
        nfsd_file_put(dst);
index 0a048dfb68ec19e8249349852935f715915e6761..7950f2ea1d95bc386d22a3bd9b4288b7f42ef885 100644 (file)
@@ -530,9 +530,11 @@ __be32 nfsd4_set_nfs4_label(struct svc_rqst *rqstp, struct svc_fh *fhp,
 }
 #endif
 
-__be32 nfsd4_clone_file_range(struct file *src, u64 src_pos, struct file *dst,
-               u64 dst_pos, u64 count, bool sync)
+__be32 nfsd4_clone_file_range(struct nfsd_file *nf_src, u64 src_pos,
+               struct nfsd_file *nf_dst, u64 dst_pos, u64 count, bool sync)
 {
+       struct file *src = nf_src->nf_file;
+       struct file *dst = nf_dst->nf_file;
        loff_t cloned;
 
        cloned = vfs_clone_file_range(src, src_pos, dst, dst_pos, count, 0);
index 0174e957b27e446d44529c5b03aa38fa6045392a..a91cd79828850ca5f31a7e9397180c9034252030 100644 (file)
@@ -57,8 +57,9 @@ __be32          nfsd4_set_nfs4_label(struct svc_rqst *, struct svc_fh *,
                    struct xdr_netobj *);
 __be32         nfsd4_vfs_fallocate(struct svc_rqst *, struct svc_fh *,
                                    struct file *, loff_t, loff_t, int);
-__be32         nfsd4_clone_file_range(struct file *, u64, struct file *,
-                                      u64, u64, bool);
+__be32         nfsd4_clone_file_range(struct nfsd_file *nf_src, u64 src_pos,
+                                      struct nfsd_file *nf_dst, u64 dst_pos,
+                                      u64 count, bool sync);
 #endif /* CONFIG_NFSD_V4 */
 __be32         nfsd_create_locked(struct svc_rqst *, struct svc_fh *,
                                char *name, int len, struct iattr *attrs,