On 2022/2/26 10:23, Theodore Ts'o wrote:
On Fri, Feb 11, 2022 at 05:35:27PM +0800, Ye Bin wrote:
Now if read directory block failed, 'ext4_empty_dir' will return true, assume
directory is empty. Obviously, it will lead to above issue.
To solve this issue, if read directory block failed 'ext4_empty_dir' just assume
directory isn't empty. To avoid making things worse when file system is already
corrupted, 'ext4_empty_dir' also assume directory isn't empty.
To distinguish the error type, return the exact error code to the caller.
Does the same issue exist for f2fs and ubifs? We could solve the
specific bug much more simply by having ext4_empty_dir() return FALSE
if we aren't able to read the directory block. Yes, it means that we
don't return as specific an error code in the case of an I/O error ---
although I believe we do syslog a warning --- but it makes for a much
simpler patch that doesn't requiring getting acked-by's from the
fscrypt, f2fs and ubifs folks.
- Ted
.
In fact, I only modified ext4 as you suggested in my v1 patch.
[-next] ext4:fix file system corrupted when rmdir non empty directory
with IO error :
https://patchwork.ozlabs.org/project/linux-ext4/patch/20220209112819.3072220-1-yebin10@xxxxxxxxxx/