io_uring/filetable: don't unnecessarily clear/reset bitmap
authorJens Axboe <axboe@kernel.dk>
Tue, 7 May 2024 21:09:02 +0000 (15:09 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 8 May 2024 14:27:45 +0000 (08:27 -0600)
If we're updating an existing slot, we clear the slot bitmap only to
set it again right after. Just leave the bit set rather than toggle
it off and on, and move the unused slot setting into the branch of
not already having a file occupy this slot.

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

index 6e86e6188dbeebf9672cc55cb0261337bc2902c2..997c56d32ee6c9ef6674bb2f90a47ea2407259b4 100644 (file)
@@ -84,12 +84,12 @@ static int io_install_fixed_file(struct io_ring_ctx *ctx, struct file *file,
                        return ret;
 
                file_slot->file_ptr = 0;
-               io_file_bitmap_clear(&ctx->file_table, slot_index);
+       } else {
+               io_file_bitmap_set(&ctx->file_table, slot_index);
        }
 
        *io_get_tag_slot(ctx->file_data, slot_index) = 0;
        io_fixed_file_set(file_slot, file);
-       io_file_bitmap_set(&ctx->file_table, slot_index);
        return 0;
 }