Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

NFSD: Use vfs_iocb_iter_write()

Refactor: Enable the use of IOCB flags to control NFSD's individual
write operations. This allows the eventual use of atomic, uncached,
direct, or asynchronous writes.

Suggested-by: NeilBrown <neil@brown.name>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: NeilBrown <neil@brown.name>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>

Chuck Lever 3f3503ad 37fe6f1b

+5 -5
+5 -5
fs/nfsd/vfs.c
··· 1173 1173 struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id); 1174 1174 struct file *file = nf->nf_file; 1175 1175 struct super_block *sb = file_inode(file)->i_sb; 1176 + struct kiocb kiocb; 1176 1177 struct svc_export *exp; 1177 1178 struct iov_iter iter; 1178 1179 errseq_t since; 1179 1180 __be32 nfserr; 1180 1181 int host_err; 1181 - loff_t pos = offset; 1182 1182 unsigned long exp_op_flags = 0; 1183 1183 unsigned int pflags = current->flags; 1184 - rwf_t flags = 0; 1185 1184 bool restore_flags = false; 1186 1185 unsigned int nvecs; 1187 1186 ··· 1206 1207 1207 1208 if (!EX_ISSYNC(exp)) 1208 1209 stable = NFS_UNSTABLE; 1209 - 1210 + init_sync_kiocb(&kiocb, file); 1211 + kiocb.ki_pos = offset; 1210 1212 if (stable && !fhp->fh_use_wgather) 1211 - flags |= RWF_SYNC; 1213 + kiocb.ki_flags |= IOCB_DSYNC; 1212 1214 1213 1215 nvecs = xdr_buf_to_bvec(rqstp->rq_bvec, rqstp->rq_maxpages, payload); 1214 1216 iov_iter_bvec(&iter, ITER_SOURCE, rqstp->rq_bvec, nvecs, *cnt); 1215 1217 since = READ_ONCE(file->f_wb_err); 1216 1218 if (verf) 1217 1219 nfsd_copy_write_verifier(verf, nn); 1218 - host_err = vfs_iter_write(file, &iter, &pos, flags); 1220 + host_err = vfs_iocb_iter_write(file, &kiocb, &iter); 1219 1221 if (host_err < 0) { 1220 1222 commit_reset_write_verifier(nn, rqstp, host_err); 1221 1223 goto out_nfserr;