[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e755fec3-4181-1414-0603-02e1a1f4e9eb@gmail.com>
Date: Tue, 15 Dec 2020 14:05:35 +0000
From: Pavel Begunkov <asml.silence@...il.com>
To: Ming Lei <ming.lei@...hat.com>
Cc: linux-block@...r.kernel.org, Jens Axboe <axboe@...nel.dk>,
Christoph Hellwig <hch@...radead.org>,
Matthew Wilcox <willy@...radead.org>,
Johannes Weiner <hannes@...xchg.org>,
Alexander Viro <viro@...iv.linux.org.uk>,
"Darrick J . Wong" <darrick.wong@...cle.com>,
"Martin K . Petersen" <martin.petersen@...cle.com>,
Jonathan Corbet <corbet@....net>, linux-xfs@...r.kernel.org,
linux-fsdevel@...r.kernel.org, io-uring@...r.kernel.org,
linux-kernel@...r.kernel.org, target-devel@...r.kernel.org,
linux-scsi@...r.kernel.org, linux-doc@...r.kernel.org
Subject: Re: [PATCH v1 0/6] no-copy bvec
On 15/12/2020 12:03, Ming Lei wrote:
> On Tue, Dec 15, 2020 at 11:14:20AM +0000, Pavel Begunkov wrote:
>> On 15/12/2020 01:41, Ming Lei wrote:
>>> On Tue, Dec 15, 2020 at 12:20:19AM +0000, Pavel Begunkov wrote:
>>>> Instead of creating a full copy of iter->bvec into bio in direct I/O,
>>>> the patchset makes use of the one provided. It changes semantics and
>>>> obliges users of asynchronous kiocb to track bvec lifetime, and [1/6]
>>>> converts the only place that doesn't.
>>>
>>> Just think of one corner case: iov_iter(BVEC) may pass bvec table with zero
>>> length bvec, which may not be supported by block layer or driver, so
>>> this patchset has to address this case first.
>>
>> The easiest for me would be to fallback to copy if there are zero bvecs,
>> e.g. finding such during iov_iter_alignment(), but do we know from where
>> zero bvecs can came? As it's internals we may want to forbid them if
>> there is not too much hassle.
>
> You may find clue from the following link:
>
> https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg2262077.html
Thanks for the link!
Al, you mentioned "Zero-length segments are not disallowed", do you have
a strong opinion on that? Apart from already diverged behaviour from the
block layer and getting in the way of this series, without it we'd also be
able to remove some extra ifs, e.g. in iterate_bvec()
--
Pavel Begunkov
Powered by blists - more mailing lists