Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ext4: make ext4_es_remove_extent() return void

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>

authored by

Baokun Li and committed by
Theodore Ts'o
ed5d285b 2a69c450

+18 -52
+6 -28
fs/ext4/extents.c
··· 4403 4403 4404 4404 last_block = (inode->i_size + sb->s_blocksize - 1) 4405 4405 >> EXT4_BLOCK_SIZE_BITS(sb); 4406 - retry: 4407 - err = ext4_es_remove_extent(inode, last_block, 4408 - EXT_MAX_BLOCKS - last_block); 4409 - if (err == -ENOMEM) { 4410 - memalloc_retry_wait(GFP_ATOMIC); 4411 - goto retry; 4412 - } 4413 - if (err) 4414 - return err; 4406 + ext4_es_remove_extent(inode, last_block, EXT_MAX_BLOCKS - last_block); 4407 + 4415 4408 retry_remove_space: 4416 4409 err = ext4_ext_remove_space(inode, last_block, EXT_MAX_BLOCKS - 1); 4417 4410 if (err == -ENOMEM) { ··· 5356 5363 5357 5364 down_write(&EXT4_I(inode)->i_data_sem); 5358 5365 ext4_discard_preallocations(inode, 0); 5359 - 5360 - ret = ext4_es_remove_extent(inode, punch_start, 5361 - EXT_MAX_BLOCKS - punch_start); 5362 - if (ret) { 5363 - up_write(&EXT4_I(inode)->i_data_sem); 5364 - goto out_stop; 5365 - } 5366 + ext4_es_remove_extent(inode, punch_start, EXT_MAX_BLOCKS - punch_start); 5366 5367 5367 5368 ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); 5368 5369 if (ret) { ··· 5534 5547 ext4_free_ext_path(path); 5535 5548 } 5536 5549 5537 - ret = ext4_es_remove_extent(inode, offset_lblk, 5538 - EXT_MAX_BLOCKS - offset_lblk); 5539 - if (ret) { 5540 - up_write(&EXT4_I(inode)->i_data_sem); 5541 - goto out_stop; 5542 - } 5550 + ext4_es_remove_extent(inode, offset_lblk, EXT_MAX_BLOCKS - offset_lblk); 5543 5551 5544 5552 /* 5545 5553 * if offset_lblk lies in a hole which is at start of file, use ··· 5592 5610 BUG_ON(!inode_is_locked(inode1)); 5593 5611 BUG_ON(!inode_is_locked(inode2)); 5594 5612 5595 - *erp = ext4_es_remove_extent(inode1, lblk1, count); 5596 - if (unlikely(*erp)) 5597 - return 0; 5598 - *erp = ext4_es_remove_extent(inode2, lblk2, count); 5599 - if (unlikely(*erp)) 5600 - return 0; 5613 + ext4_es_remove_extent(inode1, lblk1, count); 5614 + ext4_es_remove_extent(inode2, lblk2, count); 5601 5615 5602 5616 while (count) { 5603 5617 struct ext4_extent *ex1, *ex2, tmp_ex;
+6 -6
fs/ext4/extents_status.c
··· 1460 1460 * @len - number of blocks to remove 1461 1461 * 1462 1462 * Reduces block/cluster reservation count and for bigalloc cancels pending 1463 - * reservations as needed. Returns 0 on success, error code on failure. 1463 + * reservations as needed. 1464 1464 */ 1465 - int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk, 1466 - ext4_lblk_t len) 1465 + void ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk, 1466 + ext4_lblk_t len) 1467 1467 { 1468 1468 ext4_lblk_t end; 1469 1469 int err = 0; ··· 1471 1471 struct extent_status *es = NULL; 1472 1472 1473 1473 if (EXT4_SB(inode->i_sb)->s_mount_state & EXT4_FC_REPLAY) 1474 - return 0; 1474 + return; 1475 1475 1476 1476 trace_ext4_es_remove_extent(inode, lblk, len); 1477 1477 es_debug("remove [%u/%u) from extent status tree of inode %lu\n", 1478 1478 lblk, len, inode->i_ino); 1479 1479 1480 1480 if (!len) 1481 - return err; 1481 + return; 1482 1482 1483 1483 end = lblk + len - 1; 1484 1484 BUG_ON(end < lblk); ··· 1501 1501 1502 1502 ext4_es_print_tree(inode); 1503 1503 ext4_da_release_space(inode, reserved); 1504 - return 0; 1504 + return; 1505 1505 } 1506 1506 1507 1507 static int __es_shrink(struct ext4_sb_info *sbi, int nr_to_scan,
+2 -2
fs/ext4/extents_status.h
··· 133 133 extern void ext4_es_cache_extent(struct inode *inode, ext4_lblk_t lblk, 134 134 ext4_lblk_t len, ext4_fsblk_t pblk, 135 135 unsigned int status); 136 - extern int ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk, 137 - ext4_lblk_t len); 136 + extern void ext4_es_remove_extent(struct inode *inode, ext4_lblk_t lblk, 137 + ext4_lblk_t len); 138 138 extern void ext4_es_find_extent_range(struct inode *inode, 139 139 int (*match_fn)(struct extent_status *es), 140 140 ext4_lblk_t lblk, ext4_lblk_t end,
+2 -10
fs/ext4/inline.c
··· 1939 1939 * the extent status cache must be cleared to avoid leaving 1940 1940 * behind stale delayed allocated extent entries 1941 1941 */ 1942 - if (!ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) { 1943 - retry: 1944 - err = ext4_es_remove_extent(inode, 0, EXT_MAX_BLOCKS); 1945 - if (err == -ENOMEM) { 1946 - memalloc_retry_wait(GFP_ATOMIC); 1947 - goto retry; 1948 - } 1949 - if (err) 1950 - goto out_error; 1951 - } 1942 + if (!ext4_test_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA)) 1943 + ext4_es_remove_extent(inode, 0, EXT_MAX_BLOCKS); 1952 1944 1953 1945 /* Clear the content in the xattr space. */ 1954 1946 if (inline_size > EXT4_MIN_INLINE_DATA_SIZE) {
+2 -6
fs/ext4/inode.c
··· 3986 3986 down_write(&EXT4_I(inode)->i_data_sem); 3987 3987 ext4_discard_preallocations(inode, 0); 3988 3988 3989 - ret = ext4_es_remove_extent(inode, first_block, 3990 - stop_block - first_block); 3991 - if (ret) { 3992 - up_write(&EXT4_I(inode)->i_data_sem); 3993 - goto out_stop; 3994 - } 3989 + ext4_es_remove_extent(inode, first_block, 3990 + stop_block - first_block); 3995 3991 3996 3992 if (ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) 3997 3993 ret = ext4_ext_remove_space(inode, first_block,