io_uring: kill hot path fixed file bitmap debug checks
authorPavel Begunkov <asml.silence@gmail.com>
Sun, 16 Oct 2022 20:30:49 +0000 (21:30 +0100)
committerJens Axboe <axboe@kernel.dk>
Sun, 16 Oct 2022 23:07:53 +0000 (17:07 -0600)
We test file_table.bitmap in io_file_get_fixed() to check invariants,
don't do it, it's expensive and was showing up in profiles. No reports of
this triggering has come in. Move the check to the file clear instead,
which will still catch any wrong usage.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/cf77f2ded68d2e5b2bc7355784d969837d48e023.1665891182.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/filetable.h
io_uring/io_uring.c

index 19d2aed66c72e59ffaeb4eae0f63033293a09bef..351111ff888274e8fddcb7c6c963e74059dae7d4 100644 (file)
@@ -25,6 +25,7 @@ unsigned int io_file_get_flags(struct file *file);
 
 static inline void io_file_bitmap_clear(struct io_file_table *table, int bit)
 {
+       WARN_ON_ONCE(!test_bit(bit, table->bitmap));
        __clear_bit(bit, table->bitmap);
        table->alloc_hint = bit;
 }
index 18aa39709faec608b3f903e1736720409f9c0dd6..6e50f548de1a7701574122b3c9c94c6255a559b9 100644 (file)
@@ -1858,7 +1858,6 @@ inline struct file *io_file_get_fixed(struct io_kiocb *req, int fd,
        /* mask in overlapping REQ_F and FFS bits */
        req->flags |= (file_ptr << REQ_F_SUPPORT_NOWAIT_BIT);
        io_req_set_rsrc_node(req, ctx, 0);
-       WARN_ON_ONCE(file && !test_bit(fd, ctx->file_table.bitmap));
 out:
        io_ring_submit_unlock(ctx, issue_flags);
        return file;