Userspace utilities to manage btrfs filesystems
Go to file
Qu Wenruo 1581d7e5db btrfs-progs: Recover btree by dropping corrupted leaf/node.
Current btrfsck can skip corrupted leaf and even repair some corrupted
one if their bytenr or key order is wrong.

However when it comes to csum error leaf, btrfsck can only skip them,
which is OK for read-only iteration, but is bad for write.

This patch introduce the new repair_btree() function to recover the
btree, deleting all the corrupted leaf/node including corresponding
extent, allowing later write into the btree.

This patch provides the basis for later recovery with corrupted leaves.

Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
2014-12-10 13:50:28 +01:00
Documentation btrfs-progs: convert: use task for progress indication of metadata creation 2014-12-04 17:13:44 +01:00
tests Btrfs-progs: test images for new btrfsck functionality 2014-11-14 11:01:57 +01:00
.gitignore btrfs-progs: update .gitignore 2014-11-07 17:59:56 +01:00
COPYING fix COPYING 2007-06-12 15:41:08 -04:00
INSTALL btrfs-progs: Add information about libblkid requirement to INSTALL file 2014-08-22 14:39:31 +02:00
Makefile btrfs-progs: Add btrfs_unlink() and btrfs_add_link() functions. 2014-12-10 13:13:06 +01:00
backref.c Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
backref.h Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
bcp Btrfs-progs: Correct path munging in bcp 2011-10-25 09:18:58 -04:00
bitops.h Btrfs-progs: add a free space cache checker to fsck V2 2013-04-23 18:56:21 +02:00
btrfs-calc-size.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-convert.c btrfs-progs: convert: fix unable to rollback case with removed empty block groups 2014-12-09 14:32:38 +01:00
btrfs-corrupt-block.c Btrfs-progs: add the ability to delete items 2014-11-14 10:59:11 +01:00
btrfs-crc.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-debug-tree.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-debugfs btrfs-progs: Add simple python front end to the search ioctl 2014-12-04 17:03:49 +01:00
btrfs-find-root.c btrfs-progs: introduce a proper structure on which cli will call register-device ioctl 2014-10-16 12:02:00 +02:00
btrfs-fragments.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-image.c btrfs-progs: add mount status check for btrfs-image 2014-08-22 15:07:03 +02:00
btrfs-list.c btrfs-progs: fix spacing in error messages 2014-11-25 19:50:12 +01:00
btrfs-list.h btrfs-progs: Add -R to list UUIDs of original received subvolume 2014-09-14 13:09:52 +02:00
btrfs-map-logical.c btrfs-progs: check read extent errors when mapping 2014-11-03 18:35:30 +01:00
btrfs-select-super.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02:00
btrfs-show-super.c btrfs-progs: fix show super unknown flag output 2014-10-16 13:38:35 +02:00
btrfs-zero-log.c Btrfs-progs: add a message to know zero log ran successfully 2014-11-14 11:00:32 +01:00
btrfs.c btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
btrfsck.h btrfs-progs: rebuild missing block group during chunk recovery if possible 2014-12-04 16:48:13 +01:00
btrfstune.c btrfs-progs: add ask_user confirmation for btrfstune clear seeding flag 2014-08-22 16:09:55 +02:00
chunk-recover.c btrfs-progs: rebuild missing block group during chunk recovery if possible 2014-12-04 16:48:13 +01:00
cmds-balance.c btrfs-progs: balance filter: add limit of processed chunks 2014-08-22 14:55:26 +02:00
cmds-check.c btrfs-progs: Recover btree by dropping corrupted leaf/node. 2014-12-10 13:50:28 +01:00
cmds-device.c btrfs-progs: clean up return codes and paths 2014-12-04 16:48:11 +01:00
cmds-fi-disk_usage.c btrfs-progs: rework calculations of fi usage 2014-12-04 16:48:12 +01:00
cmds-fi-disk_usage.h btrfs-progs: replace df_pretty_sizes with pretty_size_mode 2014-12-04 16:48:11 +01:00
cmds-filesystem.c btrfs-progs: skip fs with no seed when build seed/sprout mapping for fi show 2014-12-04 16:48:13 +01:00
cmds-inspect.c Btrfs-progs: fix some build warnings on 32bit platform 2014-08-22 15:07:03 +02:00
cmds-property.c btrfs-progs: remove unnecessary return value check in btrfs-property 2014-08-22 15:07:03 +02:00
cmds-qgroup.c btrfs-progs: qgroup destroy says create failed 2014-01-31 08:22:12 -08:00
cmds-quota.c Btrfs-progs: fix magic return value in cmds-quota.c 2013-10-16 08:20:41 -04:00
cmds-receive.c btrfs-progs: add missing descriptions of '--max-errors' in btrfs-receive documentation 2014-08-22 15:07:04 +02:00
cmds-replace.c btrfs-progs: add new dev replace result 2014-11-25 18:50:58 +01:00
cmds-rescue.c btrfs-progs: use check_argc_exact to check arg number of btrfs-rescue 2014-08-22 14:39:31 +02:00
cmds-restore.c btrfs-progs: cleanup duplicate assignment of variable leaf for btrfs-restore 2014-12-04 18:51:51 +01:00
cmds-scrub.c btrfs-progs: scrub, detect stale information in the status file 2014-10-10 10:38:36 +02:00
cmds-send.c btrfs-progs: fix compiler warning 2014-11-07 18:14:38 +01:00
cmds-subvolume.c btrfs-progs: fix return value problem for btrfs sub show 2014-11-27 18:36:55 +01:00
commands.h btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
crc32c.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
crc32c.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
ctree.c btrfs-progs: Import lookup/del_inode_ref() function. 2014-12-10 11:53:48 +01:00
ctree.h btrfs-progs: Add btrfs_mkdir() function for the incoming 'lost+found' fsck mechanism. 2014-12-10 13:14:26 +01:00
dir-item.c Btrfs-progs: delete bogus dir indexes 2014-10-14 10:45:03 +02:00
dir-test.c Btrfs-progs: fix magic return value in dir-test.c 2013-10-16 08:20:42 -04:00
disk-io.c btrfs-progs: Check sb_bytenr with device size before scanning one device. 2014-11-14 11:02:16 +01:00
disk-io.h btrfs-progs: introduce a proper structure on which cli will call register-device ioctl 2014-10-16 12:02:00 +02:00
extent-cache.c btrfs-progs: Add last_cache_extent() for extent-cache. 2014-12-10 11:54:10 +01:00
extent-cache.h btrfs-progs: Add last_cache_extent() for extent-cache. 2014-12-10 11:54:10 +01:00
extent-tree.c Btrfs-progs: check, ability to detect and fix outdated snapshot root items 2014-10-17 18:24:54 +02:00
extent_io.c btrfs-progs: check read extent errors when mapping 2014-11-03 18:35:30 +01:00
extent_io.h Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
file-item.c btrfs-progs: remove btrfs_release_path before btrfs_free_path 2014-09-14 19:06:12 +02:00
free-space-cache.c btrfs-progs: make free space checker work on non-4k sectorsize filesystems 2014-10-10 10:38:31 +02:00
free-space-cache.h btrfs-progs: make free space checker work on non-4k sectorsize filesystems 2014-10-10 10:38:31 +02:00
fsck.btrfs btrfs-progs: add fsck.btrfs stub and manpage 2014-01-31 08:22:13 -08:00
hash.h Switch btrfs_name_hash() to crc32c 2008-08-20 20:11:23 -04:00
hasher.c Unaligned access fixes 2008-02-15 11:19:58 -05:00
help.c btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
inode-item.c btrfs-progs: Import lookup/del_inode_ref() function. 2014-12-10 11:53:48 +01:00
inode-map.c btrfs-progs: remove btrfs_release_path before btrfs_free_path 2014-09-14 19:06:12 +02:00
inode.c btrfs-progs: Add btrfs_mkdir() function for the incoming 'lost+found' fsck mechanism. 2014-12-10 13:14:26 +01:00
ioctl-test.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
ioctl.h btrfs-progs: add new dev replace result 2014-11-25 18:50:58 +01:00
kerncompat.h Btrfs-progs: update rbtree libs 2014-10-14 10:39:40 +02:00
library-test.c btrfs-progs: build, add basic build test for library 2014-11-07 17:52:57 +01:00
list.h Btrfs-progs: introduce list_{first, next}_entry/list_splice_tail{_init} 2013-07-03 14:06:55 -04:00
list_sort.c btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
list_sort.h btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
math.h btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
mkfs.c btrfs-progs: mkfs should be consistent in calling register device 2014-10-16 12:02:00 +02:00
print-tree.c btrfs-progs: debug: print more info about inode 2014-10-10 18:15:28 +02:00
print-tree.h btrfs-progs: add quota group verify code 2014-08-22 14:39:33 +02:00
props.c btrfs-progs: use system attr instead of attr library 2014-11-19 14:42:17 +01:00
props.h Btrfs-progs: introduce btrfs property subgroup 2014-01-31 08:22:31 -08:00
qgroup-verify.c Btrfs-progs: add_refs_for_implied: Use root_id instead of root_bytenr. 2014-11-27 18:37:05 +01:00
qgroup-verify.h btrfs-progs: show extent state for a subvolume 2014-08-22 15:04:16 +02:00
qgroup.c btrfs-progs: fix spacing in error messages 2014-11-25 19:50:12 +01:00
qgroup.h Btrfs-progs: enhance btrfs qgroup show to sort qgroups 2013-10-16 08:23:12 -04:00
quick-test.c Btrfs-progs: rework open_ctree to take flags, add a new one V2 2013-11-07 16:10:40 -05:00
radix-tree.c btrfs-progs: Fix undefined behavior in radix-tree.c. 2014-08-22 14:39:34 +02:00
radix-tree.h btrfs-progs: libify some parts of btrfs-progs 2013-02-27 15:24:25 +01:00
raid6.c btrfs-progs: give raid6.c its exported prototypes 2013-09-03 19:41:11 +02:00
random-test.c Btrfs-progs: fix magic return value in random-test.c 2013-10-16 08:20:42 -04:00
rbtree-utils.c Btrfs-progs: break out rbtree util functions 2014-10-14 10:39:39 +02:00
rbtree-utils.h btrfs-progs: libbtrfs, make exported headers compatible with C++ 2014-11-03 23:50:50 +01:00
rbtree.c Btrfs-progs: update rbtree libs 2014-10-14 10:39:40 +02:00
rbtree.h btrfs-progs: libbtrfs, make exported headers compatible with C++ 2014-11-03 23:50:50 +01:00
rbtree_augmented.h btrfs-progs: libbtrfs, make exported headers compatible with C++ 2014-11-03 23:50:50 +01:00
repair.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
repair.h Btrfsck: add the ability to prune corrupt extent allocation tree blocks 2012-02-21 14:37:21 -05:00
root-tree.c Btrfs-progs: free path if we don't find root item 2014-03-21 06:23:32 -07:00
send-stream.c btrfs-progs: fix compiler warning 2014-11-07 18:14:38 +01:00
send-stream.h btrfs-progs: library version defines 2014-09-02 17:04:15 +02:00
send-test.c Btrfs-progs: remove unsed pthread attribute objects 2014-04-22 14:33:35 +02:00
send-utils.c btrfs-progs: fix spacing in error messages 2014-11-25 19:50:12 +01:00
send-utils.h btrfs-progs: enclose uuid tree compat code with ifdefs 2014-03-21 06:23:07 -07:00
send.h btrfs-progs: make libbtrfs usable from C++ 2013-02-19 11:15:30 +01:00
show-blocks Fix showblocks to display different colors for different metadata roots 2009-03-09 13:00:44 -04:00
string-table.c btrfs-progs: Add helpers functions to handle the printing of data in tabular format 2014-12-04 16:48:09 +01:00
string-table.h btrfs-progs: Add helpers functions to handle the printing of data in tabular format 2014-12-04 16:48:09 +01:00
super-recover.c btrfs-progs: introduce a proper structure on which cli will call register-device ioctl 2014-10-16 12:02:00 +02:00
task-utils.c btrfs-progs: convert: use task for progress indication of metadata creation 2014-12-04 17:13:44 +01:00
task-utils.h btrfs-progs: add task-utils 2014-12-04 17:11:29 +01:00
transaction.h btrfs-progs: add malloc check in transaction.h/btrfs_start_transaction 2013-01-18 18:27:21 +01:00
ulist.c btrfs-progs: import ulist 2014-08-22 14:39:33 +02:00
ulist.h Btrfs-progs: pull back backref.c and fix it up 2014-10-14 10:39:38 +02:00
utils-lib.c btrfs-progs: move arg_strtou64 to a separate file for library 2014-05-02 17:04:28 +02:00
utils.c btrfs-progs: fix wrong num_devices for btrfs fi show with seed devices 2014-12-04 16:48:13 +01:00
utils.h btrfs-progs: Add count_digits() function to help calculate filename len. 2014-12-10 13:44:52 +01:00
uuid-tree.c btrfs-progs: fix in-place byte swapping 2013-09-03 19:41:06 +02:00
version.sh Btrfs progs 3.17.3 2014-12-04 14:47:18 +01:00
volumes.c btrfs-progs: convert: fix unable to rollback case with removed empty block groups 2014-12-09 14:32:38 +01:00
volumes.h btrfs-progs: fix device missing of btrfs fi show with seed devices 2014-10-10 10:52:41 +02:00