Re: [PATCH 2/2] blkdev: __blkdev_direct_IO_simple: make sure to fill up the bio
From: Al Viro <viro@ZenIV.linux.org.uk>
Date: 2018-07-19 11:08:41
On Thu, Jul 19, 2018 at 12:37:13PM +0200, Jan Kara wrote:
On Thu 19-07-18 18:21:23, Ming Lei wrote:quoted
On Thu, Jul 19, 2018 at 11:39:18AM +0200, Martin Wilck wrote:quoted
bio_iov_iter_get_pages() returns only pages for a single non-empty segment of the input iov_iter's iovec. This may be much less than the number of pages __blkdev_direct_IO_simple() is supposed to process. CallIn bio_iov_iter_get_pages(), iov_iter_get_pages() supposes to retrieve as many as possible pages since both 'maxsize' and 'maxpages' are provided to cover all.
Huh? Why does having a way to say "I (the caller) don't want more than <amount>" implies anything of that sort? It never had been promised, explicitly or not...
quoted
So the question is why iov_iter_get_pages() doesn't work as expected?Well, there has never been a promise that it will grab *all* pages in the iter AFAIK. Practically, I think that it was just too hairy to implement in the macro magic that iter processing is... Al might know more (added to CC).
Not really - it's more that VM has every right to refuse letting you pin an arbitrary amount of pages anyway.