Skip to content

mm: Use slab_list list_head instead of lru

Tobin C. Harding linux-mm lkml 5 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest7 patches 18 repliesIn review
  2. v47 patches 0 repliesSuperseded
  3. v37 patches 4 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v25 patches5 repliesSuperseded
v14 patches10 repliesSuperseded

Changes in v5 from the cover letter

- Add return parameter to slob_page_alloc() to indicate whether the page is removed from the freelist during allocation.
- Only do list rotate optimisation if the page was _not_ removed from the freelist (fix bug found by 0day test robot).

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/7list: Add function list_rotate_to_front()include/linux/list.h+18 -02 replies
2/7slob: Respect list_head abstraction layermm/slob.c+37 -149 replies
3/7slob: Use slab_list instead of lrumm/slob.c+6 -61 reply
4/7slub: Add comments to endif pre-processor macrosmm/slub.c+10 -101 reply
5/7slub: Use slab_list instead of lrumm/slub.c+20 -201 reply
6/7slab: Use slab_list instead of lrumm/slab.c+25 -242 replies
7/7mm: Remove stale comment from page structinclude/linux/mm_types.h+1 -11 reply

Reviews trailers per patch

All 7 patches have a Reviewed-by or Acked-by of their own; the series has one for all of them.

PatchRoman GushchinChristoph LameterVlastimil Babka
SeriesA-b
1/7R-b R-b
2/7A-b
3/7R-b A-b
4/7R-b A-b
5/7R-b A-b
6/7R-b A-b
7/7R-b A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v5 thread

Cover letter [PATCH v5 0/7] mm: Use slab_list list_head instead of lru

Hi Andrew,

Here is the updated series that caused the bug found by 0day test robot. To ease the load on your memory, this series is aimed at replacing the following:

Original buggy series:

mm-remove-stale-comment-from-page-struct.patch slub-use-slab_list-instead-of-lru.patch slab-use-slab_list-instead-of-lru.patch slob-use-slab_list-instead-of-lru.patch slub-add-comments-to-endif-pre-processor-macros.patch slob-respect-list_head-abstraction-layer.patch list-add-function-list_rotate_to_front.patch

And the bug fix patch:

slob-only-use-list-functions-when-safe-to-do-so.patch

Applies cleanly on top of Linus' tree (tag: v5.1-rc3).

This series differs from the bug fix above by adding a separate return parameter to slob_page_alloc() instead of using a double pointer. This is defensive in case later someone adds code that accesses sp (struct page *), also it is easier to read/verify the code since its less 'tricky'.

Tested by building and booting a kernel using the SLOB allocator and with CONFIG_DEBUG_LIST.

From v4 ...

Currently the slab allocators (ab)use the struct page 'lru' list_head. We have a list head for slab allocators to use, 'slab_list'.

During v2 it was noted by Christoph that the SLOB allocator was reaching into a list_head, this version adds 2 patches to the front of the set to fix that.

Clean up all three allocators by using the 'slab_list' list_head instead of overloading the 'lru' list_head.

Changes since v4:
- Add return parameter to slob_page_alloc() to indicate whether the page is removed from the freelist during allocation.
- Only do list rotate optimisation if the page was _not_ removed from the freelist (fix bug found by 0day test robot).

Changes since v3:

- Change all ->lru to ->slab_list in slob (thanks Roman).

Changes since v2:

- Add list_rotate_to_front().
- Fix slob to use list_head API.
- Re-order patches to put the list.h changes up front.
- Add acks from Christoph.

Changes since v1:

- Verify object files are the same before and after the patch set is applied (suggested by Matthew).
- Add extra explanation to the commit logs explaining why these changes are safe to make (suggested by Roman).
- Remove stale comment (thanks Willy).

thanks,
Tobin.

Tobin C. Harding (7):
list: Add function list_rotate_to_front()
slob: Respect list_head abstraction layer
slob: Use slab_list instead of lru
slub: Add comments to endif pre-processor macros
slub: Use slab_list instead of lru
slab: Use slab_list instead of lru
mm: Remove stale comment from page struct

 include/linux/list.h     | 18 ++++++++++++
 include/linux/mm_types.h |  2 +-
 mm/slab.c                | 49 ++++++++++++++++----------------
 mm/slob.c                | 59 +++++++++++++++++++++++++++------------
 mm/slub.c                | 60 ++++++++++++++++++++--------------------
 5 files changed, 115 insertions(+), 73 deletions(-)
Signature · 1 line
2.21.0