ext4: make ext4_es_remove_extent() return void
authorBaokun Li <libaokun1@huawei.com>
Mon, 24 Apr 2023 03:38:43 +0000 (11:38 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 26 Jun 2023 23:35:12 +0000 (19:35 -0400)
Now ext4_es_remove_extent() never fails, so make it return void.

Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230424033846.4732-10-libaokun1@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/extents.c
fs/ext4/extents_status.c
fs/ext4/extents_status.h
fs/ext4/inline.c
fs/ext4/inode.c

index 35703dc..8b87d5f 100644 (file)
@@ -4403,15 +4403,8 @@ int ext4_ext_truncate(handle_t *handle, struct inode *inode)
 
        last_block = (inode->i_size + sb->s_blocksize - 1)
                        >> EXT4_BLOCK_SIZE_BITS(sb);
-retry:
-       err = ext4_es_remove_extent(inode, last_block,
-                                   EXT_MAX_BLOCKS - last_block);
-       if (err == -ENOMEM) {
-               memalloc_retry_wait(GFP_ATOMIC);
-               goto retry;
-       }
-       if (err)
-               return err;
+       ext4_es_remove_extent(inode, last_block, EXT_MAX_BLOCKS - last_block);
+
 retry_remove_space:
        err = ext4_ext_remove_space(inode, last_block, EXT_MAX_BLOCKS - 1);
        if (err == -ENOMEM) {
@@ -5363,13 +5356,7 @@ static int ext4_collapse_range(struct file *file, loff_t offset, loff_t len)
 
        down_write(&EXT4_I(inode)->i_data_sem);
        ext4_discard_preallocations(inode, 0);
-
-       ret = ext4_es_remove_extent(inode, punch_start,
-                                   EXT_MAX_BLOCKS - punch_start);
-       if (ret) {
-               up_write(&EXT4_I(inode)->i_data_sem);
-               goto out_stop;
-       }
+       ext4_es_remove_extent(inode, punch_start, EXT_MAX_BLOCKS - punch_start);
 
        ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1);
        if (ret) {
@@ -5547,12 +5534,7 @@ static int ext4_insert_range(struct file *file, loff_t offset, loff_t len)
                ext4_free_ext_path(path);
        }
 
-       ret = ext4_es_remove_extent(inode, offset_lblk,
-                       EXT_MAX_BLOCKS - offset_lblk);
-       if (ret) {
-               up_write(&EXT4_I(inode)->i_data_sem);
-               goto out_stop;
-       }
+       ext4_es_remove_extent(inode, offset_lblk, EXT_MAX_BLOCKS - offset_lblk);
 
        /*
         * if offset_lblk lies in a hole which is at start of file, use
@@ -5610,12 +5592,8 @@ ext4_swap_extents(handle_t *handle, struct inode *inode1,
        BUG_ON(!inode_is_locked(inode1));
        BUG_ON(!inode_is_locked(inode2));
 
-       *erp = ext4_es_remove_extent(inode1, lblk1, count);
-       if (unlikely(*erp))
-               return 0;
-       *erp = ext4_es_remove_extent(inode2, lblk2, count);
-       if (unlikely(*erp))
-               return 0;
+       ext4_es_remove_extent(inode1, lblk1, count);
+       ext4_es_remove_extent(inode2, lblk2, count);
 
        while (count) {
                struct ext4_extent *ex1, *ex2, tmp_ex;
index 807ccc3..b01b3bd 100644 (file)
@@ -1460,10 +1460,10 @@ out:
  * @len - number of blocks to remove
  *
  * Reduces block/cluster reservation count and for bigalloc cancels pending
- * reservations as needed. Returns 0 on success, error code on failure.
+ * reservations as needed.
  */
-int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk,
-                         ext4_lblk_t len)
+void ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk,
+                          ext4_lblk_t len)
 {
        ext4_lblk_t end;
        int err = 0;
@@ -1471,14 +1471,14 @@ int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk,
        struct extent_status *es = NULL;
 
        if (EXT4_SB(inode->i_sb)->s_mount_state & EXT4_FC_REPLAY)
-               return 0;
+               return;
 
        trace_ext4_es_remove_extent(inode, lblk, len);
        es_debug("remove [%u/%u) from extent status tree of inode %lu\n",
                 lblk, len, inode->i_ino);
 
        if (!len)
-               return err;
+               return;
 
        end = lblk + len - 1;
        BUG_ON(end < lblk);
@@ -1501,7 +1501,7 @@ retry:
 
        ext4_es_print_tree(inode);
        ext4_da_release_space(inode, reserved);
-       return 0;
+       return;
 }
 
 static int __es_shrink(struct ext4_sb_info *sbi, int nr_to_scan,
index 4ec30a7..526a688 100644 (file)
@@ -133,8 +133,8 @@ extern int ext4_es_insert_extent(struct inode *inode, ext4_lblk_t lblk,
 extern void ext4_es_cache_extent(struct inode *inode, ext4_lblk_t lblk,
                                 ext4_lblk_t len, ext4_fsblk_t pblk,
                                 unsigned int status);
-extern int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk,
-                                ext4_lblk_t len);
+extern void ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk,
+                                 ext4_lblk_t len);
 extern void ext4_es_find_extent_range(struct inode *inode,
                                      int (*match_fn)(struct extent_status *es),
                                      ext4_lblk_t lblk, ext4_lblk_t end,
index f48183f..a4b7e4b 100644 (file)
@@ -1939,16 +1939,8 @@ int ext4_inline_data_truncate(struct inode *inode, int *has_inline)
                 * the extent status cache must be cleared to avoid leaving
                 * behind stale delayed allocated extent entries
                 */
-               if (!ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) {
-retry:
-                       err = ext4_es_remove_extent(inode, 0, EXT_MAX_BLOCKS);
-                       if (err == -ENOMEM) {
-                               memalloc_retry_wait(GFP_ATOMIC);
-                               goto retry;
-                       }
-                       if (err)
-                               goto out_error;
-               }
+               if (!ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA))
+                       ext4_es_remove_extent(inode, 0, EXT_MAX_BLOCKS);
 
                /* Clear the content in the xattr space. */
                if (inline_size > EXT4_MIN_INLINE_DATA_SIZE) {
index ef7ec26..519f5a0 100644 (file)
@@ -3986,12 +3986,8 @@ int ext4_punch_hole(struct file *file, loff_t offset, loff_t length)
                down_write(&EXT4_I(inode)->i_data_sem);
                ext4_discard_preallocations(inode, 0);
 
-               ret = ext4_es_remove_extent(inode, first_block,
-                                           stop_block - first_block);
-               if (ret) {
-                       up_write(&EXT4_I(inode)->i_data_sem);
-                       goto out_stop;
-               }
+               ext4_es_remove_extent(inode, first_block,
+                                     stop_block - first_block);
 
                if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))
                        ret = ext4_ext_remove_space(inode, first_block,