Hello, On Fri, Aug 27, 2021 at 10:13:15PM +0800, Hao Xu wrote: > +static int io_sq_bind_cpu(int cpu) > +{ > + if (!test_cpu_in_current_cpuset(cpu)) > + pr_warn("sqthread %d: bound cpu not allowed\n", current->pid); > + else > + set_cpus_allowed_ptr(current, cpumask_of(cpu)); > + > + return 0; > +} ... > @@ -8208,8 +8217,10 @@ static int io_sq_offload_create(struct io_ring_ctx *ctx, > int cpu = p->sq_thread_cpu; > > ret = -EINVAL; > - if (cpu >= nr_cpu_ids || !cpu_online(cpu)) > + if (cpu >= nr_cpu_ids || !cpu_online(cpu) || > + !test_cpu_in_current_cpuset(cpu)) > goto err_sqpoll; Given that sq_thread is user-like thread and belongs to the right cgroup, I'm not quite sure what the above achieves - the affinities can break anytime, so one-time check doesn't really solve the problem. All it seems to add is warning messages. What's the expected behavior when an io thread can't run on the target cpu anymore? Thanks. -- tejun