1
0
mirror of https://github.com/kdave/btrfs-progs synced 2025-04-18 21:15:33 +00:00
btrfs-progs/check
Qu Wenruo 0a6e40bdc1 btrfs-progs: check/lowmem: Add check and repair for invalid inode generation
There are at least two bug reports of kernel tree-checker complaining
about invalid inode generation.

All offending inodes seem to be caused by old kernel around 2014, with
inode generation overflow.

So add such check and repair ability to lowmem mode check first.

This involves:

- Calculate the inode generation upper limit
  If it's an inode from log tree, then the upper limit is
  super_generation + 1, otherwise it's super_generation.

- Check if the inode generation is larger than the upper limit

- Repair by resetting inode generation to current transaction
  generation

Reported-by: Charles Wright <charles.v.wright@gmail.com>
Tested-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2019-11-18 19:21:07 +01:00
..
common.h btrfs-progs: check: move device_record to main.c 2019-10-14 17:27:41 +02:00
main.c btrfs-progs: check/original: Fix inode mode in subvolume trees 2019-11-18 19:21:07 +01:00
mode-common.c btrfs-progs: check/original: Fix inode mode in subvolume trees 2019-11-18 19:21:07 +01:00
mode-common.h btrfs-progs: check/original: Fix inode mode in subvolume trees 2019-11-18 19:21:07 +01:00
mode-lowmem.c btrfs-progs: check/lowmem: Add check and repair for invalid inode generation 2019-11-18 19:21:07 +01:00
mode-lowmem.h btrfs-progs: check/lowmem: Check and repair root generation 2019-09-04 16:06:50 +02:00
mode-original.h btrfs-progs: move rbtree-utils.[ch] to common/ 2019-07-03 20:49:04 +02:00
qgroup-verify.c btrfs-progs: move qgroup-verify.[ch] to check/ 2019-10-14 17:27:35 +02:00
qgroup-verify.h btrfs-progs: move qgroup-verify.[ch] to check/ 2019-10-14 17:27:35 +02:00