cifs: DIO to/from KVEC-type iterators should now work
DIO to/from KVEC-type iterators should now work as the iterator is passed down to the socket in non-RDMA/non-crypto mode and in RDMA or crypto mode care is taken to handle vmap/vmalloc correctly and not take page refs when building a scatterlist. Signed-off-by: David Howells <dhowells@redhat.com> cc: Steve French <sfrench@samba.org> cc: Shyam Prasad N <nspmangalore@gmail.com> cc: Rohith Surabattula <rohiths.msft@gmail.com> cc: Tom Talpey <tom@talpey.com> cc: Jeff Layton <jlayton@kernel.org> cc: linux-cifs@vger.kernel.org Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
parent
607aea3cc2
commit
e7388b8a1a
|
@ -3549,16 +3549,6 @@ static ssize_t __cifs_writev(
|
|||
struct cifs_aio_ctx *ctx;
|
||||
int rc;
|
||||
|
||||
/*
|
||||
* iov_iter_get_pages_alloc doesn't work with ITER_KVEC.
|
||||
* In this case, fall back to non-direct write function.
|
||||
* this could be improved by getting pages directly in ITER_KVEC
|
||||
*/
|
||||
if (direct && iov_iter_is_kvec(from)) {
|
||||
cifs_dbg(FYI, "use non-direct cifs_writev for kvec I/O\n");
|
||||
direct = false;
|
||||
}
|
||||
|
||||
rc = generic_write_checks(iocb, from);
|
||||
if (rc <= 0)
|
||||
return rc;
|
||||
|
@ -4092,16 +4082,6 @@ static ssize_t __cifs_readv(
|
|||
loff_t offset = iocb->ki_pos;
|
||||
struct cifs_aio_ctx *ctx;
|
||||
|
||||
/*
|
||||
* iov_iter_get_pages_alloc() doesn't work with ITER_KVEC,
|
||||
* fall back to data copy read path
|
||||
* this could be improved by getting pages directly in ITER_KVEC
|
||||
*/
|
||||
if (direct && iov_iter_is_kvec(to)) {
|
||||
cifs_dbg(FYI, "use non-direct cifs_user_readv for kvec I/O\n");
|
||||
direct = false;
|
||||
}
|
||||
|
||||
len = iov_iter_count(to);
|
||||
if (!len)
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue