
static int io_sq_thread_fork(struct io_sq_data *sqd, struct io_ring_ctx *ctx)
{
	int ret;

	clear_bit(IO_SQ_THREAD_SHOULD_STOP, &sqd->state);
	reinit_completion(&sqd->completion);
	ctx->sqo_dead = ctx->sqo_exec = 0;
	sqd->task_pid = current->pid;
	current->flags |= PF_IO_WORKER;
	ret = io_wq_fork_thread(io_sq_thread, sqd);
	current->flags &= ~PF_IO_WORKER;
	if (ret < 0) {
		sqd->thread = NULL;
		return ret;
	}
	wait_for_completion(&sqd->completion);
	return io_uring_alloc_task_context(sqd->thread, ctx);

static int io_sq_thread_fork(struct io_sq_data *sqd, struct io_ring_ctx *ctx)
{
	int ret;

	clear_bit(IO_SQ_THREAD_SHOULD_STOP, &sqd->state);
	reinit_completion(&sqd->completion);
	ctx->sqo_dead = ctx->sqo_exec = 0;
	sqd->task_pid = current->pid;
	current->flags |= PF_IO_WORKER;
	ret = io_wq_fork_thread(io_sq_thread, sqd);
	current->flags &= ~PF_IO_WORKER;
	if (ret < 0) {
		sqd->thread = NULL;
		return ret;
	}
	wait_for_completion(&sqd->completion);
	return io_uring_alloc_task_context(sqd->thread, ctx);