All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Begunkov <asml.silence@gmail.com>
To: Bernd Schubert <bernd.schubert@fastmail.fm>,
	Bernd Schubert <bschubert@ddn.com>,
	Miklos Szeredi <miklos@szeredi.hu>
Cc: Jens Axboe <axboe@kernel.dk>,
	linux-fsdevel@vger.kernel.org, io-uring@vger.kernel.org,
	Joanne Koong <joannelkoong@gmail.com>,
	Josef Bacik <josef@toxicpanda.com>,
	Amir Goldstein <amir73il@gmail.com>,
	Ming Lei <tom.leiming@gmail.com>, David Wei <dw@davidwei.uk>,
	bernd@bsbernd.com
Subject: Re: [PATCH RFC v7 00/16] fuse: fuse-over-io-uring
Date: Sun, 8 Dec 2024 23:16:57 +0000	[thread overview]
Message-ID: <96af56e8-921d-4d64-8991-9b0e53c782b3@gmail.com> (raw)
In-Reply-To: <eadccc5d-79f8-4c26-a60c-2b5bf9061734@fastmail.fm>

On 12/6/24 11:36, Bernd Schubert wrote:
> On 12/3/24 15:32, Bernd Schubert wrote:
>> On 12/3/24 15:24, Pavel Begunkov wrote:
>>> On 11/27/24 13:40, Bernd Schubert wrote:
>>>> [I removed RFC status as the design should be in place now
>>>> and as xfstests pass. I still reviewing patches myself, though
>>>> and also repeatings tests with different queue sizes.]
>>>
>>> I left a few comments, but it looks sane. At least on the io_uring
>>> side nothing weird caught my eye. Cancellations might be a bit
>>> worrisome as usual, so would be nice to give it a good run with
>>> sanitizers.
>>
>> Thanks a lot for your reviews, new series is in preparation, will
>> send it out tomorrow to give a test run over night. I'm
>> running xfstests on a kernel that has lockdep and ASAN enabled, which
>> is why it takes around 15 hours (with/without FOPEN_DIRECT_IO).
> 
> I found a few issues myself and somehow xfstests take more
> than twice as long right with 6.13 *and a slightly different kernel
> config. Still waiting for test completion.
> 
> 
> I have a question actually regarding patch 15 that handles
> IO_URING_F_CANCEL. I think there there is a race in v7 and before,
> as the fuse entry state FRRS_WAIT might not have been reached _yet_
> and then io_uring_cmd_done() would not be called.
> Can I do it like this in fuse_uring_cancel()

A IO_URING_F_CANCEL doesn't cancel a request nor removes it
from io_uring's cancellation list, io_uring_cmd_done() does.
You might also be getting multiple IO_URING_F_CANCEL calls for
a request until the request is released.


