On Fri, Jul 12, 2019 at 11:09:00PM +0800, Pengfei Li wrote: > On Fri, Jul 12, 2019 at 9:49 PM Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote: > > > > On Fri, Jul 12, 2019 at 08:02:13PM +0800, Pengfei Li wrote: > > > > I don't think you need struct union struct union. Because llist_node > > is just a pointer, you can get the same savings with just: > > > > union { > > struct llist_node purge_list; > > struct vm_struct *vm; > > unsigned long subtree_max_size; > > }; > > > > Thanks for your comments. > > As you said, I did this in v3. > https://patchwork.kernel.org/patch/11031507/ > > The reason why I use struct union struct in v4 is that I want to > express "in the tree" and "in the purge list" are two completely > isolated cases. > I think that is odd. Your v3 was fine to me. All that mess with struct union struct makes it weird, so having just comments there is enough, imho. <snip> - __free_vmap_area(va); + merge_or_add_vmap_area(va, + &free_vmap_area_root, &free_vmap_area_list); + <snip> Should not be done in this patch. I can re-spin "mm/vmalloc: do not keep unpurged areas in the busy tree" and add it there. So, as a result we will not modify unlink_va() function. Thus, this patch will reduce the size only, and will not touch other parts. -- Vlad Rezki