btrfs-progs/check
Qu Wenruo 77fe19ba16 btrfs-progs: check/lowmem: Check and repair free space cache inode mode
Unlike inodes in fs roots, we don't really check the inode items in root
tree, in fact we just skip everything other than ROOT_ITEM and ROOT_REF.

This makes invalid inode items sneak into root tree.
For example:
        item 9 key (256 INODE_ITEM 0) itemoff 13702 itemsize 160
                generation 30 transid 30 size 65536 nbytes 1507328
                block group 0 mode 0 links 1 uid 0 gid 0 rdev 0
				   ^ Should be 100600
                sequence 23 flags 0x1b(NODATASUM|NODATACOW|NOCOMPRESS|PREALLOC)
                atime 0.0 (1970-01-01 08:00:00)
                ctime 1553491158.189771625 (2019-03-25 13:19:18)
                mtime 0.0 (1970-01-01 08:00:00)
                otime 0.0 (1970-01-01 08:00:00)

There is a report of such problem in the mail list.

This patch will check and repair inode items of free space cache inodes in
lowmem mode.

Since free space cache inodes doesn't have INODE_REF but still has 1
link, we can't use check_inode_item() directly.
Instead we only check the inode mode, as that's the important part.

The check and repair function: check_repair_free_space_inode() is also
exported for original mode.

Signed-off-by: Qu Wenruo <wqu@suse.com>
2019-04-16 09:04:25 +08:00
..
main.c btrfs-progs: check/original: Repair invalid inode mode in root tree 2019-04-16 09:04:25 +08:00
mode-common.c btrfs-progs: check/lowmem: Check and repair free space cache inode mode 2019-04-16 09:04:25 +08:00
mode-common.h btrfs-progs: check/lowmem: Check and repair free space cache inode mode 2019-04-16 09:04:25 +08:00
mode-lowmem.c btrfs-progs: check/lowmem: Check and repair free space cache inode mode 2019-04-16 09:04:25 +08:00
mode-lowmem.h btrfs-progs: check/lowmem: Check and repair free space cache inode mode 2019-04-16 09:04:25 +08:00
mode-original.h btrfs-progs: check/original: Add inode mode check 2019-04-16 09:04:25 +08:00