diff options
author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2014-07-03 17:36:36 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2014-08-22 15:04:50 +0200 |
commit | 23d7f6d9dc0aa42e30fe9642b4e0876354d2c02e (patch) | |
tree | a4126379363d41fb397f73df5d532f65104d10f2 /disk-io.h | |
parent | bc70abad8cddc344bef1378017d159139c89d4ba (diff) |
btrfs-progs: Allow btrfs_read_dev_super() to read all 3 super for super_recover.
Btrfs-progs superblock checksum check is somewhat too restricted for
super-recover, since current btrfs-progs will only read the 1st
superblock and if you need super-recover the 1st superblock is
possibly already damaged.
The fix is introducing super_recover parameter for
btrfs_read_dev_super() and callers to allow scan backup superblocks if
needed.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
Diffstat (limited to 'disk-io.h')
-rw-r--r-- | disk-io.h | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -68,7 +68,7 @@ void btrfs_release_all_roots(struct btrfs_fs_info *fs_info); void btrfs_cleanup_all_caches(struct btrfs_fs_info *fs_info); int btrfs_scan_fs_devices(int fd, const char *path, struct btrfs_fs_devices **fs_devices, u64 sb_bytenr, - int run_ioctl); + int run_ioctl, int super_recover); int btrfs_setup_chunk_tree_and_device_map(struct btrfs_fs_info *fs_info); struct btrfs_root *open_ctree(const char *filename, u64 sb_bytenr, @@ -82,7 +82,8 @@ int close_ctree(struct btrfs_root *root); int write_all_supers(struct btrfs_root *root); int write_ctree_super(struct btrfs_trans_handle *trans, struct btrfs_root *root); -int btrfs_read_dev_super(int fd, struct btrfs_super_block *sb, u64 sb_bytenr); +int btrfs_read_dev_super(int fd, struct btrfs_super_block *sb, u64 sb_bytenr, + int super_recover); int btrfs_map_bh_to_logical(struct btrfs_root *root, struct extent_buffer *bh, u64 logical); struct extent_buffer *btrfs_find_tree_block(struct btrfs_root *root, |