* [PATCH 0/6] Constify struct page arguments
@ 2021-04-13 20:06 Matthew Wilcox (Oracle)
2021-04-13 20:06 ` [PATCH 1/6] mm: Make __dump_page static Matthew Wilcox (Oracle)
0 siblings, 1 reply; 2+ messages in thread
From: Matthew Wilcox (Oracle) @ 2021-04-13 20:06 UTC (permalink / raw)
To: linux-mm; +Cc: Matthew Wilcox (Oracle), Andrew Morton
While working on various solutions to the 32-bit struct page size
regression, one of the problems I found was the networking stack expects
to be able to pass const struct page pointers around, and the mm doesn't
provide a lot of const-friendly functions to call. The root tangle of
problems is that a lot of functions call VM_BUG_ON_PAGE(), which calls
dump_page(), which calls a lot of functions which don't take a const
struct page (but could be const).
I have other things I need to work on, but I offer these patches as a few
steps towards being able to make dump_page() take a const page pointer.
Matthew Wilcox (Oracle) (6):
mm: Make __dump_page static
mm/debug: Factor PagePoisoned out of __dump_page
mm/page_owner: Constify dump_page_owner
mm: Make compound_head const-preserving
mm: Constify get_pfnblock_flags_mask and get_pfnblock_migratetype
mm: Constify page_count and page_ref_count
include/linux/mmdebug.h | 3 +--
include/linux/page-flags.h | 10 +++++-----
include/linux/page_owner.h | 6 +++---
include/linux/page_ref.h | 4 ++--
include/linux/pageblock-flags.h | 2 +-
mm/debug.c | 25 +++++++------------------
mm/page_alloc.c | 16 ++++++++--------
mm/page_owner.c | 2 +-
8 files changed, 28 insertions(+), 40 deletions(-)
--
2.30.2
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH 1/6] mm: Make __dump_page static
2021-04-13 20:06 [PATCH 0/6] Constify struct page arguments Matthew Wilcox (Oracle)
@ 2021-04-13 20:06 ` Matthew Wilcox (Oracle)
0 siblings, 0 replies; 2+ messages in thread
From: Matthew Wilcox (Oracle) @ 2021-04-13 20:06 UTC (permalink / raw)
To: linux-mm; +Cc: Matthew Wilcox (Oracle), Andrew Morton
The only caller of __dump_page() now opencodes dump_page(), so
remove it as an externally visible symbol.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
include/linux/mmdebug.h | 3 +--
mm/debug.c | 2 +-
mm/page_alloc.c | 3 +--
3 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h
index 5d0767cb424a..1935d4c72d10 100644
--- a/include/linux/mmdebug.h
+++ b/include/linux/mmdebug.h
@@ -9,8 +9,7 @@ struct page;
struct vm_area_struct;
struct mm_struct;
-extern void dump_page(struct page *page, const char *reason);
-extern void __dump_page(struct page *page, const char *reason);
+void dump_page(struct page *page, const char *reason);
void dump_vma(const struct vm_area_struct *vma);
void dump_mm(const struct mm_struct *mm);
diff --git a/mm/debug.c b/mm/debug.c
index 0bdda8407f71..84cdcd0f7bd3 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -42,7 +42,7 @@ const struct trace_print_flags vmaflag_names[] = {
{0, NULL}
};
-void __dump_page(struct page *page, const char *reason)
+static void __dump_page(struct page *page, const char *reason)
{
struct page *head = compound_head(page);
struct address_space *mapping;
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 5a35f21b57c6..0152670c6f04 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -658,8 +658,7 @@ static void bad_page(struct page *page, const char *reason)
pr_alert("BUG: Bad page state in process %s pfn:%05lx\n",
current->comm, page_to_pfn(page));
- __dump_page(page, reason);
- dump_page_owner(page);
+ dump_page(page, reason);
print_modules();
dump_stack();
--
2.30.2
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-04-13 20:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-13 20:06 [PATCH 0/6] Constify struct page arguments Matthew Wilcox (Oracle)
2021-04-13 20:06 ` [PATCH 1/6] mm: Make __dump_page static Matthew Wilcox (Oracle)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).