Userspace utilities to manage btrfs filesystems
Go to file
Wang Shilong 31aa2b5fa7 Btrfs-progs: fsck: disallow partial opening if critical roots corrupted
If btrfs tree root is corrupted, fsck will hit the following segmentation.

enabling repair mode
Check tree block failed, want=29376512, have=0
Check tree block failed, want=29376512, have=0
Check tree block failed, want=29376512, have=0
Check tree block failed, want=29376512, have=0
Check tree block failed, want=29376512, have=0
read block failed check_tree_block
Couldn't read tree root
Checking filesystem on /dev/sda9
UUID: 0e1a754d-04a5-4256-ae79-0f769751803e
Critical roots corrupted, unable to fsck the FS
Segmentation fault (core dumped)

In btrfs_setup_all_roots(), we could tolerate some trees(extent tree, csum tree)
corrupted, and we have did careful check inside that function, it will
return NULL if critial roots corrupt(for example tree root).

The problem is that we check @OPEN_CTREE_PARTIAL flag again after
calling btrfs_setup_all_roots() which will successfully return
@fs_info though critial roots corrupted.

Fix this problem by removing @OPEN_CTREE_PARTIAL flag check outsize
btrfs_setup_all_roots().

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
2014-10-10 18:11:32 +02:00
Documentation btrfs-progs: wait until all subvolumes are cleaned 2014-10-10 09:32:05 +02:00
tests btrfs-progs: skip extent rebuild test if no testdev 2014-10-10 10:38:36 +02:00
.gitignore btrfs-progs: Introduce asciidoc based man page and btrfs man page. 2014-04-22 14:15:19 +02:00
bcp
bitops.h
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: Properly cast to avoid compiler warnings, fixes FTBFS on alpha and ia64 2014-10-01 16:33:26 +02:00
btrfs-corrupt-block.c btrfs-progs: corrupt-block: fix a delete and use bug corrupting extent tree 2014-09-14 13:12:27 +02: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-find-root.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +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: Add -R to list UUIDs of original received subvolume 2014-09-14 13:09:52 +02: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: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02: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: Add human readable incompat flags output for btrfs-show-super 2014-10-01 16:34:22 +02:00
btrfs-zero-log.c btrfs-progs: use check_argc_* to check arg number for all tools 2014-08-22 15:07:02 +02: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: Copyright string update 2014-03-21 06:23:24 -07: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: Fix malloc size for superblock. 2014-10-10 09:09:47 +02: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: Check the consistence between the parent node and child node/leaf. 2014-10-10 10:38:38 +02:00
cmds-device.c btrfs-progs: remove BTRFS_SCAN_PROC scan method 2014-10-10 10:38:34 +02:00
cmds-filesystem.c btrfs-progs: fix device missing of btrfs fi show with seed devices 2014-10-10 10:52:41 +02: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
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: return error when canonicalize_path failed 2014-10-10 10:51:57 +02: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: remove wrong set_argv0 for restore 2014-09-14 19:06:12 +02: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: Check fstype in find_mount_root() 2014-08-22 15:07:02 +02:00
cmds-subvolume.c btrfs-progs: wait until all subvolumes are cleaned 2014-10-10 09:32:05 +02:00
commands.h btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
COPYING
crc32c.c
crc32c.h
ctree.c Btrfs-progs: check all slots in leaves 2014-10-01 16:59:10 +02:00
ctree.h btrfs-progs: read global reserve size from space infos 2014-08-28 02:03:33 +02:00
dir-item.c
dir-test.c
disk-io.c Btrfs-progs: fsck: disallow partial opening if critical roots corrupted 2014-10-10 18:11:32 +02:00
disk-io.h btrfs-progs: kill BUG_ON in readahead_tree_block() 2014-09-14 13:19:44 +02:00
extent_io.c btrfs-progs: do not reclaim extent buffer 2014-10-10 10:38:36 +02:00
extent_io.h Btrfs-progs: keep track of transid failures and fix them if possible 2013-10-16 08:23:12 -04:00
extent-cache.c
extent-cache.h
extent-tree.c btrfs-progs: remove unused flags for btrfs_path 2014-08-28 02:03:18 +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
hasher.c
help.c btrfs-progs: move the check_argc_* functions into utils.c 2014-08-22 14:55:27 +02:00
inode-item.c
inode-map.c btrfs-progs: remove btrfs_release_path before btrfs_free_path 2014-09-14 19:06:12 +02:00
INSTALL btrfs-progs: Add information about libblkid requirement to INSTALL file 2014-08-22 14:39:31 +02:00
ioctl-test.c
ioctl.h btrfs-progs: balance filter: add limit of processed chunks 2014-08-22 14:55:26 +02:00
kerncompat.h btrfs-progs: add option to disable backtrace usage 2014-10-10 10:38:38 +02:00
list_sort.c
list_sort.h
list.h
Makefile btrfs-progs: add option to disable backtrace usage 2014-10-10 10:38:38 +02:00
math.h btrfs-progs: Copyright string update 2014-03-21 06:23:24 -07:00
mkfs.c btrfs-progs: mkfs make --uuid require an argument 2014-08-22 16:09:56 +02:00
print-tree.c btrfs-progs: Add human readable flags output for chunk/block group type. 2014-08-22 14:39:35 +02:00
print-tree.h btrfs-progs: add quota group verify code 2014-08-22 14:39:33 +02:00
props.c Btrfs-progs: set string end sing '\0' for property 2014-05-02 17:05:37 +02:00
props.h Btrfs-progs: introduce btrfs property subgroup 2014-01-31 08:22:31 -08:00
qgroup-verify.c Btrfs-progs: fix typos 2014-09-02 17:05:32 +02:00
qgroup-verify.h btrfs-progs: show extent state for a subvolume 2014-08-22 15:04:16 +02:00
qgroup.c btrfs-progs: print qgroup excl as unsigned 2014-08-22 14:39:32 +02: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
raid6.c
random-test.c
rbtree.c
rbtree.h
repair.c
repair.h
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 unaligned loads in receive 2014-08-22 16:09:55 +02: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: Init root_item to avoid gcc 4.8.2 warning 2014-03-21 06:23:29 -07:00
send-utils.h btrfs-progs: enclose uuid tree compat code with ifdefs 2014-03-21 06:23:07 -07:00
send.h
show-blocks
super-recover.c btrfs-progs: super-recover: fix double free fs_devices memory 2014-10-10 10:38:32 +02:00
transaction.h
ulist.c btrfs-progs: import ulist 2014-08-22 14:39:33 +02:00
ulist.h btrfs-progs: import ulist 2014-08-22 14:39:33 +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: do a separate probe for transient replacing device 2014-10-10 18:11:32 +02:00
utils.h btrfs-progs: remove scan_for_btrfs() 2014-10-10 10:38:34 +02:00
uuid-tree.c
version.sh Btrfs progs v3.16.2 2014-10-01 18:07:59 +02:00
volumes.c btrfs-progs: fix device missing of btrfs fi show with seed devices 2014-10-10 10:52:41 +02:00
volumes.h btrfs-progs: fix device missing of btrfs fi show with seed devices 2014-10-10 10:52:41 +02:00