Skip to content

Was: deferring __fput()

Oleg Nesterov lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest4 patches 23 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4task_work: use the single-linked list to shrink sizeof(task_work)include/linux/sched.h include/linux/task_work.h include/linux/tracehook.h +2 more+42 -340 replies
2/4task_work: don't rely on PF_EXITINGinclude/linux/task_work.h kernel/task_work.c+10 -110 replies
3/4task_work: deal with task_work callbacks adding more workkernel/task_work.c+21 -120 replies
4/4task_work: kill task_work->datainclude/linux/cred.h include/linux/task_work.h kernel/irq/manage.c +2 more+19 -271 reply

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/4] Was: deferring __fput()
Quoted 7 lines · Oleg Nesterov

And if it always takes ->pi_lock we do not need the new PF_ or something else, exit_task_work() can set task->task_works = NO_MORE under ->pi_lock (task_work_run() can check PF_EXITING), and task_work_add() ensures that task_works != NO_MORE.

What do you think?

It is not clear to me if you agree or not. So I am simply sending the patches I have.

Feel free to ignore or re-do.

Seriously, why should we add 2 pointers into task_struct? Sure, this is minor, but still... But perhaps task_work.c should not play tricks with the circular list, task_work_run() can reverse the list as you initially suggested.

Also, I am not sure about "define rcu_head callback_head", this series doesn't do this. But again, up to you.

Oleg.