| From: "Vishal Moola (Oracle)" <vishal.moola@gmail.com> |
| Subject: afs: fix waiting for writeback then skipping folio |
| Date: Wed, 7 Jun 2023 13:41:20 -0700 |
| |
| Commit acc8d8588cb7 converted afs_writepages_region() to write back a |
| folio batch. The function waits for writeback to a folio, but then |
| proceeds to the rest of the batch without trying to write that folio |
| again. This patch fixes has it attempt to write the folio again. |
| |
| This has only been compile tested. |
| |
| Link: https://lkml.kernel.org/r/20230607204120.89416-2-vishal.moola@gmail.com |
| Fixes: acc8d8588cb7 ("afs: convert afs_writepages_region() to use filemap_get_folios_tag()") |
| Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> |
| Cc: David Howells <dhowells@redhat.com> |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| fs/afs/write.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/fs/afs/write.c~afs-fix-waiting-for-writeback-then-skipping-folio |
| +++ a/fs/afs/write.c |
| @@ -731,6 +731,7 @@ static int afs_writepages_region(struct |
| * (changing page->mapping to NULL), or even swizzled |
| * back from swapper_space to tmpfs file mapping |
| */ |
| +try_again: |
| if (wbc->sync_mode != WB_SYNC_NONE) { |
| ret = folio_lock_killable(folio); |
| if (ret < 0) { |
| @@ -757,6 +758,7 @@ static int afs_writepages_region(struct |
| #ifdef CONFIG_AFS_FSCACHE |
| folio_wait_fscache(folio); |
| #endif |
| + goto try_again; |
| } else { |
| start += folio_size(folio); |
| } |
| _ |