Commit b967ab74 authored by Baokun Li's avatar Baokun Li Committed by Theodore Ts'o
Browse files

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: default avatarBaokun Li <libaokun1@huawei.com>
Reviewed-by: default avatarZhang Yi <yi.zhang@huawei.com>
Reviewed-by: default avatarJan Kara <jack@suse.cz>
Reviewed-by: default avatarOjaswin Mujoo <ojaswin@linux.ibm.com>
Message-ID: <20251121090654.631996-19-libaokun@huaweicloud.com>
Signed-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
parent bff6235d
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -2299,15 +2299,14 @@ static int mpage_map_and_submit_buffers(struct mpage_da_data *mpd)
	struct folio_batch fbatch;
	unsigned nr, i;
	struct inode *inode = mpd->inode;
	int bpp_bits = PAGE_SHIFT - inode->i_blkbits;
	pgoff_t start, end;
	ext4_lblk_t lblk;
	ext4_fsblk_t pblock;
	int err;
	bool map_bh = false;

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

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

			lblk = folio->index << bpp_bits;
			lblk = EXT4_PG_TO_LBLK(inode, folio->index);
			err = mpage_process_folio(mpd, folio, &lblk, &pblock,
						 &map_bh);
			/*