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>
Sun, 11 Apr 2021 23:41:58 +0000 (17:41 -0600)
commit7b29f92da377c358955b522045d0778aa79a540a
tree454cb092a6ba84d253ed1bb65dc86642479f5099
parentd44f554e105b0c20e5b06b9f821bef228e04d573
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