]> Gentwo Git Trees - linux/.git/commitdiff
ext4: add EXT4_LBLK_TO_B macro for logical block to bytes conversion
authorBaokun Li <libaokun1@huawei.com>
Fri, 21 Nov 2025 09:06:39 +0000 (17:06 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 29 Nov 2025 03:35:27 +0000 (22:35 -0500)
No functional changes.

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-10-libaokun@huaweicloud.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/inode.c
fs/ext4/namei.c
fs/ext4/verity.c

index 0502afa6f6e5bea9b72c4efc30e58fc5168bc267..4581ff8aef195b9a563eb1b11f5de05fe4df0968 100644 (file)
@@ -368,6 +368,7 @@ struct ext4_io_submit {
                                                                  blkbits))
 #define EXT4_B_TO_LBLK(inode, offset) \
        (round_up((offset), i_blocksize(inode)) >> (inode)->i_blkbits)
+#define EXT4_LBLK_TO_B(inode, lblk) ((loff_t)(lblk) << (inode)->i_blkbits)
 
 /* Translate a block number to a cluster number */
 #define EXT4_B2C(sbi, blk)     ((blk) >> (sbi)->s_cluster_bits)
index 885e933b68034150e00e08cf1cf8d059084e0daf..2cf5759ba68940c4413343c82062a275f9a644a6 100644 (file)
@@ -4562,7 +4562,7 @@ static int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset,
                 * allow a full retry cycle for any remaining allocations
                 */
                retries = 0;
-               epos = (loff_t)(map.m_lblk + ret) << blkbits;
+               epos = EXT4_LBLK_TO_B(inode, map.m_lblk + ret);
                inode_set_ctime_current(inode);
                if (new_size) {
                        if (epos > new_size)
index ff697adab5f65a92df753aab71fa344ceed99cf1..29259e10d78ec8deb6579849dd3e9f72f6d145bd 100644 (file)
@@ -837,9 +837,8 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode,
                    !(flags & EXT4_GET_BLOCKS_ZERO) &&
                    !ext4_is_quota_file(inode) &&
                    ext4_should_order_data(inode)) {
-                       loff_t start_byte =
-                               (loff_t)map->m_lblk << inode->i_blkbits;
-                       loff_t length = (loff_t)map->m_len << inode->i_blkbits;
+                       loff_t start_byte = EXT4_LBLK_TO_B(inode, map->m_lblk);
+                       loff_t length = EXT4_LBLK_TO_B(inode, map->m_len);
 
                        if (flags & EXT4_GET_BLOCKS_IO_SUBMIT)
                                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,
        ext4_lblk_t lblk = *m_lblk;
        ext4_fsblk_t pblock = *m_pblk;
        int err = 0;
-       int blkbits = mpd->inode->i_blkbits;
        ssize_t io_end_size = 0;
        struct ext4_io_end_vec *io_end_vec = ext4_last_io_end_vec(io_end);
 
@@ -2261,7 +2259,8 @@ static int mpage_process_folio(struct mpage_da_data *mpd, struct folio *folio,
                                        err = PTR_ERR(io_end_vec);
                                        goto out;
                                }
-                               io_end_vec->offset = (loff_t)mpd->map.m_lblk << blkbits;
+                               io_end_vec->offset = EXT4_LBLK_TO_B(mpd->inode,
+                                                               mpd->map.m_lblk);
                        }
                        *map_bh = true;
                        goto out;
@@ -2271,7 +2270,7 @@ static int mpage_process_folio(struct mpage_da_data *mpd, struct folio *folio,
                        bh->b_blocknr = pblock++;
                }
                clear_buffer_unwritten(bh);
-               io_end_size += (1 << blkbits);
+               io_end_size += i_blocksize(mpd->inode);
        } while (lblk++, (bh = bh->b_this_page) != head);
 
        io_end_vec->size += io_end_size;
