I want to share tasks at the KernelNewbies wiki!

June 16, 2026 ~ 4 months ago

Hello,

Sunday and yesterday I decided to do something that solves several problems at the same time.

I don't like to work on repetitive tasks. If I did something somewhere, doing it again somewhere else is something my AuDHD brain easily runs from doing cause it's on the 'boring' category. So when I found an issue that's present in several places in the kernel, but across several subsystems that uses different trees/repos (meaning I couldn't patch them all at once), I picked a set of places that made sense to fix and fixed. My patch got accepted in v1, it was a quite obvious fix, so doing it again in several other places seemed like a burden. It wouldn't add me much.

On the other hand, I cannot helping thinking: okay, but it HAS to be done. Knowing about an issue and not doing anything seems kinda selfish.

Meanwhile, there are lots of messages in the mailing lists and irc channels of newcomers that don't know where to contribute and ask for list of 'starter tasks' and things like that. Or others that make 'fixing typo' patches or patches that don't make much sense.

So I think I might have solved everything at once: balancing my difficulties with doing a repetitive task again and again, not feeling selfish for not solving an issue I know to exist, and also help newcomers finding new tasks that make sense to them. You might know where we're going here, but first I would like to share the full story (if you wanna read).

How it all started?

I was trying to find some tasks to work while I waited for the LFX Mentorship application results, as a sort of a 'warm up', and I found a question long unanswered on the kernelnewbies mailing list:

The unlock_buffer and clear_and_wake_up_bit call same the three function in the same sequence: 1.clear_bit_unlock 2.smp_mb__after_atomic 3.wake_up_bit

So why don't unlock_buffer write the fllowing: void unlock_buffer(struct buffer_head *bh) { clear_and_wake_up_bit(BH_Lock,&bh->b_state); }

At first I researched a little to understand the question. I wasn't doing anything important anyway. So I found the answer to Shuo's question: the clear_and_wake_up_bit() function was introduced in 2018, while the unlock_buffer() was last modified back in 2008. Since I found the answer by using git blame to look at when they were introduced, I digged a little and checked at the commit introducing clear_and_wake_up_bit():

commit 8236b0ae31c837d2b3a2565c5f8d77f637e824cc Author: Tetsuo Handa Date: Wed May 2 07:07:55 2018 +0900

bdi: wake up concurrent wb_shutdown() callers.

syzbot is reporting hung tasks at wait_on_bit(WB_shutting_down) in
wb_shutdown() [1]. This seems to be because commit 5318ce7d46866e1d ("bdi:
Shutdown writeback on all cgwbs in cgwb_bdi_destroy()") forgot to call
wake_up_bit(WB_shutting_down) after clear_bit(WB_shutting_down).

Introduce a helper function clear_and_wake_up_bit() and use it, in order
to avoid similar errors in future.

[1] https://syzkaller.appspot.com/bug?id=b297474817af98d5796bc544e1bb806fc3da0e5e

Signed-off-by: Tetsuo Handa <penguin-kernel AT I-love PERIOD SAKURA PERIOD ne PERIOD jp>
Reported-by: syzbot <syzbot+c0cf869505e03bdf1a24@syzkaller.appspotmail.com>
Fixes: 5318ce7d46866e1d ("bdi: Shutdown writeback on all cgwbs in cgwb_bdi_destroy()")
Cc: Tejun Heo <tj AT kernel PERIOD org>
Reviewed-by: Jan Kara <jack AT suse PERIOD cz>
Suggested-by: Linus Torvalds <torvalds AT linux-foundation PERIOD org>
Signed-off-by: Jens Axboe <axboe AT kernel PERIOD dk>

So, when looking at the commit message I noticed: the function was introduced to avoid issues related to improper uses of this sequence, people were forgetting to call wake_up_bit() leaving the task hanging. Well, if something in this logic ever changes I just started wondering "how many places would need changing"? While standardizing everything with the same logic to call clear_and_wake_up_bit() would make it require a single change in one place.

So after answering Shuo's question, I crafter a little-long global+awk command to find all instances of this very sequence of calls. And I found quite some instances. They were all over, so I picked the original place hinted by Shuo, I wanted to do something at the fs/ tree anyway!

I submitted a small patchset and thought I would have enough to work on for a while whenever I get some feedback in the mailing lists. For my surprise, it got accepted at v1 with no changes. I didn't write a patch in years, so I thought I would be definetely doing something wrong or missing something and writing a few trivial patch series would be useful to regain the practice and knowledge. But it started to seem somehow pointless.

So, what is it that you're doing?

I also mentioned on a previous post that I want to do some things, among them, improve my code reviewing skills as well as building trust within the community, since I want to stick around for the long run.

Meanwhile, I found a piece of kernel documentation suggesting newcomers to go into the KernelJanitors website where a todo list is maintained. But I know for years that the KernelJanitors page and the referred todo list has been completely abandoned and last edited in 2019. I didn't check, but I bet that the tasks there are wither no longer relevant or have been already done. So my mind started to wonder why, and the fact is that the idea of a single simple list might not be enough.

I started wondering: what if multiple people created multiple tasklists where they are the 'maintainers' responsible for keeping that list updated? And what if they also tracked the contributions to that list so they can have (and publicly share) information on the task status?

Kernel Tasklists

So this is how I started a sort of a project: the KernelTasklists. Hopefully nobody will mind that I created a wiki page at KernelNewbies for that, and the idea here is to have some general guidelines for people who, for whatever reasons, might want to maintain a tasklist. Like, informing the status of the tasks, being informative on how participants should contribute, etc. And then a list of active tasklists (as well as a list of archived ones)

Well, I won't put all details to save you from the spoiler, I want you to go ahead and visit the page :D

I added then a template for new tasklists and created my own based on the template.

Let me know if you liked the idea. My email address is at my own tasklist.

Best wishes, Agatha Isabelle Moreira