On Sat, Oct 23, 2021 at 10:41:41PM +0100, Matthew Wilcox wrote: > On Sat, Oct 23, 2021 at 12:00:38PM -0400, Kent Overstreet wrote: > > I ran into a major roadblock when I tried converting buddy allocator freelists > > to radix trees: freeing a page may require allocating a new page for the radix > > tree freelist, which is fine normally - we're freeing a page after all - but not > > if it's highmem. So right now I'm not sure if getting struct page down to two > > words is even possible. Oh well. > > I have a design in mind that I think avoids the problem. It's somewhat > based on Bonwick's vmem paper, but not exactly. I need to write it up. I am intruiged... Care to drop some hints? > Right. Folios are for unspecialised head pages. If we decide > to specialise further in the future, that's great! I think David > misunderstood me slightly; I don't know that specialising file + anon > pages (the aforementioned lru_mem) is the right approach. It might be! > But it needs someone to try it, and find the advantages & disadvantages. Well, that's where your current patches are basically headed, aren't they? As I understand it it's just file and some of the anon code that's converted so far. Are you thinking more along the lines of converting everything that can be mapped to userspace to folios? I think that would make a lot of sense given that converting the weird things to file pages isn't likely to happen any time soon, and it would us convert gup() to return folios, as Christoph noted. > > > Also introducing new types to be describing our current using of struct page > > isn't the only thing we should be doing - as we do that, that will (is!) uncover > > a lot of places where our ontology of struct page uses is just nonsensical (all > > the types of pages mapped into userspace!) - and part of our mission should be > > to clean those up. > > > > That does turn things into a much bigger project than what Matthew signed up > > for, but we shouldn't all be sitting on the sidelines here... > > I'm happy to help. Indeed I may take on some of these sub-projects > myself. I just don't want the perfect to be the enemy of the good. Agreed!