From: Al Viro <viro@zeniv.linux.org.uk>
To: Jens Axboe <axboe@kernel.dk>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH 1/2] fs: add support for LOOKUP_NONBLOCK
Date: Fri, 11 Dec 2020 02:45:53 +0000 [thread overview]
Message-ID: <20201211024553.GW3579531@ZenIV.linux.org.uk> (raw)
In-Reply-To: <139ecda1-bb08-b1f2-655f-eeb9976e8cff@kernel.dk>
On Thu, Dec 10, 2020 at 02:06:39PM -0700, Jens Axboe wrote:
> On 12/10/20 1:53 PM, Linus Torvalds wrote:
> > On Thu, Dec 10, 2020 at 12:01 PM Jens Axboe <axboe@kernel.dk> wrote:
> >>
> >> io_uring always punts opens to async context, since there's no control
> >> over whether the lookup blocks or not. Add LOOKUP_NONBLOCK to support
> >> just doing the fast RCU based lookups, which we know will not block. If
> >> we can do a cached path resolution of the filename, then we don't have
> >> to always punt lookups for a worker.
> >
> > Ok, this looks much better to me just from the name change.
> >
> > Half of the patch is admittedly just to make sure it now returns the
> > right error from unlazy_walk (rather than knowing it's always
> > -ECHILD), and that could be its own thing, but I'm not sure it's even
> > worth splitting up. The only reason to do it would be to perhaps make
> > it really clear which part is the actual change, and which is just
> > that error handling cleanup.
> >
> > So it looks fine to me, but I will leave this all to Al.
>
> I did consider doing a prep patch just making the error handling clearer
> and get rid of the -ECHILD assumption, since it's pretty odd and not
> even something I'd expect to see in there. Al, do you want a prep patch
> to do that to make the change simpler/cleaner?
No, I do not. Why bother returning anything other than -ECHILD, when
you can just have path_init() treat you flag sans LOOKUP_RCU as "fail
with -EAGAIN now" and be done with that?
What's the point propagating that thing when we are going to call the
non-RCU variant next if we get -ECHILD?
And that still doesn't answer the questions about the difference between
->d_revalidate() and ->get_link() (for the latter you keep the call in
RCU mode, for the former you generate that -EAGAIN crap). Or between
->d_revalidate() and ->permission(), for that matter.
Finally, I really wonder what is that for; if you are in conditions when
you really don't want to risk going to sleep, you do *NOT* want to
do mnt_want_write(). Or ->open(). Or truncate(). Or, for Cthulhu
sake, IMA hash calculation.
So how hard are your "we don't want to block here" requirements? Because
the stuff you do after complete_walk() can easily be much longer than
everything else.
next prev parent reply other threads:[~2020-12-11 2:47 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-10 20:01 [PATCHSET 0/2] fs: Support for LOOKUP_NONBLOCK / RESOLVE_NONBLOCK Jens Axboe
2020-12-10 20:01 ` [PATCH 1/2] fs: add support for LOOKUP_NONBLOCK Jens Axboe
2020-12-10 20:53 ` Linus Torvalds
2020-12-10 21:06 ` Jens Axboe
2020-12-11 2:45 ` Al Viro [this message]
2020-12-11 16:05 ` Jens Axboe
2020-12-11 17:20 ` Al Viro
2020-12-11 17:35 ` Linus Torvalds
2020-12-11 18:50 ` Jens Axboe
2020-12-11 21:51 ` Al Viro
2020-12-11 23:47 ` Jens Axboe
2020-12-11 17:33 ` Matthew Wilcox
2020-12-11 18:55 ` Jens Axboe
2020-12-11 2:35 ` Al Viro
2020-12-11 15:57 ` Jens Axboe
2020-12-11 17:21 ` Linus Torvalds
2020-12-11 17:29 ` Al Viro
2020-12-11 17:38 ` Al Viro
2020-12-11 17:44 ` Linus Torvalds
2020-12-11 21:46 ` Jens Axboe
2020-12-10 20:01 ` [PATCH 2/2] fs: expose LOOKUP_NONBLOCK through openat2() RESOLVE_NONBLOCK Jens Axboe
2020-12-10 22:29 ` Dave Chinner
2020-12-10 23:12 ` Jens Axboe
2020-12-10 23:29 ` Linus Torvalds
2020-12-11 0:58 ` Dave Chinner
2020-12-11 1:01 ` Linus Torvalds
2020-12-11 3:45 ` Dave Chinner
2020-12-11 18:07 ` Linus Torvalds
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=20201211024553.GW3579531@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=axboe@kernel.dk \
--cc=linux-fsdevel@vger.kernel.org \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).