diff options
author | Christoph Hellwig <hch@lst.de> | 2024-02-15 07:36:38 +0100 |
---|---|---|
committer | Andrew Morton <akpm@linux-foundation.org> | 2024-02-23 17:48:35 -0800 |
commit | a02829f011b64e6c102929ed55da52e38391e970 (patch) | |
tree | 1b70f609dc45b5279e8817c37f22e1a67ea57b0b /mm | |
parent | 2a6e1a8f4cf39cd3d10c52fca639a7d6f30b7004 (diff) | |
download | linux-stable-a02829f011b64e6c102929ed55da52e38391e970.tar.gz linux-stable-a02829f011b64e6c102929ed55da52e38391e970.tar.bz2 linux-stable-a02829f011b64e6c102929ed55da52e38391e970.zip |
writeback: fix done_index when hitting the wbc->nr_to_write
When write_cache_pages finishes writing out a folio, it fails to update
done_index to account for the number of pages in the folio just written.
That means when range_cyclic writeback is restarted, it will be restarted
at this folio instead of after it as it should. Fix that by updating
done_index before breaking out of the loop.
Link: https://lkml.kernel.org/r/20240215063649.2164017-4-hch@lst.de
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Acked-by: Dave Chinner <dchinner@redhat.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: David Howells <dhowells@redhat.com>
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page-writeback.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 703e83c69ffe..2679176da316 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -2505,6 +2505,7 @@ continue_unlock: * keep going until we have written all the pages * we tagged for writeback prior to entering this loop. */ + done_index = folio->index + nr; wbc->nr_to_write -= nr; if (wbc->nr_to_write <= 0 && wbc->sync_mode == WB_SYNC_NONE) { |