From: Pavel Begunkov <asml.silence@gmail.com>
To: linux-fsdevel@vger.kernel.org, Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Jens Axboe <axboe@kernel.dk>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] iov_iter: optimise iter type checking
Date: Sat, 9 Jan 2021 16:09:08 +0000 [thread overview]
Message-ID: <54cd4d1b-d7ec-a74c-8be0-e48780609d56@gmail.com> (raw)
In-Reply-To: <6e795064-fdbd-d354-4b01-a4f7409debf5@gmail.com>
On 06/12/2020 16:01, Pavel Begunkov wrote:
> On 21/11/2020 14:37, Pavel Begunkov wrote:
>> The problem here is that iov_iter_is_*() helpers check types for
>> equality, but all iterate_* helpers do bitwise ands. This confuses
>> compilers, so even if some cases were handled separately with
>> iov_iter_is_*(), corresponding ifs in iterate*() right after are not
>> eliminated.
>>
>> E.g. iov_iter_npages() first handles discards, but iterate_all_kinds()
>> still checks for discard iter type and generates unreachable code down
>> the line.
>
> Ping. This one should be pretty simple
Ping please. Any doubts about this patch?
>
>>
>> text data bss dec hex filename
>> before: 24409 805 0 25214 627e lib/iov_iter.o
>> after: 23977 805 0 24782 60ce lib/iov_iter.o
>>
>> Reviewed-by: Jens Axboe <axboe@kernel.dk>
>> Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
>> ---
>> include/linux/uio.h | 10 +++++-----
>> 1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/include/linux/uio.h b/include/linux/uio.h
>> index 72d88566694e..c5970b2d3307 100644
>> --- a/include/linux/uio.h
>> +++ b/include/linux/uio.h
>> @@ -57,27 +57,27 @@ static inline enum iter_type iov_iter_type(const struct iov_iter *i)
>>
>> static inline bool iter_is_iovec(const struct iov_iter *i)
>> {
>> - return iov_iter_type(i) == ITER_IOVEC;
>> + return iov_iter_type(i) & ITER_IOVEC;
>> }
>>
>> static inline bool iov_iter_is_kvec(const struct iov_iter *i)
>> {
>> - return iov_iter_type(i) == ITER_KVEC;
>> + return iov_iter_type(i) & ITER_KVEC;
>> }
>>
>> static inline bool iov_iter_is_bvec(const struct iov_iter *i)
>> {
>> - return iov_iter_type(i) == ITER_BVEC;
>> + return iov_iter_type(i) & ITER_BVEC;
>> }
>>
>> static inline bool iov_iter_is_pipe(const struct iov_iter *i)
>> {
>> - return iov_iter_type(i) == ITER_PIPE;
>> + return iov_iter_type(i) & ITER_PIPE;
>> }
>>
>> static inline bool iov_iter_is_discard(const struct iov_iter *i)
>> {
>> - return iov_iter_type(i) == ITER_DISCARD;
>> + return iov_iter_type(i) & ITER_DISCARD;
>> }
>>
>> static inline unsigned char iov_iter_rw(const struct iov_iter *i)
>>
>
--
Pavel Begunkov
next prev parent reply other threads:[~2021-01-09 16:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-21 14:37 [PATCH] iov_iter: optimise iter type checking Pavel Begunkov
2020-12-06 16:01 ` Pavel Begunkov
2021-01-09 16:09 ` Pavel Begunkov [this message]
2021-01-09 17:03 ` Al Viro
2021-01-09 21:19 ` Pavel Begunkov
2021-01-09 21:49 ` David Laight
2021-01-09 22:11 ` Pavel Begunkov
2021-01-11 9:35 ` David Laight
2021-01-12 16:04 ` Pavel Begunkov
2021-01-16 5:18 ` Al Viro
2021-01-17 12:12 ` David Laight
2021-01-27 15:48 ` Pavel Begunkov
2021-01-27 16:28 ` David Laight
2021-01-27 18:30 ` Al Viro
2021-01-27 18:31 ` Al Viro
2021-01-28 11:39 ` Pavel Begunkov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54cd4d1b-d7ec-a74c-8be0-e48780609d56@gmail.com \
--to=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.