From: Pavel Begunkov <asml.silence@gmail.com>
To: Stefan Metzmacher <metze@samba.org>, Jens Axboe <axboe@kernel.dk>
Cc: io-uring <io-uring@vger.kernel.org>,
Samba Technical <samba-technical@lists.samba.org>,
Jeremy Allison <jra@samba.org>
Subject: Re: Data Corruption bug with Samba's vfs_iouring and Linux 5.6.7/5.7rc3
Date: Wed, 6 May 2020 18:42:54 +0300 [thread overview]
Message-ID: <117f19ce-e2ef-9c99-93a4-31f9fff9e132@gmail.com> (raw)
In-Reply-To: <9c99b692-7812-96d7-5e88-67912cef6547@samba.org>
On 06/05/2020 18:20, Stefan Metzmacher wrote:
> Am 06.05.20 um 14:55 schrieb Pavel Begunkov:
>> On 05/05/2020 23:19, Stefan Metzmacher wrote:
>> AFAIK, it can. io_uring first tries to submit a request with IOCB_NOWAIT,
>> in short for performance reasons. And it have been doing so from the beginning
>> or so. The same is true for writes.
>
> See the other mails in the thread. The test I wrote shows the
Cool you resolved the issue!
> implicit IOCB_NOWAIT was not exposed to the caller in (at least in 5.3
> and 5.4).
>
# git show remotes/origin/for-5.3/io_uring:fs/io_uring grep "kiocb->ki_flags |=
IOCB_NOWAIT" -A 5 -B 5
if (force_nonblock)
kiocb->ki_flags |= IOCB_NOWAIT;
And it have been there since 5.2 or even earlier. I don't know, your results
could be because of different policy in block layer, something unexpected in
io_uring, etc., but it's how it was intended to be.
> I think the typical user don't want it to be exposed!
> I'm not sure for blocking reads on a socket, but for files
> below EOF it's really not what's expected.
Hard to say, but even read(2) without any NONBLOCK doesn't guarantee that.
Hopefully, BPF will help us with that in the future.
>
> If that behavior is desired RWF_NOWAIT can be used explicitly.
>
> metze
>
--
Pavel Begunkov
next prev parent reply other threads:[~2020-05-06 15:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-05 10:04 Data Corruption bug with Samba's vfs_iouring and Linux 5.6.7/5.7rc3 Stefan Metzmacher
2020-05-05 14:41 ` Jens Axboe
2020-05-05 15:44 ` Jens Axboe
2020-05-05 16:53 ` Jens Axboe
2020-05-05 17:39 ` Jens Axboe
2020-05-05 17:48 ` Jeremy Allison
2020-05-05 17:50 ` Jens Axboe
[not found] ` <3a3e311c7a4bc4d4df371b95ca0c66a792fab986.camel@cryptolab.net>
2020-05-06 10:33 ` Stefan Metzmacher
2020-05-06 10:41 ` Stefan Metzmacher
[not found] ` <62e94d8a6cecf60cfba7e5ca083e90bc8f216d61.camel@cryptolab.net>
2020-05-06 14:08 ` Stefan Metzmacher
2020-05-06 14:43 ` Andreas Schneider
2020-05-06 14:46 ` Andreas Schneider
2020-05-06 15:06 ` Stefan Metzmacher
2020-05-06 17:03 ` Jeremy Allison
2020-05-06 17:13 ` Jeremy Allison
2020-05-06 18:01 ` Jeremy Allison
2020-05-05 20:19 ` Stefan Metzmacher
2020-05-06 12:55 ` Pavel Begunkov
2020-05-06 15:20 ` Stefan Metzmacher
2020-05-06 15:42 ` Pavel Begunkov [this message]
2020-05-07 16:43 ` Jens Axboe
2020-05-07 16:48 ` Jeremy Allison
2020-05-07 16:50 ` Jens Axboe
2020-05-07 18:31 ` Jeremy Allison
2020-05-07 18:35 ` Jens Axboe
2020-05-07 18:55 ` Jeremy Allison
2020-05-07 18:58 ` Jens Axboe
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=117f19ce-e2ef-9c99-93a4-31f9fff9e132@gmail.com \
--to=asml.silence@gmail.com \
--cc=axboe@kernel.dk \
--cc=io-uring@vger.kernel.org \
--cc=jra@samba.org \
--cc=metze@samba.org \
--cc=samba-technical@lists.samba.org \
/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.