Re: [PATCH] task_work: simplify the task_work_add() interface

From: Thomas Gleixner
Date: Tue Mar 15 2022 - 10:58:56 EST


On Wed, Feb 23 2022 at 08:27, Christoph Hellwig wrote:
> Provide a low-level task_work_add_nonotify interface that just adds
> the work to the list and open code the TWA_SIGNAL and TWA_NONE callers
> using it. task_work_add() itself now only handles the common TWA_RESUME
> case and can drop the notify argument.

There is a distinct lack of justification in that change log.

> worker->create_index = acct->index;
> - if (!task_work_add(wq->task, &worker->create_work, TWA_SIGNAL)) {
> + if (!task_work_add_nonotify(wq->task, &worker->create_work)) {
> + set_notify_signal(wq->task);

I fail to see the improvement here.

> @@ -9606,7 +9606,7 @@ static __cold void io_ring_exit_work(struct work_struct *work)
> ctx_node);
> /* don't spin on a single task if cancellation failed */
> list_rotate_left(&ctx->tctx_list);
> - ret = task_work_add(node->task, &exit.task_work, TWA_SIGNAL);
> + ret = task_work_add_nonotify(node->task, &exit.task_work);

While I clearly see the regression in this case ...

> if (WARN_ON_ONCE(ret))
> continue;
> /**
> - * task_work_add - ask the @task to execute @work->func()
> + * task_work_add_nonotify - ask the @task to execute @work->func()
> * @task: the task which should run the callback
> * @work: the callback to run
> * @notify: how to notify the targeted task

This parameter is removed below ...

Thanks,

tglx