• David Howells's avatar
    netfs: Add support for DIO buffering · 21d706d5
    David Howells authored
    Add a bvec array pointer and an iterator to netfs_io_request for either
    holding a copy of a DIO iterator or a list of all the bits of buffer
    pointed to by a DIO iterator.
    
    There are two problems:  Firstly, if an iovec-class iov_iter is passed to
    ->read_iter() or ->write_iter(), this cannot be passed directly to
    kernel_sendmsg() or kernel_recvmsg() as that may cause locking recursion if
    a fault is generated, so we need to keep track of the pages involved
    separately.
    
    Secondly, if the I/O is asynchronous, we must copy the iov_iter describing
    the buffer before returning to the caller as it may be immediately
    deallocated.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    cc: linux-cachefs@redhat.com
    cc: linux-fsdevel@vger.kernel.org
    cc: linux-mm@kvack.org
    21d706d5
objects.c 4.58 KB