io_uring: cache async and regular file state for fixed files
authorJens Axboe <axboe@kernel.dk>
Fri, 12 Mar 2021 15:30:14 +0000 (08:30 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 25 Mar 2021 16:24:19 +0000 (10:24 -0600)
commitd1c9ef5f10516b1be5d51c9f3bc4c90e6971b69a
tree586251cd0f912c1068109ec7de7af88fa02152ba
parent0ffb09f2ca28303e3b20500d48eb699b9f9f076d
io_uring: cache async and regular file state for fixed files

We have to dig quite deep to check for particularly whether or not a
file supports a fast-path nonblock attempt. For fixed files, we can do
this lookup once and cache the state instead.

This adds two new bits to track whether we support async read/write
attempt, and lines up the REQ_F_ISREG bit with those two. The file slot
re-uses the last 3 (or 2, for 32-bit) of the file pointer to cache that
state, and then we mask it in when we go and use a fixed file.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c