> if (need_cmd_done) {
> 	io_uring_cmd_done(cmd, -ENOTCONN, 0, issue_flags);
> } else {
> 	/*
> 	 * We don't check for the actual state, but let io-uring
> 	 * layer handle if re-sending the IO_URING_F_CANCEL SQE is still
> 	 * needed.
> 	 */
> 	ret = -EAGAIN;
> }
> 
> I.e. lets assume umount races with IO_URING_F_CANCEL (for example umount
> triggers a daemon crash). The umount process/task could now already do
> or start to do io_uring_cmd_done and just around the same time and
> IO_URING_F_CANCEL comes in.
> My question is if io-uring knows that re-sending the
> IO_URING_F_CANCEL is still needed or will it avoid re-sending if
> io_uring_cmd_done() was already done?
> I could also add state checking in the fuse_uring_cancel function.
-- 
Pavel Begunkov


  reply	other threads:[~2024-12-08 23:16 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-27 13:40 [PATCH RFC v7 00/16] fuse: fuse-over-io-uring Bernd Schubert
2024-11-27 13:40 ` [PATCH RFC v7 01/16] fuse: rename to fuse_dev_end_requests and make non-static Bernd Schubert
2024-11-28  0:19   ` Joanne Koong
2024-11-27 13:40 ` [PATCH RFC v7 02/16] fuse: Move fuse_get_dev to header file Bernd Schubert
2024-11-28  0:20   ` Joanne Koong
2024-11-27 13:40 ` [PATCH RFC v7 03/16] fuse: Move request bits Bernd Schubert
2024-11-28  0:21   ` Joanne Koong
2024-11-27 13:40 ` [PATCH RFC v7 04/16] fuse: Add fuse-io-uring design documentation Bernd Schubert
2024-12-03 12:30   ` Pavel Begunkov
2024-11-27 13:40 ` [PATCH RFC v7 05/16] fuse: make args->in_args[0] to be always the header Bernd Schubert
2024-11-28  0:27   ` Joanne Koong
2024-11-27 13:40 ` [PATCH RFC v7 06/16] fuse: {uring} Handle SQEs - register commands Bernd Schubert
2024-11-28  2:23   ` Joanne Koong
2024-11-28 18:20     ` Bernd Schubert
2024-12-03 13:24   ` Pavel Begunkov
2024-12-03 13:49     ` Bernd Schubert
2024-12-03 14:16       ` Pavel Begunkov
2024-12-03 13:38   ` Pavel Begunkov
2024-11-27 13:40 ` [PATCH RFC v7 07/16] fuse: Make fuse_copy non static Bernd Schubert
2024-11-27 13:40 ` [PATCH RFC v7 08/16] fuse: Add fuse-io-uring handling into fuse_copy Bernd Schubert
2024-11-27 13:40 ` [PATCH RFC v7 09/16] fuse: {uring} Add uring sqe commit and fetch support Bernd Schubert
2024-12-03 13:47   ` Pavel Begunkov
2024-11-27 13:40 ` [PATCH RFC v7 10/16] fuse: {uring} Handle teardown of ring entries Bernd Schubert
2024-11-27 13:40 ` [PATCH RFC v7 11/16] fuse: {uring} Allow to queue fg requests through io-uring Bernd Schubert
2024-12-03 14:09   ` Pavel Begunkov
2024-12-03 22:46     ` Bernd Schubert
2024-12-08 23:02   ` Pavel Begunkov
2024-11-27 13:40 ` [PATCH RFC v7 12/16] fuse: {uring} Allow to queue bg " Bernd Schubert
2024-11-27 13:40 ` [PATCH RFC v7 13/16] io_uring/cmd: let cmds to know about dying task Bernd Schubert
2024-12-03 12:15   ` Pavel Begunkov
2024-12-03 12:15     ` Bernd Schubert
2024-11-27 13:40 ` [PATCH RFC v7 14/16] fuse: {uring} Handle IO_URING_F_TASK_DEAD Bernd Schubert
2024-12-03 12:20   ` Pavel Begunkov
2024-11-27 13:40 ` [PATCH RFC v7 15/16] fuse: {io-uring} Prevent mount point hang on fuse-server termination Bernd Schubert
2024-11-27 13:40 ` [PATCH RFC v7 16/16] fuse: enable fuse-over-io-uring Bernd Schubert
2024-11-27 13:45 ` [PATCH RFC v7 00/16] fuse: fuse-over-io-uring Bernd Schubert
2024-12-03 14:24 ` Pavel Begunkov
2024-12-03 14:32   ` Bernd Schubert
2024-12-06 11:36     ` Bernd Schubert
2024-12-08 23:16       ` Pavel Begunkov [this message]
2024-12-09  8:02         ` Bernd Schubert

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=96af56e8-921d-4d64-8991-9b0e53c782b3@gmail.com \
    --to=asml.silence@gmail.com \
    --cc=amir73il@gmail.com \
    --cc=axboe@kernel.dk \
    --cc=bernd.schubert@fastmail.fm \
    --cc=bernd@bsbernd.com \
    --cc=bschubert@ddn.com \
    --cc=dw@davidwei.uk \
    --cc=io-uring@vger.kernel.org \
    --cc=joannelkoong@gmail.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=tom.leiming@gmail.com \
    /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.