Re: [PATCH 0/3] Lowmem fsck repair to fix filetype mismatch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 17, 2018 at 01:17:07PM +0800, Qu Wenruo wrote:
> Sebastian reported a filesystem corruption where DIR_INDEX has wrong
> filetype against INODE_ITEM.
> 
> Lowmem mode normally handles such problem by checking DIR_INDEX,
> DIR_ITEM and INODE_REF/INODE_ITEM to determine the correct file type.
> In such case, lowmem mode fsck can get the correct filetype.
> 
> When fixing the problem, lowmem mode will try to re-insert correct
> (DIR_INDEX, DIR_ITEM, INODE_REF) tuple, and if existing correct
> DIR_ITEM and INODE_REF is found, btrfs_link() will just skip and only
> insert correct DIR_INDEX.
> 
> However, when inserting correct DIR_INDEX, due to extra DIR_INDEX
> validation, incorrect one will be skiped and correct one will be
> inserted after invalid one.
> 
> This leads to lowmem mode repair to create duplicated DIR_INDEX.
> 
> This patch will fix it by removing the whole (DIR_INDEX, DIR_ITEM,
> INODE_REF) tuple before inserting correct tuple.
> And the removing part, btrfs_unlink(), will be enhanced to handle
> incorrect tuple member more robust.
> 
> Please note that, due a bug in lowmem mode repair, btrfs check will
> still show "error(s) found in fs tree" even repair is done successfully.
> 
> And test case for this repair still needs extra work for original mode
> to support such repair, or test case won't pass original mode test.
> 
> Qu Wenruo (3):
>   btrfs-progs: lowmem fsck: Remove corupted link before re-add correct
>     link
>   btrfs-progs: dir-item: Allow dir item and dir index lookup to ignore
>     found problem
>   btrfs-progs: dir-item: Make btrfs_delete_one_dir_name more robust to
>     handle corrupted name len

Added to devel, thanks. The code has moved so I applied some diff hunks
manually.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux