Convert write_cache_pages() to an iterator v5

From: Christoph Hellwig
Date: Thu Jan 25 2024 - 03:58:55 EST


Hi all,

this is an evolution of the series Matthew Wilcox originally sent in June
2023. Based on comments from Jan and Brian this now actually untangles
some of the more confusing conditional in the writeback code before
refactoring it into the iterator.

This version also adds a new RFC patch at the end that totally changes
the API again to a while loop, based on commnts from Jan and some of
my idea. Let me know if that is a good idea or not, and if yes I'll
fold the changes into the earlier patches.

Changes since v4:
- added back the (rebased) iomap conversion now that the conflict is in
mainline
- add a new patch to change the iterator

Changes since v3:
- various commit log spelling fixes
- remove a statement from a commit log that isn't true any more with the
changes in v3
- rename a function
- merge two helpers

Diffstat:
fs/iomap/buffered-io.c | 10 -
include/linux/pagevec.h | 18 ++
include/linux/writeback.h | 12 +
mm/page-writeback.c | 344 ++++++++++++++++++++++++++--------------------
4 files changed, 231 insertions(+), 153 deletions(-)