@@ -2473,7 +2472,7 @@ static int mpage_map_and_submit_extent(handle_t *handle,
        io_end_vec = ext4_alloc_io_end_vec(io_end);
        if (IS_ERR(io_end_vec))
                return PTR_ERR(io_end_vec);
-       io_end_vec->offset = ((loff_t)map->m_lblk) << inode->i_blkbits;
+       io_end_vec->offset = EXT4_LBLK_TO_B(inode, map->m_lblk);
        do {
                err = mpage_map_one_extent(handle, mpd);
                if (err < 0) {
@@ -3513,8 +3512,8 @@ static void ext4_set_iomap(struct inode *inode, struct iomap *iomap,
                iomap->dax_dev = EXT4_SB(inode->i_sb)->s_daxdev;
        else
                iomap->bdev = inode->i_sb->s_bdev;
-       iomap->offset = (u64) map->m_lblk << blkbits;
-       iomap->length = (u64) map->m_len << blkbits;
+       iomap->offset = EXT4_LBLK_TO_B(inode, map->m_lblk);
+       iomap->length = EXT4_LBLK_TO_B(inode, map->m_len);
 
        if ((map->m_flags & EXT4_MAP_MAPPED) &&
            !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,
                            unsigned int flags)
 {
        handle_t *handle;
-       u8 blkbits = inode->i_blkbits;
        int ret, dio_credits, m_flags = 0, retries = 0;
        bool force_commit = false;
 
@@ -3747,7 +3745,7 @@ static int ext4_iomap_alloc(struct inode *inode, struct ext4_map_blocks *map,
         * i_disksize out to i_size. This could be beyond where direct I/O is
         * happening and thus expose allocated blocks to direct I/O reads.
         */
-       else if (((loff_t)map->m_lblk << blkbits) >= i_size_read(inode))
+       else if (EXT4_LBLK_TO_B(inode, map->m_lblk) >= i_size_read(inode))
                m_flags = EXT4_GET_BLOCKS_CREATE;
        else if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))
                m_flags = EXT4_GET_BLOCKS_IO_CREATE_EXT;
index 045616033515a2e61327156337c39cf6ff0d570a..c4b5e252af0efbfcbaf83688a32d445327a74a02 100644 (file)
@@ -1076,7 +1076,7 @@ static int htree_dirblock_to_tree(struct file *dir_file,
        for (; de < top; de = ext4_next_entry(de, dir->i_sb->s_blocksize)) {
                if (ext4_check_dir_entry(dir, NULL, de, bh,
                                bh->b_data, bh->b_size,
-                               (block<<EXT4_BLOCK_SIZE_BITS(dir->i_sb))
+                               EXT4_LBLK_TO_B(dir, block)
                                         + ((char *)de - bh->b_data))) {
                        /* silently ignore the rest of the block */
                        break;
@@ -1630,7 +1630,7 @@ static struct buffer_head *__ext4_find_entry(struct inode *dir,
                }
                set_buffer_verified(bh);
                i = search_dirblock(bh, dir, fname,
-                           block << EXT4_BLOCK_SIZE_BITS(sb), res_dir);
+                                   EXT4_LBLK_TO_B(dir, block), res_dir);
                if (i == 1) {
                        EXT4_I(dir)->i_dir_start_lookup = block;
                        ret = bh;
@@ -1710,7 +1710,6 @@ static struct buffer_head * ext4_dx_find_entry(struct inode *dir,
                        struct ext4_filename *fname,
                        struct ext4_dir_entry_2 **res_dir)
 {
-       struct super_block * sb = dir->i_sb;
        struct dx_frame frames[EXT4_HTREE_LEVEL], *frame;
        struct buffer_head *bh;
        ext4_lblk_t block;
@@ -1729,8 +1728,7 @@ static struct buffer_head * ext4_dx_find_entry(struct inode *dir,
                        goto errout;
 
                retval = search_dirblock(bh, dir, fname,
-                                        block << EXT4_BLOCK_SIZE_BITS(sb),
-                                        res_dir);
+                                        EXT4_LBLK_TO_B(dir, block), res_dir);
                if (retval == 1)
                        goto success;
                brelse(bh);
index b0acb0c50313794979dab3701b1b90c7590cd5b7..415d9c4d8a321475aa08d717b182d552f1f44049 100644 (file)
@@ -302,7 +302,7 @@ static int ext4_get_verity_descriptor_location(struct inode *inode,
 
        end_lblk = le32_to_cpu(last_extent->ee_block) +
                   ext4_ext_get_actual_len(last_extent);
-       desc_size_pos = (u64)end_lblk << inode->i_blkbits;
+       desc_size_pos = EXT4_LBLK_TO_B(inode, end_lblk);
        ext4_free_ext_path(path);
 
        if (desc_size_pos < sizeof(desc_size_disk))