mbox series

[RFC,v2,0/3] move PG_slab to page_type

Message ID 20221106140355.294845-1-42.hyeyoo@gmail.com (mailing list archive)
Headers show
Series move PG_slab to page_type | expand

Message

Hyeonggon Yoo Nov. 6, 2022, 2:03 p.m. UTC
RFC v1: https://lore.kernel.org/all/Y0BpuxUb+Y8BKHIM@casper.infradead.org/T/

This series moves PG_slab from page->flags to page->page_type.
as page_type field is also used number of active objects in slab,
upper half (16 bits) are used as page type and lower half (16 bits) are
used as slab->active.

It simplifies checking page_mapped() and folio_mapped() and
frees a bit in page->flags.

This also adds new %pGt printf format that prints human-readable
page_type, and show_page_flags() (for tracepoints).

More tests are still needed, but I think it's worth to get some early
feedbacks.

TO HWPOISON DEVELOPERS:
	I think it would be best to add a code that identifies a type of
	page from page_type like page flags. but I'm not sure how to
	properly test it.

v1 -> v2:
  - use page flag policy for pages that uses page_type
    (PF_NO_TAIL for slab and PF_ANY for others) (Matthew WilCox)

  - store slab->active in negative form and use helpers to
    access/modify it (Matthew WilCox)

  - Fix logical errors and some cleanup in fs/proc/page.c and kernel/crash_core.c

  - add show_page_flags() (patch 2) and %pGt format (patch 3)


Any feedbacks are appreciated.

Hyeonggon Yoo (3):
  mm: move PG_slab flag to page_type
  mm: introduce show_page_types() to provide human-readable page_type
  mm, printk: introduce new format %pGt for page_type

 Documentation/core-api/printk-formats.rst |  3 +-
 fs/proc/page.c                            | 13 ++--
 include/linux/mm_types.h                  | 11 ++--
 include/linux/page-flags.h                | 77 ++++++++++++++++-------
 include/trace/events/mmflags.h            | 13 +++-
 include/trace/events/page_ref.h           | 10 ++-
 kernel/crash_core.c                       |  3 +-
 lib/test_printf.c                         | 23 +++++++
 lib/vsprintf.c                            | 24 +++++++
 mm/debug.c                                |  7 +++
 mm/internal.h                             |  1 +
 mm/memory-failure.c                       |  8 ---
 mm/slab.c                                 | 44 ++++++++-----
 mm/slab.h                                 |  3 +-
 14 files changed, 175 insertions(+), 65 deletions(-)