Add folio_end_writeback_pages() which takes in the number of pages written back. Signed-off-by: Joanne Koong <joannelkoong@xxxxxxxxx> --- include/linux/pagemap.h | 1 + mm/filemap.c | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index e63fbfbd5b0f..312209e0371a 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -1202,6 +1202,7 @@ void folio_wait_writeback(struct folio *folio); int folio_wait_writeback_killable(struct folio *folio); void end_page_writeback(struct page *page); void folio_end_writeback(struct folio *folio); +void folio_end_writeback_pages(struct folio *folio, long nr_pages); void folio_wait_stable(struct folio *folio); void __folio_mark_dirty(struct folio *folio, struct address_space *, int warn); void folio_account_cleaned(struct folio *folio, struct bdi_writeback *wb); diff --git a/mm/filemap.c b/mm/filemap.c index b69ba95746f0..1a292cff0803 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -1626,15 +1626,7 @@ static void filemap_end_dropbehind_write(struct folio *folio) } } -/** - * folio_end_writeback - End writeback against a folio. - * @folio: The folio. - * - * The folio must actually be under writeback. - * - * Context: May be called from process or interrupt context. - */ -void folio_end_writeback(struct folio *folio) +void folio_end_writeback_pages(struct folio *folio, long nr_pages) { VM_BUG_ON_FOLIO(!folio_test_writeback(folio), folio); @@ -1657,13 +1649,26 @@ void folio_end_writeback(struct folio *folio) * reused before the folio_wake_bit(). */ folio_get(folio); - if (__folio_end_writeback(folio, folio_nr_pages(folio))) + if (__folio_end_writeback(folio, nr_pages)) folio_wake_bit(folio, PG_writeback); filemap_end_dropbehind_write(folio); acct_reclaim_writeback(folio); folio_put(folio); } + +/** + * folio_end_writeback - End writeback against a folio. + * @folio: The folio. + * + * The folio must actually be under writeback. + * + * Context: May be called from process or interrupt context. + */ +void folio_end_writeback(struct folio *folio) +{ + folio_end_writeback_pages(folio, folio_nr_pages(folio)); +} EXPORT_SYMBOL(folio_end_writeback); /** -- 2.47.3