Skip to content

Commit cd9f76d

Browse files
zhangyi089tytso
authored andcommitted
ext4: make the writeback path support large folios
In mpage_map_and_submit_buffers(), the 'lblk' is now aligned to PAGE_SIZE. Convert it to be aligned to folio size. Additionally, modify the wbc->nr_to_write update to reduce the number of pages in a single folio, ensuring that the entire writeback path can support large folios. Signed-off-by: Zhang Yi <yi.zhang@huawei.com> Link: https://patch.msgid.link/20250512063319.3539411-7-yi.zhang@huaweicloud.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent 0e32d86 commit cd9f76d

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

fs/ext4/inode.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1983,7 +1983,7 @@ static int mpage_submit_folio(struct mpage_da_data *mpd, struct folio *folio)
19831983
len = size & (len - 1);
19841984
err = ext4_bio_write_folio(&mpd->io_submit, folio, len);
19851985
if (!err)
1986-
mpd->wbc->nr_to_write--;
1986+
mpd->wbc->nr_to_write -= folio_nr_pages(folio);
19871987

19881988
return err;
19891989
}
@@ -2206,7 +2206,6 @@ static int mpage_map_and_submit_buffers(struct mpage_da_data *mpd)
22062206

22072207
start = mpd->map.m_lblk >> bpp_bits;
22082208
end = (mpd->map.m_lblk + mpd->map.m_len - 1) >> bpp_bits;
2209-
lblk = start << bpp_bits;
22102209
pblock = mpd->map.m_pblk;
22112210

22122211
folio_batch_init(&fbatch);
@@ -2217,6 +2216,7 @@ static int mpage_map_and_submit_buffers(struct mpage_da_data *mpd)
22172216
for (i = 0; i < nr; i++) {
22182217
struct folio *folio = fbatch.folios[i];
22192218

2219+
lblk = folio->index << bpp_bits;
22202220
err = mpage_process_folio(mpd, folio, &lblk, &pblock,
22212221
&map_bh);
22222222
/*
@@ -2442,7 +2442,7 @@ static int mpage_journal_page_buffers(handle_t *handle,
24422442
size_t len = folio_size(folio);
24432443

24442444
folio_clear_checked(folio);
2445-
mpd->wbc->nr_to_write--;
2445+
mpd->wbc->nr_to_write -= folio_nr_pages(folio);
24462446

24472447
if (folio_pos(folio) + len > size &&
24482448
!ext4_verity_in_progress(inode))

0 commit comments

Comments
 (0)