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(-)