Go to file
Wang Shilong 7985fe64e0 Btrfs-progs: add super-recover to recover bad supers
Until now if one of device's first superblock is corrupt,btrfs will
fail to mount. Luckily, btrfs have at least two superblocks for
every disk.

In theory, if silent corrupting happens when we are writting superblocks
into disk, we must hold at least one good superblock.

One side effect is that user must gurantee that the disk must be
a btrfs disk. Otherwise, this tool may destroy other fs.(This is also
reason why btrfs only use first superblock in every disk to mount)

This little program will try to correct bad superblocks from
good superblocks with max generation.

There will be five kinds of return values:

0: all supers are valid, no need to recover
1: usage or syntax error
2: recover all bad superblocks successfully
3: fail to recover bad superblocks
4: abort to recover bad superblocks

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2013-10-16 08:23:08 -04:00
man btrfs-progs: move chunk-recover to rescue group 2013-10-16 08:21:38 -04:00
.gitignore btrfs-progs: get C=1 sparse checking working again 2013-09-03 19:41:12 +02:00
.hgignore Add .hgignore file to ignore verison.h 2008-07-23 11:36:13 -04:00
.hgtags Added tag v0.16 for changeset 2b26e4f8c71e 2008-08-04 15:46:36 -04:00
COPYING fix COPYING 2007-06-12 15:41:08 -04:00
INSTALL Removing btrfsctl, btrfs-vol, btrfs-show 2013-03-19 18:21:41 +01:00
Makefile Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04: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: per-thread, per-call pretty buffer 2013-08-09 14:32:33 +02:00
btrfs-convert.c Btrfs-progs: mkfs can now create fs with skinny extents 2013-09-03 19:41:13 +02:00
btrfs-corrupt-block.c Btrfs-progs: add ability to corrupt file extent disk bytenr 2013-10-16 08:20:43 -04:00
btrfs-crc.c btrfs-progs: Fix getopt on arm/ppc platforms 2013-08-09 14:32:34 +02:00
btrfs-debug-tree.c btrfs-progs: drop unused parameter from btrfs_release_path 2013-09-03 19:40:46 +02:00
btrfs-find-root.c Btrfs-progs: pass flag to control whether run ioctl in btrfs_scan_for_fsid() 2013-10-16 08:22:26 -04:00
btrfs-fragments.c Btrfs-progs: fix closing of opendir() 2013-08-09 14:32:36 +02:00
btrfs-image.c btrfs-progs: fix -Wmissing-noreturn 2013-10-16 08:20:43 -04:00
btrfs-list.c btrfs-progs: 'optarg' shadows getopt 2013-10-16 08:20:43 -04:00
btrfs-list.h btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
btrfs-map-logical.c btrfs-progs: fix -Wmissing-noreturn 2013-10-16 08:20:43 -04:00
btrfs-select-super.c btrfs-progs: btrfs-select-super output is confusing when it fails 2013-04-23 18:56:20 +02:00
btrfs-show-super.c btrfs-progs: remove variable length stack arrays 2013-09-03 19:41:03 +02:00
btrfs-zero-log.c btrfs-progs: fix -Wmissing-noreturn 2013-10-16 08:20:43 -04:00
btrfs.c btrfs-progs: move chunk-recover to rescue group 2013-10-16 08:21:38 -04:00
btrfsck.h Btrfs-progs: Add chunk rebuild function for RAID1/SINGLE/DUP 2013-07-03 14:06:55 -04:00
btrfstune.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
chunk-recover.c Btrfs-progs: move ask_user() to utils.c 2013-10-16 08:22:26 -04:00
cmds-balance.c Btrfs-progs: fix magic return value in cmds-balance.c 2013-10-16 08:20:43 -04:00
cmds-check.c Btrfs-progs: make btrfsck fix backrefs that are broken 2013-10-16 08:20:43 -04:00
cmds-chunk.c btrfs-progs: move chunk-recover to rescue group 2013-10-16 08:21:38 -04:00
cmds-device.c btrfs-progs: add nodiscard option to device add 2013-10-16 08:20:43 -04:00
cmds-filesystem.c btrfs-progs: add list_sort and use it to sort devices by id 2013-10-16 08:22:26 -04:00
cmds-inspect.c Btrfs-progs: fix magic return value in cmds-inspect.c 2013-10-16 08:20:41 -04:00
cmds-qgroup.c Btrfs-progs: fix magic return value in cmds-qgroup.c 2013-10-16 08:20:41 -04: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: fix magic return value in cmds-receive.c 2013-10-16 08:20:41 -04:00
cmds-replace.c Btrfs-progs: fix magic return value in cmds-replace.c 2013-10-16 08:20:42 -04:00
cmds-rescue.c Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
cmds-restore.c Btrfs-progs: fix magic return value in cmds-restore.c 2013-10-16 08:20:41 -04:00
cmds-scrub.c Btrfs-progs: fix magic return value in cmds-scrub.c 2013-10-16 08:20:42 -04:00
cmds-send.c Btrfs-progs: fix magic return value in cmds-send.c 2013-10-16 08:20:41 -04:00
cmds-subvolume.c btrfs-progs: free strdup()s that are not freed 2013-10-16 08:20:42 -04:00
commands.h Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04: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: make many private symbols static 2013-09-03 19:41:08 +02:00
ctree.h btrfs-progs: calculate available blocks on device properly 2013-10-16 08:20:42 -04:00
dir-item.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +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: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
disk-io.h Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
extent-cache.c Btrfs-progs: extend the extent cache for the device extent 2013-07-03 14:06:54 -04:00
extent-cache.h Btrfs-progs: extend the extent cache for the device extent 2013-07-03 14:06:54 -04:00
extent-tree.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
extent_io.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
extent_io.h btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
file-item.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
free-space-cache.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +02:00
free-space-cache.h Btrfs-progs: add a free space cache checker to fsck V2 2013-04-23 18:56:21 +02: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: return 1 rather than 129 in usage() 2013-10-16 08:20:03 -04:00
inode-item.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
inode-map.c btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02: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: fix typo in btrfs_err_str() 2013-10-16 08:20:42 -04:00
kerncompat.h btrfs-progs: get C=1 sparse checking working again 2013-09-03 19:41:12 +02: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: cleanup duplicated division functions 2013-08-09 14:32:28 +02:00
mkfs.c btrfs-progs: use better name for nodiscard variable and flip the logic 2013-10-16 08:20:43 -04:00
print-tree.c btrfs-progs: fix in-place byte swapping 2013-09-03 19:41:06 +02:00
print-tree.h Btrfs: add btrfs-debug-tree -b <block number> to print a single block 2010-04-06 09:30:17 -04:00
qgroup.c btrfs-progs: fix qgroup realloc inheritance 2013-09-03 19:41:07 +02:00
qgroup.h btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
quick-test.c btrfs-progs: mark static & remove unused from non-kernel code 2013-09-03 19:40:54 +02:00
radix-tree.c btrfs-progs: make many private symbols static 2013-09-03 19:41:08 +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.c Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04:00
rbtree.h Btrfs-progs: introduce common insert/search/delete functions for rb-tree 2013-07-03 14:06:54 -04: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: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00
send-stream.c Btrfs-progs: remove some unused code 2013-04-23 18:56:25 +02:00
send-stream.h Btrfs-progs: btrfs-receive optionally honors the end-cmd 2013-04-23 18:56:24 +02:00
send-test.c Btrfs-progs: fix magic return value in send-test.c 2013-10-16 08:20:42 -04:00
send-utils.c Btrfs-progs: use UUID tree for send/receive 2013-08-09 14:32:31 +02:00
send-utils.h Btrfs-progs: use UUID tree for send/receive 2013-08-09 14:32:31 +02: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
super-recover.c Btrfs-progs: add super-recover to recover bad supers 2013-10-16 08:23:08 -04:00
transaction.h btrfs-progs: add malloc check in transaction.h/btrfs_start_transaction 2013-01-18 18:27:21 +01:00
utils.c Btrfs-progs: move ask_user() to utils.c 2013-10-16 08:22:26 -04:00
utils.h Btrfs-progs: move ask_user() to utils.c 2013-10-16 08:22:26 -04:00
uuid-tree.c btrfs-progs: fix in-place byte swapping 2013-09-03 19:41:06 +02:00
version.sh version.sh: fix version when built from tarball 2013-01-17 18:13:03 +01:00
volumes.c btrfs-progs: calculate available blocks on device properly 2013-10-16 08:20:42 -04:00
volumes.h btrfs-progs: mark static & remove unused from shared kernel code 2013-09-03 19:40:53 +02:00