mm: remove PG_error
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 7 Aug 2024 19:35:26 +0000 (20:35 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 2 Sep 2024 03:26:05 +0000 (20:26 -0700)
The PG_error bit is now unused; delete it and free up a bit in
page->flags.

Link: https://lkml.kernel.org/r/20240807193528.1865100-2-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/proc/page.c
include/linux/page-flags.h
include/trace/events/mmflags.h
include/uapi/linux/kernel-page-flags.h

index b7a5c84..73a0f87 100644 (file)
@@ -182,7 +182,6 @@ u64 stable_page_flags(const struct page *page)
 #endif
 
        u |= kpf_copy_bit(k, KPF_LOCKED,        PG_locked);
-       u |= kpf_copy_bit(k, KPF_ERROR,         PG_error);
        u |= kpf_copy_bit(k, KPF_DIRTY,         PG_dirty);
        u |= kpf_copy_bit(k, KPF_UPTODATE,      PG_uptodate);
        u |= kpf_copy_bit(k, KPF_WRITEBACK,     PG_writeback);
index 5769fe6..a0a29bd 100644 (file)
@@ -66,8 +66,6 @@
  * PG_referenced, PG_reclaim are used for page reclaim for anonymous and
  * file-backed pagecache (see mm/vmscan.c).
  *
- * PG_error is set to indicate that an I/O error occurred on this page.
- *
  * PG_arch_1 is an architecture specific page state bit.  The generic code
  * guarantees that this bit is cleared for a page when it first is entered into
  * the page cache.
@@ -103,7 +101,6 @@ enum pageflags {
        PG_waiters,             /* Page has waiters, check its waitqueue. Must be bit #7 and in the same byte as "PG_locked" */
        PG_active,
        PG_workingset,
-       PG_error,
        PG_owner_priv_1,        /* Owner use. If pagecache, fs may use*/
        PG_arch_1,
        PG_reserved,
@@ -183,7 +180,7 @@ enum pageflags {
         */
 
        /* At least one page in this folio has the hwpoison flag set */
-       PG_has_hwpoisoned = PG_error,
+       PG_has_hwpoisoned = PG_active,
        PG_large_rmappable = PG_workingset, /* anon or file-backed */
 };
 
@@ -506,7 +503,6 @@ static inline int TestClearPage##uname(struct page *page) { return 0; }
 
 __PAGEFLAG(Locked, locked, PF_NO_TAIL)
 FOLIO_FLAG(waiters, FOLIO_HEAD_PAGE)
-PAGEFLAG(Error, error, PF_NO_TAIL) TESTCLEARFLAG(Error, error, PF_NO_TAIL)
 FOLIO_FLAG(referenced, FOLIO_HEAD_PAGE)
        FOLIO_TEST_CLEAR_FLAG(referenced, FOLIO_HEAD_PAGE)
        __FOLIO_SET_FLAG(referenced, FOLIO_HEAD_PAGE)
index b63d211..b5c4da3 100644 (file)
 #define __def_pageflag_names                                           \
        DEF_PAGEFLAG_NAME(locked),                                      \
        DEF_PAGEFLAG_NAME(waiters),                                     \
-       DEF_PAGEFLAG_NAME(error),                                       \
        DEF_PAGEFLAG_NAME(referenced),                                  \
        DEF_PAGEFLAG_NAME(uptodate),                                    \
        DEF_PAGEFLAG_NAME(dirty),                                       \
index 6f2f272..ff80322 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 #define KPF_LOCKED             0
-#define KPF_ERROR              1
+#define KPF_ERROR              1       /* Now unused */
 #define KPF_REFERENCED         2
 #define KPF_UPTODATE           3
 #define KPF_DIRTY              4