• David Howells's avatar
    block: Use iov_iter_extract_pages() and page pinning in direct-io.c · 1ccf164e
    David Howells authored
    Change the old block-based direct-I/O code to use iov_iter_extract_pages()
    to pin user pages or leave kernel pages unpinned rather than taking refs
    when submitting bios.
    
    This makes use of the preceding patches to not take pins on the zero page
    (thereby allowing insertion of zero pages in with pinned pages) and to get
    additional pins on pages, allowing an extracted page to be used in multiple
    bios without having to re-extract it.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    cc: Christoph Hellwig <hch@infradead.org>
    cc: David Hildenbrand <david@redhat.com>
    cc: Lorenzo Stoakes <lstoakes@gmail.com>
    cc: Andrew Morton <akpm@linux-foundation.org>
    cc: Jens Axboe <axboe@kernel.dk>
    cc: Al Viro <viro@zeniv.linux.org.uk>
    cc: Matthew Wilcox <willy@infradead.org>
    cc: Jan Kara <jack@suse.cz>
    cc: Jeff Layton <jlayton@kernel.org>
    cc: Jason Gunthorpe <jgg@nvidia.com>
    cc: Logan Gunthorpe <logang@deltatee.com>
    cc: Hillf Danton <hdanton@sina.com>
    cc: Christian Brauner <brauner@kernel.org>
    cc: Linus Torvalds <torvalds@linux-foundation.org>
    cc: linux-fsdevel@vger.kernel.org
    cc: linux-block@vger.kernel.org
    cc: linux-kernel@vger.kernel.org
    cc: linux-mm@kvack.org
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20230526214142.958751-4-dhowells@redhat.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
    1ccf164e
direct-io.c 38.5 KB