Skip to content

Commit 1642b44

Browse files
isilenceaxboe
authored andcommitted
io_uring: add a helper for setting a ref node
Setting a new reference node to a file data is not trivial, don't repeat it, add and use a helper. Cc: [email protected] # 5.6+ Signed-off-by: Pavel Begunkov <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent 7778877 commit 1642b44

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

fs/io_uring.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7231,6 +7231,16 @@ static void io_file_ref_kill(struct percpu_ref *ref)
72317231
complete(&data->done);
72327232
}
72337233

7234+
static void io_sqe_files_set_node(struct fixed_file_data *file_data,
7235+
struct fixed_file_ref_node *ref_node)
7236+
{
7237+
spin_lock_bh(&file_data->lock);
7238+
file_data->node = ref_node;
7239+
list_add_tail(&ref_node->node, &file_data->ref_list);
7240+
spin_unlock_bh(&file_data->lock);
7241+
percpu_ref_get(&file_data->refs);
7242+
}
7243+
72347244
static int io_sqe_files_unregister(struct io_ring_ctx *ctx)
72357245
{
72367246
struct fixed_file_data *data = ctx->file_data;
@@ -7758,11 +7768,7 @@ static int io_sqe_files_register(struct io_ring_ctx *ctx, void __user *arg,
77587768
return PTR_ERR(ref_node);
77597769
}
77607770

7761-
file_data->node = ref_node;
7762-
spin_lock_bh(&file_data->lock);
7763-
list_add_tail(&ref_node->node, &file_data->ref_list);
7764-
spin_unlock_bh(&file_data->lock);
7765-
percpu_ref_get(&file_data->refs);
7771+
io_sqe_files_set_node(file_data, ref_node);
77667772
return ret;
77677773
out_fput:
77687774
for (i = 0; i < ctx->nr_user_files; i++) {
@@ -7918,11 +7924,7 @@ static int __io_sqe_files_update(struct io_ring_ctx *ctx,
79187924

79197925
if (needs_switch) {
79207926
percpu_ref_kill(&data->node->refs);
7921-
spin_lock_bh(&data->lock);
7922-
list_add_tail(&ref_node->node, &data->ref_list);
7923-
data->node = ref_node;
7924-
spin_unlock_bh(&data->lock);
7925-
percpu_ref_get(&ctx->file_data->refs);
7927+
io_sqe_files_set_node(data, ref_node);
79267928
} else
79277929
destroy_fixed_file_ref_node(ref_node);
79287930

0 commit comments

Comments
 (0)