@@ -837,9 +837,8 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
837837 !(flags & EXT4_GET_BLOCKS_ZERO ) &&
838838 !ext4_is_quota_file (inode ) &&
839839 ext4_should_order_data (inode )) {
840- loff_t start_byte =
841- (loff_t )map -> m_lblk << inode -> i_blkbits ;
842- loff_t length = (loff_t )map -> m_len << inode -> i_blkbits ;
840+ loff_t start_byte = EXT4_LBLK_TO_B (inode , map -> m_lblk );
841+ loff_t length = EXT4_LBLK_TO_B (inode , map -> m_len );
843842
844843 if (flags & EXT4_GET_BLOCKS_IO_SUBMIT )
845844 ret = ext4_jbd2_inode_add_wait (handle , inode ,
@@ -2235,7 +2234,6 @@ static int mpage_process_folio(struct mpage_da_data *mpd, struct folio *folio,
22352234 ext4_lblk_t lblk = * m_lblk ;
22362235 ext4_fsblk_t pblock = * m_pblk ;
22372236 int err = 0 ;
2238- int blkbits = mpd -> inode -> i_blkbits ;
22392237 ssize_t io_end_size = 0 ;
22402238 struct ext4_io_end_vec * io_end_vec = ext4_last_io_end_vec (io_end );
22412239
@@ -2261,7 +2259,8 @@ static int mpage_process_folio(struct mpage_da_data *mpd, struct folio *folio,
22612259 err = PTR_ERR (io_end_vec );
22622260 goto out ;
22632261 }
2264- io_end_vec -> offset = (loff_t )mpd -> map .m_lblk << blkbits ;
2262+ io_end_vec -> offset = EXT4_LBLK_TO_B (mpd -> inode ,
2263+ mpd -> map .m_lblk );
22652264 }
22662265 * map_bh = true;
22672266 goto out ;
@@ -2271,7 +2270,7 @@ static int mpage_process_folio(struct mpage_da_data *mpd, struct folio *folio,
22712270 bh -> b_blocknr = pblock ++ ;
22722271 }
22732272 clear_buffer_unwritten (bh );
2274- io_end_size += ( 1 << blkbits );
2273+ io_end_size += i_blocksize ( mpd -> inode );
22752274 } while (lblk ++ , (bh = bh -> b_this_page ) != head );
22762275
22772276 io_end_vec -> size += io_end_size ;
@@ -2473,7 +2472,7 @@ static int mpage_map_and_submit_extent(handle_t *handle,
24732472 io_end_vec = ext4_alloc_io_end_vec (io_end );
24742473 if (IS_ERR (io_end_vec ))
24752474 return PTR_ERR (io_end_vec );
2476- io_end_vec -> offset = (( loff_t ) map -> m_lblk ) << inode -> i_blkbits ;
2475+ io_end_vec -> offset = EXT4_LBLK_TO_B ( inode , map -> m_lblk );
24772476 do {
24782477 err = mpage_map_one_extent (handle , mpd );
24792478 if (err < 0 ) {
@@ -3513,8 +3512,8 @@ static void ext4_set_iomap(struct inode *inode, struct iomap *iomap,
35133512 iomap -> dax_dev = EXT4_SB (inode -> i_sb )-> s_daxdev ;
35143513 else
35153514 iomap -> bdev = inode -> i_sb -> s_bdev ;
3516- iomap -> offset = ( u64 ) map -> m_lblk << blkbits ;
3517- iomap -> length = ( u64 ) map -> m_len << blkbits ;
3515+ iomap -> offset = EXT4_LBLK_TO_B ( inode , map -> m_lblk ) ;
3516+ iomap -> length = EXT4_LBLK_TO_B ( inode , map -> m_len ) ;
35183517
35193518 if ((map -> m_flags & EXT4_MAP_MAPPED ) &&
35203519 !ext4_test_inode_flag (inode , EXT4_INODE_EXTENTS ))
@@ -3688,7 +3687,6 @@ static int ext4_iomap_alloc(struct inode *inode, struct ext4_map_blocks *map,
36883687 unsigned int flags )
36893688{
36903689 handle_t * handle ;
3691- u8 blkbits = inode -> i_blkbits ;
36923690 int ret , dio_credits , m_flags = 0 , retries = 0 ;
36933691 bool force_commit = false;
36943692
@@ -3747,7 +3745,7 @@ static int ext4_iomap_alloc(struct inode *inode, struct ext4_map_blocks *map,
37473745 * i_disksize out to i_size. This could be beyond where direct I/O is
37483746 * happening and thus expose allocated blocks to direct I/O reads.
37493747 */
3750- else if ((( loff_t ) map -> m_lblk << blkbits ) >= i_size_read (inode ))
3748+ else if (EXT4_LBLK_TO_B ( inode , map -> m_lblk ) >= i_size_read (inode ))
37513749 m_flags = EXT4_GET_BLOCKS_CREATE ;
37523750 else if (ext4_test_inode_flag (inode , EXT4_INODE_EXTENTS ))
37533751 m_flags = EXT4_GET_BLOCKS_IO_CREATE_EXT ;
0 commit comments