From: Miklos Szeredi <[email protected]>
To: Josh Triplett <[email protected]>
Cc: Michael Kerrisk <[email protected]>,
[email protected],
"[email protected]" <[email protected]>,
lkml <[email protected]>,
Alexander Viro <[email protected]>,
Arnd Bergmann <[email protected]>, Jens Axboe <[email protected]>,
Aleksa Sarai <[email protected]>,
linux-man <[email protected]>,
Linux API <[email protected]>
Subject: Re: [PATCH v5 2/3] fs: openat2: Extend open_how to allow userspace-selected fds
Date: Thu, 23 Apr 2020 08:04:25 +0200 [thread overview]
Message-ID: <CAJfpeguaVYo-Lf-5Bi=EYJYWdmCfo3BqZA=kj9E5UmDb0mBc1w@mail.gmail.com> (raw)
In-Reply-To: <20200423044226.GH161058@localhost>
On Thu, Apr 23, 2020 at 6:42 AM Josh Triplett <[email protected]> wrote:
>
> On Thu, Apr 23, 2020 at 06:24:14AM +0200, Miklos Szeredi wrote:
> > On Thu, Apr 23, 2020 at 2:48 AM Josh Triplett <[email protected]> wrote:
> > > On Wed, Apr 22, 2020 at 09:55:56AM +0200, Miklos Szeredi wrote:
> > > > On Wed, Apr 22, 2020 at 8:06 AM Michael Kerrisk (man-pages)
> > > > <[email protected]> wrote:
> > > > >
> > > > > [CC += linux-api]
> > > > >
> > > > > On Wed, 22 Apr 2020 at 07:20, Josh Triplett <[email protected]> wrote:
> > > > > >
> > > > > > Inspired by the X protocol's handling of XIDs, allow userspace to select
> > > > > > the file descriptor opened by openat2, so that it can use the resulting
> > > > > > file descriptor in subsequent system calls without waiting for the
> > > > > > response to openat2.
> > > > > >
> > > > > > In io_uring, this allows sequences like openat2/read/close without
> > > > > > waiting for the openat2 to complete. Multiple such sequences can
> > > > > > overlap, as long as each uses a distinct file descriptor.
> > > >
> > > > If this is primarily an io_uring feature, then why burden the normal
> > > > openat2 API with this?
> > >
> > > This feature was inspired by io_uring; it isn't exclusively of value
> > > with io_uring. (And io_uring doesn't normally change the semantics of
> > > syscalls.)
> >
> > What's the use case of O_SPECIFIC_FD beyond io_uring?
>
> Avoiding a call to dup2 and close, if you need something as a specific
> file descriptor, such as when setting up to exec something, or when
> debugging a program.
>
> I don't expect it to be as widely used as with io_uring, but I also
> don't want io_uring versions of syscalls to diverge from the underlying
> syscalls, and this would be a heavy divergence.
What are the plans for those syscalls that don't easily lend
themselves to this modification (such as accept(2))? Do we want to
introduce another variant of these? Is that really worth it? If not,
we are faced with the same divergence.
Compared to that, having a common flag for file ops to enable the use
of fixed and private file descriptors is a clean and well contained
interface.
> > > > This would also allow Implementing a private fd table for io_uring.
> > > > I.e. add a flag interpreted by file ops (IORING_PRIVATE_FD), including
> > > > openat2 and freely use the private fd space without having to worry
> > > > about interactions with other parts of the system.
> > >
> > > I definitely don't want to add a special kind of file descriptor that
> > > doesn't work in normal syscalls taking file descriptors. A file
> > > descriptor allocated via O_SPECIFIC_FD is an entirely normal file
> > > descriptor, and works anywhere a file descriptor normally works.
> >
> > What's the use case of allocating a file descriptor within io_uring
> > and using it outside of io_uring?
>
> Calling a syscall not provided via io_uring. Calling a library that
> doesn't use io_uring. Passing the file descriptor via UNIX socket to
> another program. Passing the file descriptor via exec to another
> program. Userspace is modular, and file descriptors are widely used.
I mean, you could open the file descriptor outside of io_uring in such
cases, no? The point of O_SPECIFIC_FD is to be able to perform short
sequences of open/dosomething/close without having to block and having
to issue separate syscalls. If you're going to issue separate
syscalls anyway, then I see no point in doing the open within
io_uring. Or?
Thanks,
Miklos
next prev parent reply other threads:[~2020-04-23 6:04 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-22 5:19 [PATCH v5 0/3] Support userspace-selected fds Josh Triplett
2020-04-22 5:19 ` [PATCH v5 1/3] fs: Support setting a minimum fd for "lowest available fd" allocation Josh Triplett
2020-04-22 6:06 ` Michael Kerrisk (man-pages)
2020-04-23 1:12 ` Dmitry V. Levin
2020-04-23 4:51 ` Josh Triplett
2020-04-23 9:24 ` Arnd Bergmann
2020-04-22 5:20 ` [PATCH v5 2/3] fs: openat2: Extend open_how to allow userspace-selected fds Josh Triplett
2020-04-22 6:06 ` Michael Kerrisk (man-pages)
2020-04-22 7:55 ` Miklos Szeredi
2020-04-23 0:48 ` Josh Triplett
2020-04-23 4:24 ` Miklos Szeredi
2020-04-23 4:42 ` Josh Triplett
2020-04-23 6:04 ` Miklos Szeredi [this message]
2020-04-23 7:33 ` Josh Triplett
2020-04-23 7:45 ` Miklos Szeredi
2020-04-23 7:57 ` Miklos Szeredi
2020-04-23 9:20 ` Miklos Szeredi
2020-04-23 9:46 ` Miklos Szeredi
2020-04-23 8:06 ` Josh Triplett
2020-04-22 5:20 ` [PATCH v5 3/3] fs: pipe2: Support O_SPECIFIC_FD Josh Triplett
2020-04-22 6:06 ` Michael Kerrisk (man-pages)
2020-04-22 15:44 ` Florian Weimer
2020-04-23 0:44 ` Josh Triplett
2020-04-22 6:05 ` [PATCH v5 0/3] Support userspace-selected fds Michael Kerrisk (man-pages)
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='CAJfpeguaVYo-Lf-5Bi=EYJYWdmCfo3BqZA=kj9E5UmDb0mBc1w@mail.gmail.com' \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/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