The quilt patch titled Subject: fs: remove calls to set and clear the folio error flag has been removed from the -mm tree. Its filename was fs-remove-calls-to-set-and-clear-the-folio-error-flag.patch This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm ------------------------------------------------------ From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxx Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- 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))); _ Patches currently in -mm which might be from willy@xxxxxxxxxxxxx are printf-remove-%pgt-support.patch mm-introduce-page_mapcount_is_type.patch mm-support-only-one-page_type-per-page.patch zsmalloc-use-all-available-24-bits-of-page_type.patch mm-remove-pageactive.patch mm-remove-pageswapbacked.patch mm-remove-pagereadahead.patch mm-remove-pageswapcache.patch mm-remove-pageunevictable.patch mm-remove-pagemlocked.patch mm-remove-pageownerpriv1.patch mm-remove-page_has_private.patch mm-rename-pg_mappedtodisk-to-pg_owner_2.patch x86-remove-pg_uncached.patch swap-convert-swapon-to-use-a-folio.patch