blob: 3ebdbc04e19dead4c0c657403124254db8c392a7 [file] [log] [blame]
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Subject: fs: remove calls to set and clear the folio error flag
Date: Wed, 7 Aug 2024 20:35:25 +0100
Nobody checks the folio error flag any more, so we can stop setting and
clearing it. Also remove the documentation suggesting to not bother
setting the error bit.
Link: https://lkml.kernel.org/r/20240807193528.1865100-1-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
Documentation/filesystems/vfs.rst | 3 +--
mm/filemap.c | 8 --------
mm/migrate.c | 2 --
mm/page_io.c | 4 +---
4 files changed, 2 insertions(+), 15 deletions(-)
--- a/Documentation/filesystems/vfs.rst~fs-remove-calls-to-set-and-clear-the-folio-error-flag
+++ a/Documentation/filesystems/vfs.rst
@@ -913,8 +913,7 @@ cache in your filesystem. The following
stop attempting I/O, it can simply return. The caller will
remove the remaining pages from the address space, unlock them
and decrement the page refcount. Set PageUptodate if the I/O
- completes successfully. Setting PageError on any page will be
- ignored; simply unlock the page if an I/O error occurs.
+ completes successfully.
``write_begin``
Called by the generic buffered write code to ask the filesystem
--- a/mm/filemap.c~fs-remove-calls-to-set-and-clear-the-folio-error-flag
+++ a/mm/filemap.c
@@ -530,7 +530,6 @@ static void __filemap_fdatawait_range(st
struct folio *folio = fbatch.folios[i];
folio_wait_writeback(folio);
- folio_clear_error(folio);
}
folio_batch_release(&fbatch);
cond_resched();
@@ -2342,13 +2341,6 @@ static int filemap_read_folio(struct fil
unsigned long pflags;
int error;
- /*
- * A previous I/O error may have been due to temporary failures,
- * eg. multipath errors. PG_error will be set again if read_folio
- * fails.
- */
- folio_clear_error(folio);
-
/* Start the actual read. The read will unlock the page. */
if (unlikely(workingset))
psi_memstall_enter(&pflags);
--- a/mm/migrate.c~fs-remove-calls-to-set-and-clear-the-folio-error-flag
+++ a/mm/migrate.c
@@ -586,8 +586,6 @@ void folio_migrate_flags(struct folio *n
{
int cpupid;
- if (folio_test_error(folio))
- folio_set_error(newfolio);
if (folio_test_referenced(folio))
folio_set_referenced(newfolio);
if (folio_test_uptodate(folio))
--- a/mm/page_io.c~fs-remove-calls-to-set-and-clear-the-folio-error-flag
+++ a/mm/page_io.c
@@ -273,9 +273,7 @@ static void sio_write_complete(struct ki
* memory for allocating transmit buffers.
* Mark the page dirty and avoid
* folio_rotate_reclaimable but rate-limit the
- * messages but do not flag PageError like
- * the normal direct-to-bio case as it could
- * be temporary.
+ * messages.
*/
pr_err_ratelimited("Write error %ld on dio swapfile (%llu)\n",
ret, swap_dev_pos(page_swap_entry(page)));
_