Re: [PATCH] file: always lock position

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 24 Jul 2023 at 10:46, Christian Brauner <brauner@xxxxxxxxxx> wrote:
>
> I don't think we do but it's something to keep in mind with async io
> interfaces where the caller is free to create other threads after having
> registered a request. Depending on how file references are done things
> can get tricky easily.

Honestly, by now, the io_uring code had *better* understand that it
needs to act exactly like a user thread.

Anything else is simply not acceptable. io_uring has been a huge pain,
and the only thing that salvaged the horror was that the io_uring
async code should now *always* be done as a real thread.

If io_uring does something from truly async context (ie interrupts,
not io_uring threads), then io_uring had better be very *very*
careful.

And any kind of "from kthread context" is not acceptable. We've been
there, done that, and have the battle scars. Never again.

So the absolutely *only* acceptable context is "I'm a real
io_uringthread that looks exactly like a user thread in every which
way, except I never return to user space".

And if io_uring does absolutely _anything_ to file descriptors from
any other context, it needs to be fixed *NOW*.

No more games.

And absolutely *nothing* like that disgusting pidfd_getfd().

So the only reason io_uring can do open/close/etc is because from a
file descriptor standpoint it looks just like any other threaded
application would look, and all those optimizations like

        if (atomic_read_acquire(&files->count) == 1) {

JustWork(tm).

I think that's the case right now, and it's all good.

But if I'm unaware of some situation where io_uring does things like
this in some workqueue or other context, people had better holler -
and fix it.

                   Linus



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux