On Sat, Aug 05, 2023 at 07:17:54PM +0200, Christian Brauner wrote:
On Sun, 06 Aug 2023 02:11:58 +1000, Aleksa Sarai wrote:
O_TMPFILE is actually __O_TMPFILE|O_DIRECTORY. This means that the old fast-path check for RESOLVE_CACHED would reject all users passing O_DIRECTORY with -EAGAIN, when in fact the intended test was to check for __O_TMPFILE.
And afaict, io_uring has the same problem in
static bool io_openat_force_async(struct io_open *open) { /* * Don't bother trying for O_TRUNC, O_CREAT, or O_TMPFILE open, * it'll always -EAGAIN */ return open->how.flags & (O_TRUNC | O_CREAT | O_TMPFILE); }
always forcing O_DIRECTORY lookups to go async. So that needs another fix.