btrfs-progs: check: introduce low memory mode
authorLu Fengqi <lufq.fnst@cn.fujitsu.com>
Sun, 24 Apr 2016 07:47:12 +0000 (15:47 +0800)
committerDavid Sterba <dsterba@suse.com>
Wed, 17 Aug 2016 17:04:51 +0000 (19:04 +0200)
commitbfecd8bd6aafd3be183506e4a351d412f39fc2bc
tree58247a650c41186195d1498ec6e3610434361710
parentdad817d3bad44619c355d11e39512b413da6939c
btrfs-progs: check: introduce low memory mode

Introduce a new fsck mode: low memory mode.

Old btrfsck is working efficiently but uses some memory for each extent
item.  This method will ensure extents are only iterated once at
extent/chunk tree check process.

But since it uses some memory for each extent item, for a large fs with
several TB metadata, this can easily eat up memory and cause OOM.

To handle such limitation and improve scalability, the new low-memory
mode will not use any heap memory to record which extent is checked.
Instead it will use extent backref to avoid most of uneeded checks on
shared fs/subvolume tree blocks.
And with the use forward and backward reference cross check, we can also
ensure every tree block is at least checked once.

Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Documentation/btrfs-check.asciidoc
cmds-check.c