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>
Mon, 22 Mar 2021 13:42:47 +0000 (07:42 -0600)
commit6d9decbd529ee490695fa3e9ee004edd832bbe0e
tree88708fe526602a8f3d151a807cb7512a43c7e6ee
parent1b22041e8f2c568b6cb2c0cd47e87637c701b398
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