]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/memory-failure: stop setting the folio error flag
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 31 May 2024 03:29:25 +0000 (04:29 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 4 Jul 2024 02:30:03 +0000 (19:30 -0700)
Nobody checks the error flag any more, so setting it accomplishes nothing.
Remove the obsolete parts of this comment; it hasn't been true since
errseq_t was used to track writeback errors in 2017.

Link: https://lkml.kernel.org/r/20240531032938.2712870-1-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Oscar Salvador <osalvador@suse.de>
Acked-by: Miaohe Lin <linmiaohe@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/memory-failure.c

index b419170fce203e6cecbcd04359cfcd16c5b3123e..f679b579d45dc7e4ba81f8303d6b71a77147507f 100644 (file)
@@ -1112,7 +1112,6 @@ static int me_pagecache_dirty(struct page_state *ps, struct page *p)
        struct folio *folio = page_folio(p);
        struct address_space *mapping = folio_mapping(folio);
 
-       SetPageError(p);
        /* TBD: print more information about the file. */
        if (mapping) {
                /*
@@ -1120,34 +1119,6 @@ static int me_pagecache_dirty(struct page_state *ps, struct page *p)
                 * who check the mapping.
                 * This way the application knows that something went
                 * wrong with its dirty file data.
-                *
-                * There's one open issue:
-                *
-                * The EIO will be only reported on the next IO
-                * operation and then cleared through the IO map.
-                * Normally Linux has two mechanisms to pass IO error
-                * first through the AS_EIO flag in the address space
-                * and then through the PageError flag in the page.
-                * Since we drop pages on memory failure handling the
-                * only mechanism open to use is through AS_AIO.
-                *
-                * This has the disadvantage that it gets cleared on
-                * the first operation that returns an error, while
-                * the PageError bit is more sticky and only cleared
-                * when the page is reread or dropped.  If an
-                * application assumes it will always get error on
-                * fsync, but does other operations on the fd before
-                * and the page is dropped between then the error
-                * will not be properly reported.
-                *
-                * This can already happen even without hwpoisoned
-                * pages: first on metadata IO errors (which only
-                * report through AS_EIO) or when the page is dropped
-                * at the wrong time.
-                *
-                * So right now we assume that the application DTRT on
-                * the first EIO, but we're not worse than other parts
-                * of the kernel.
                 */
                mapping_set_error(mapping, -EIO);
        }