Skip to content

Commit b967ab7

Browse files
LiBaokun96tytso
authored andcommitted
ext4: support large block size in mpage_map_and_submit_buffers()
Use the EXT4_PG_TO_LBLK/EXT4_LBLK_TO_PG macros to complete the conversion between folio indexes and blocks to avoid negative left/right shifts after supporting blocksize greater than PAGE_SIZE. Signed-off-by: Baokun Li <libaokun1@huawei.com> Reviewed-by: Zhang Yi <yi.zhang@huawei.com> Reviewed-by: Jan Kara <jack@suse.cz> Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> Message-ID: <20251121090654.631996-19-libaokun@huaweicloud.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent bff6235 commit b967ab7

1 file changed

Lines changed: 3 additions & 4 deletions

File tree

fs/ext4/inode.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2299,15 +2299,14 @@ static int mpage_map_and_submit_buffers(struct mpage_da_data *mpd)
22992299
struct folio_batch fbatch;
23002300
unsigned nr, i;
23012301
struct inode *inode = mpd->inode;
2302-
int bpp_bits = PAGE_SHIFT - inode->i_blkbits;
23032302
pgoff_t start, end;
23042303
ext4_lblk_t lblk;
23052304
ext4_fsblk_t pblock;
23062305
int err;
23072306
bool map_bh = false;
23082307

2309-
start = mpd->map.m_lblk >> bpp_bits;
2310-
end = (mpd->map.m_lblk + mpd->map.m_len - 1) >> bpp_bits;
2308+
start = EXT4_LBLK_TO_PG(inode, mpd->map.m_lblk);
2309+
end = EXT4_LBLK_TO_PG(inode, mpd->map.m_lblk + mpd->map.m_len - 1);
23112310
pblock = mpd->map.m_pblk;
23122311

23132312
folio_batch_init(&fbatch);
@@ -2318,7 +2317,7 @@ static int mpage_map_and_submit_buffers(struct mpage_da_data *mpd)
23182317
for (i = 0; i < nr; i++) {
23192318
struct folio *folio = fbatch.folios[i];
23202319

2321-
lblk = folio->index << bpp_bits;
2320+
lblk = EXT4_PG_TO_LBLK(inode, folio->index);
23222321
err = mpage_process_folio(mpd, folio, &lblk, &pblock,
23232322
&map_bh);
23242323
/*

0 commit comments

Comments
 (0)