[PATCH v4 00/12] ext4: fix WARNING in ext4_da_update_reserve_space

Baokun Li
2023-04-24T03:39:45Z

V1->V2:
Modify the patch 1 description and add the Fixes tag.
Add the patch 2 as suggested by Jan Kara.
V2->V3:
Remove the redundant judgment of count in Patch [1].
Rename ext4_es_alloc_should_nofail to ext4_es_must_keep.
Split Patch [2].
Make some functions return void to simplify the code.
V3->V4:
using nofail preallocation.

This patch set consists of three parts:
1. Patch [1] fix WARNING in ext4_da_update_reserve_space.
2. Patch [2]-[8] fix extent tree inconsistencies that may be caused
by memory allocation failures.
3. Patch [9]-[12] is cleanup.

Baokun Li (12):
ext4: only update i_reserved_data_blocks on successful block
allocation
ext4: add a new helper to check if es must be kept
ext4: factor out __es_alloc_extent() and __es_free_extent()
ext4: use pre-allocated es in __es_insert_extent()
ext4: use pre-allocated es in __es_remove_extent()
ext4: using nofail preallocation in ext4_es_remove_extent()
ext4: using nofail preallocation in ext4_es_insert_delayed_block()
ext4: using nofail preallocation in ext4_es_insert_extent()
ext4: make ext4_es_remove_extent() return void
ext4: make ext4_es_insert_delayed_block() return void
ext4: make ext4_es_insert_extent() return void
ext4: make ext4_zeroout_es() return void

fs/ext4/extents.c | 49 +++------
fs/ext4/extents_status.c | 207 ++++++++++++++++++++++++---------------
fs/ext4/extents_status.h | 14 +--
fs/ext4/indirect.c | 8 ++
fs/ext4/inline.c | 12 +--
fs/ext4/inode.c | 49 ++-------
6 files changed, 169 insertions(+), 170 deletions(-)

--
2.31.1