[PATCH v4 0/3] mm, vsprintf: dump full information of page flags in pGp

From: Yafang Shao
Date: Tue Feb 09 2021 - 06:02:14 EST


The existed pGp shows the names of page flags only, rather than the full
information including section, node, zone, last cpuipid and kasan tag.
While it is not easy to parse these information manually because there
are so many flavors. We'd better interpret them in printf.

To be compitable with the existed format of pGp, the new introduced ones
also use '|' as the separator, then the user tools parsing pGp won't
need to make change, suggested by Matthew. The new added information is
tracked onto the end of the existed one, e.g.
[ 8838.835456] Slab 0x000000002828b78a objects=33 used=3 fp=0x00000000d04efc88 flags=0x17ffffc0010200(slab|head|node=0|zone=2|lastcpupid=0x1fffff)

The documentation and test cases are also updated. The result of the
test cases as follows,
[ 501.485081] test_printf: loaded.
[ 501.485768] test_printf: all 388 tests passed
[ 501.488762] test_printf: unloaded.

This patchset also includes some code cleanup in mm/slub.c.

v4:
- extend %pGp instead of introducing new format, per Matthew

v3:
- coding improvement, per Joe and Andy
- the possible impact on debugfs and the fix of it, per Joe and Matthew
- introduce new format instead of changing pGp, per Andy

v2:
- various coding improvement, per Joe, Miaohe, Vlastimil and Andy
- remove the prefix completely in patch #2, per Vlastimil
- Update the test cases, per Andy

Yafang Shao (3):
mm, slub: use pGp to print page flags
mm, slub: don't combine pr_err with INFO
vsprintf: dump full information of page flags in pGp

Documentation/core-api/printk-formats.rst | 2 +-
lib/test_printf.c | 60 +++++++++++++++++----
lib/vsprintf.c | 66 +++++++++++++++++++++--
mm/slub.c | 13 ++---
4 files changed, 121 insertions(+), 20 deletions(-)

--
2.17.1