]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: remove EXT4_GET_BLOCKS_IO_CREATE_EXT
authorZhang Yi <yi.zhang@huawei.com>
Mon, 5 Jan 2026 01:45:22 +0000 (09:45 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 20 Jan 2026 03:28:30 +0000 (22:28 -0500)
We do not use EXT4_GET_BLOCKS_IO_CREATE_EXT or split extents before
submitting I/O; therefore, remove the related code.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Link: https://patch.msgid.link/20260105014522.1937690-8-yi.zhang@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/ext4.h
fs/ext4/extents.c
fs/ext4/inode.c

index 146d694beb02d2d1001c379fbf40c1dae23f1ec0..3b54542083054f0623f5c755390bffba0f4be65d 100644 (file)
@@ -707,15 +707,6 @@ enum {
         * found an unwritten extent, we need to split it.
         */
 #define EXT4_GET_BLOCKS_SPLIT_NOMERGE          0x0008
-       /*
-        * Caller is from the dio or dioread_nolock buffered IO, reqest to
-        * create an unwritten extent if it does not exist or split the
-        * found unwritten extent. Also do not merge the newly created
-        * unwritten extent, io end will convert unwritten to written,
-        * and try to merge the written extent.
-        */
-#define EXT4_GET_BLOCKS_IO_CREATE_EXT          (EXT4_GET_BLOCKS_SPLIT_NOMERGE|\
-                                        EXT4_GET_BLOCKS_CREATE_UNWRIT_EXT)
        /* Convert unwritten extent to initialized. */
 #define EXT4_GET_BLOCKS_CONVERT                        0x0010
        /* Eventual metadata allocation (due to growing extent tree)
index 4e7baac24a9092c54c64b55510fd9ad2ffeccc09..8597110f50efbc30fa293957bbebca440c85c365 100644 (file)
@@ -3925,34 +3925,6 @@ ext4_ext_handle_unwritten_extents(handle_t *handle, struct inode *inode,
        trace_ext4_ext_handle_unwritten_extents(inode, map, flags,
                                                *allocated, newblock);
 
-       /* get_block() before submitting IO, split the extent */
-       if (flags & EXT4_GET_BLOCKS_SPLIT_NOMERGE) {
-               int depth;
-
-               path = ext4_split_convert_extents(handle, inode, map, path,
-                                                 flags, allocated);
-               if (IS_ERR(path))
-                       return path;
-               /*
-                * shouldn't get a 0 allocated when splitting an extent unless
-                * m_len is 0 (bug) or extent has been corrupted
-                */
-               if (unlikely(*allocated == 0)) {
-                       EXT4_ERROR_INODE(inode,
-                                        "unexpected allocated == 0, m_len = %u",
-                                        map->m_len);
-                       err = -EFSCORRUPTED;
-                       goto errout;
-               }
-               /* Don't mark unwritten if the extent has been zeroed out. */
-               path = ext4_find_extent(inode, map->m_lblk, path, flags);
-               if (IS_ERR(path))
-                       return path;
-               depth = ext_depth(inode);
-               if (ext4_ext_is_unwritten(path[depth].p_ext))
-                       map->m_flags |= EXT4_MAP_UNWRITTEN;
-               goto out;
-       }
        /* IO end_io complete, convert the filled extent to written */
        if (flags & EXT4_GET_BLOCKS_CONVERT) {
                path = ext4_convert_unwritten_extents_endio(handle, inode,
@@ -4006,7 +3978,6 @@ ext4_ext_handle_unwritten_extents(handle_t *handle, struct inode *inode,
                goto errout;
        }
 
-out:
        map->m_flags |= EXT4_MAP_NEW;
 map_out:
        map->m_flags |= EXT4_MAP_MAPPED;
index d914f612da1039a2ac9dbe929ea0cf24b51b5a93..cf0ffd799501f622cf8706ba9dda036a5b1af1f4 100644 (file)
@@ -587,7 +587,6 @@ out:
 static int ext4_map_create_blocks(handle_t *handle, struct inode *inode,
                                  struct ext4_map_blocks *map, int flags)
 {
-       struct extent_status es;
        unsigned int status;
        int err, retval = 0;
 
@@ -648,16 +647,6 @@ static int ext4_map_create_blocks(handle_t *handle, struct inode *inode,
                        return err;
        }
 
-       /*
-        * If the extent has been zeroed out, we don't need to update
-        * extent status tree.
-        */
-       if (flags & EXT4_GET_BLOCKS_SPLIT_NOMERGE &&
-           ext4_es_lookup_extent(inode, map->m_lblk, NULL, &es, &map->m_seq)) {
-               if (ext4_es_is_written(&es))
-                       return retval;
-       }
-
        status = map->m_flags & EXT4_MAP_UNWRITTEN ?
                        EXTENT_STATUS_UNWRITTEN : EXTENT_STATUS_WRITTEN;
        ext4_es_insert_extent(inode, map->m_lblk, map->m_len, map->m_pblk,