Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Jan 2024 14:07:34 -0300
From:      =?UTF-8?Q?Vin=C3=ADcius_dos_Santos_Oliveira?= <vini.ipsmaker@gmail.com>
To:        Alan Somers <asomers@freebsd.org>
Cc:        Konstantin Belousov <kostikbel@gmail.com>, freebsd-threads@freebsd.org,  Konstantin Belousov <kib@freebsd.org>
Subject:   Re: aio_read2() and aio_write2()
Message-ID:  <CAK9RveK-sjLxCkKpkSTYkecRQVwT%2BuoOSsaW3xD130Hnwb=cog@mail.gmail.com>
In-Reply-To: <CAOtMX2h7vmwKHWUm7aHAfJ0QGPYfaWUmriu%2BxpwA2yK8O2YOoA@mail.gmail.com>
References:  <CAOtMX2haq%2BErvqD2PDYKUGRgdCrk2SDjtoPL-W5jR8q8_4denA@mail.gmail.com> <CAK9RveJLK9uU0twM%2BKznUNnUnsqzwoqidPN8dzNptMQ50Z7r1Q@mail.gmail.com> <CAOtMX2ijQ=KsccMyqH-yAn6SJPR7MD_yy6CF0R2vNrQ-fhUq2Q@mail.gmail.com> <ZaMsUn8xFKrDkJb_@kib.kiev.ua> <CAK9Rve%2BuYpxWyRPwh6gxjRkisU7WPKjXicU9%2BYiqFG-=c3trvg@mail.gmail.com> <CAOtMX2h7vmwKHWUm7aHAfJ0QGPYfaWUmriu%2BxpwA2yK8O2YOoA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Em dom., 14 de jan. de 2024 =C3=A0s 13:30, Alan Somers
<asomers@freebsd.org> escreveu:
> I don't understand.  What are you worried about that would block?
> lseek never does.  It never actually goes to disk; it just retrieves a
> variable from within the kernel.  So while the expense of a syscall is
> non-zero, you don't have to worry about lseek blocking.

Sorry, that was a lot of condensed information that I dumped together.

We can use lseek to get the offset and use AIO specifying the offset
we just queried. However the untrusted sandboxed process might
actually send as a socket file descriptor (we don't control what we
get from the untrusted sandboxed process), and lseek is then
inappropriate. From what I've read from the source code, we can pass
these bogus offsets to AIO, and it'll just work. However we're still
paying an extra syscall (and code doesn't feel right anyway).

Anyway, the kernel *already* has this thread pool (AIO daemons), and
the only change required here is a flag that controls whether
FOF_OFFSET is passed along. That's a pretty non-invasive change. What
is the problem? Again, the model already works fine on Windows and
Linux.

--
Vin=C3=ADcius dos Santos Oliveira
https://vinipsmaker.github.io/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAK9RveK-sjLxCkKpkSTYkecRQVwT%2BuoOSsaW3xD130Hnwb=cog>