惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
I
InfoQ
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Recent Announcements
Recent Announcements
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
Microsoft Security Blog
Microsoft Security Blog
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
博客园 - Franky
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog RSS Feed
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
月光博客
月光博客
罗磊的独立博客

LWN.net comments

blocking algif_aead side effects? tcmalloc's weird hack [LWN.net] Fixed? [LWN.net] mpd [LWN.net] Userspace AX.25 [LWN.net] RIP [LWN.net] My two cents... [LWN.net] pipx [LWN.net] Tragedy [LWN.net] A young man destined for glory [LWN.net] And 'less' won't let you search [LWN.net] A great loss [LWN.net] Sad and shocking news [LWN.net] Easy migration from Clementine [LWN.net] Sad coincidence [LWN.net] GNOME is actually usable thanks to Seth et al [LWN.net] Sad news :( [LWN.net] armhf supports preempt_rt [LWN.net] MusicBrainz accurracy [LWN.net] On open source maintainership [LWN.net] Let's stop here [LWN.net] Not a new thing [LWN.net] uv is indeed great pgmoneta Some comments on this on a Postgres blog feed [LWN.net] uv [LWN.net] going to Debian [LWN.net] Upgrading 64-bit-capable systems to 64-bit kernels? [LWN.net] Free Software foundations Maintainers can wait for code review but not for publish review?
History is a little backwards ... [LWN.net]
willy · 2026-04-25 · via LWN.net comments

The original motivation for all of this work was the effort to support THPs in the page cache (other than shmem). Kiryl did that work, and I referred to it extensively at the beginning.

https://lore.kernel.org/linux-fsdevel/20170126115819.5887...

I had argued with Kiryl (as early as 2015, I think) that to be successful, we needed to support arbitrary order pages, not just THP sizes. When he stopped working on his patches, I took the opportunity to do things the way I thought they should be done.

As I worked on it, I realised that I didn't understand what it meant to pass a struct page pointer to, eg, readpage(). Was it legitimate to pass any page, even a tail page to readpage()? Or did it have to be a head page? And what, exactly, did that mean if we did pass a tail page? Should we fill in the entire compound page, or just the precise page that was requested? We have only one PageUptodate bit, and it's stored on the head page, so that pointed towards an answer of sorts.

Eventually I couldn't handle the ambiguity any more and decided we needed a new type. It's every bit as painful as everybody said it would be, but it's offered the opportunity to clean up a lot of code.

For the hyper-interested, you can see my earliest presentation on this (before the name folio had been coined) at Linux Conf AU 2020 here: https://youtu.be/p5u-vbwu3Fs