Re: [PATCH 0/2] ext4: fix a infinite loop in do_writepages after online resizing

Baokun Li
2022-11-30T02:08:18Z

On 2022/11/30 5:12, Theodore Ts'o wrote:
> On Wed, 17 Aug 2022 21:26:59 +0800, Baokun Li wrote:
>> We got a issue: the ext4 writeback process was stuck in do_writepages and
>> do_writepages kept retrying. However, '-ENOMEM' is returned each time, even
>> if there is still free memory on the current machine.
>>
>> We find that the direct cause of this issue is that the bg_inode_table_hi
>> in the group descriptor is written to an incorrect value, which causes the
>> inode block found through the inode table to exceed the end_ block。Then,
>> sb_getblk always returns null, __ext4_get_inode_loc returns `-ENOMEM`,
>> and do_writepages keeps retrying.
>>
>> [...]
> Applied, thanks!
>
> [1/2] ext4: fix GDT corruption after online resizing with bigalloc enable and blocksize is 1024
> commit: 496fb12f8e236f303de6bc73a0334dd50c4eb64a
> [2/2] ext4: add inode table check in __ext4_get_inode_loc to aovid possible infinite loop
> commit: bfb0625e8e86f8797264b1c7d10e146afe243d23
>
> Best regards,

Hi Theodore,

Thank you very much for applying this patch set!

But I thought this patch set was discarded because there was no
"Reviewed-by".
And a few days ago, I came up with a better solution to the problem
fixed by PATCH 1/2.
The new solution is called "ext4: fix corruption when online resizing a
1K bigalloc fs", which
is in another patch set  ("[PATCH v3 0/3] ext4: fix some bugs in online
resize") that fixes
some online resize problems. This patch set has been reviewed, and I
would appreciate it if
you could revert PATCH 1/2 and apply the patch set containing the new
solution.

Sorry for wasting your time without stating that a new solution is
available after the old patch.

Thanks again!
--
With Best Regards,
Baokun Li