From: Zhang Yi Date: Mon, 7 Jul 2025 14:08:05 +0000 (+0800) Subject: ext4: move the calculation of wbc->nr_to_write to mpage_folio_done() X-Git-Tag: v6.16.3~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=de83915e8f2a5d03dec8ccbc05a6bd711f409e76;p=thirdparty%2Fkernel%2Fstable.git ext4: move the calculation of wbc->nr_to_write to mpage_folio_done() commit f922c8c2461b022a2efd9914484901fb358a5b2a upstream. mpage_folio_done() should be a more appropriate place than mpage_submit_folio() for updating the wbc->nr_to_write after we have submitted a fully mapped folio. Preparing to make mpage_submit_folio() allows to submit partially mapped folio that is still under processing. Signed-off-by: Zhang Yi Reviewed-by: Jan Kara Reviewed-by: Baokun Li Link: https://patch.msgid.link/20250707140814.542883-3-yi.zhang@huaweicloud.com Signed-off-by: Theodore Ts'o Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index d712986c44da1..72a3adce47c05 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -2027,6 +2027,7 @@ int ext4_da_get_block_prep(struct inode *inode, sector_t iblock, static void mpage_folio_done(struct mpage_da_data *mpd, struct folio *folio) { mpd->start_pos += folio_size(folio); + mpd->wbc->nr_to_write -= folio_nr_pages(folio); folio_unlock(folio); } @@ -2057,8 +2058,6 @@ static int mpage_submit_folio(struct mpage_da_data *mpd, struct folio *folio) !ext4_verity_in_progress(mpd->inode)) len = size & (len - 1); err = ext4_bio_write_folio(&mpd->io_submit, folio, len); - if (!err) - mpd->wbc->nr_to_write -= folio_nr_pages(folio); return err; }