btrfs: move the failrec tree stuff into extent-io-tree.h
This needs to be cleaned up in the future, but for now it belongs to the extent-io-tree stuff since it uses the internal tree search code. Needed to export get_state_failrec and set_state_failrec as well since we're not going to move the actual IO part of the failrec stuff out at this point. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
083e75e7e6
commit
b3f167aa6c
|
@ -4,6 +4,7 @@
|
||||||
#define BTRFS_EXTENT_IO_TREE_H
|
#define BTRFS_EXTENT_IO_TREE_H
|
||||||
|
|
||||||
struct extent_changeset;
|
struct extent_changeset;
|
||||||
|
struct io_failure_record;
|
||||||
|
|
||||||
/* Bits for the extent state */
|
/* Bits for the extent state */
|
||||||
#define EXTENT_DIRTY (1U << 0)
|
#define EXTENT_DIRTY (1U << 0)
|
||||||
|
@ -227,4 +228,21 @@ bool btrfs_find_delalloc_range(struct extent_io_tree *tree, u64 *start,
|
||||||
u64 *end, u64 max_bytes,
|
u64 *end, u64 max_bytes,
|
||||||
struct extent_state **cached_state);
|
struct extent_state **cached_state);
|
||||||
|
|
||||||
|
/* This should be reworked in the future and put elsewhere. */
|
||||||
|
int get_state_failrec(struct extent_io_tree *tree, u64 start,
|
||||||
|
struct io_failure_record **failrec);
|
||||||
|
int set_state_failrec(struct extent_io_tree *tree, u64 start,
|
||||||
|
struct io_failure_record *failrec);
|
||||||
|
void btrfs_free_io_failure_record(struct btrfs_inode *inode, u64 start,
|
||||||
|
u64 end);
|
||||||
|
int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end,
|
||||||
|
struct io_failure_record **failrec_ret);
|
||||||
|
int free_io_failure(struct extent_io_tree *failure_tree,
|
||||||
|
struct extent_io_tree *io_tree,
|
||||||
|
struct io_failure_record *rec);
|
||||||
|
int clean_io_failure(struct btrfs_fs_info *fs_info,
|
||||||
|
struct extent_io_tree *failure_tree,
|
||||||
|
struct extent_io_tree *io_tree, u64 start,
|
||||||
|
struct page *page, u64 ino, unsigned int pg_offset);
|
||||||
|
|
||||||
#endif /* BTRFS_EXTENT_IO_TREE_H */
|
#endif /* BTRFS_EXTENT_IO_TREE_H */
|
||||||
|
|
|
@ -2024,8 +2024,8 @@ out:
|
||||||
* set the private field for a given byte offset in the tree. If there isn't
|
* set the private field for a given byte offset in the tree. If there isn't
|
||||||
* an extent_state there already, this does nothing.
|
* an extent_state there already, this does nothing.
|
||||||
*/
|
*/
|
||||||
static noinline int set_state_failrec(struct extent_io_tree *tree, u64 start,
|
int set_state_failrec(struct extent_io_tree *tree, u64 start,
|
||||||
struct io_failure_record *failrec)
|
struct io_failure_record *failrec)
|
||||||
{
|
{
|
||||||
struct rb_node *node;
|
struct rb_node *node;
|
||||||
struct extent_state *state;
|
struct extent_state *state;
|
||||||
|
@ -2052,8 +2052,8 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static noinline int get_state_failrec(struct extent_io_tree *tree, u64 start,
|
int get_state_failrec(struct extent_io_tree *tree, u64 start,
|
||||||
struct io_failure_record **failrec)
|
struct io_failure_record **failrec)
|
||||||
{
|
{
|
||||||
struct rb_node *node;
|
struct rb_node *node;
|
||||||
struct extent_state *state;
|
struct extent_state *state;
|
||||||
|
|
|
@ -296,10 +296,6 @@ struct btrfs_inode;
|
||||||
int repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start,
|
int repair_io_failure(struct btrfs_fs_info *fs_info, u64 ino, u64 start,
|
||||||
u64 length, u64 logical, struct page *page,
|
u64 length, u64 logical, struct page *page,
|
||||||
unsigned int pg_offset, int mirror_num);
|
unsigned int pg_offset, int mirror_num);
|
||||||
int clean_io_failure(struct btrfs_fs_info *fs_info,
|
|
||||||
struct extent_io_tree *failure_tree,
|
|
||||||
struct extent_io_tree *io_tree, u64 start,
|
|
||||||
struct page *page, u64 ino, unsigned int pg_offset);
|
|
||||||
void end_extent_writepage(struct page *page, int err, u64 start, u64 end);
|
void end_extent_writepage(struct page *page, int err, u64 start, u64 end);
|
||||||
int btrfs_repair_eb_io_failure(struct extent_buffer *eb, int mirror_num);
|
int btrfs_repair_eb_io_failure(struct extent_buffer *eb, int mirror_num);
|
||||||
|
|
||||||
|
@ -323,19 +319,12 @@ struct io_failure_record {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void btrfs_free_io_failure_record(struct btrfs_inode *inode, u64 start,
|
|
||||||
u64 end);
|
|
||||||
int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end,
|
|
||||||
struct io_failure_record **failrec_ret);
|
|
||||||
bool btrfs_check_repairable(struct inode *inode, unsigned failed_bio_pages,
|
bool btrfs_check_repairable(struct inode *inode, unsigned failed_bio_pages,
|
||||||
struct io_failure_record *failrec, int fail_mirror);
|
struct io_failure_record *failrec, int fail_mirror);
|
||||||
struct bio *btrfs_create_repair_bio(struct inode *inode, struct bio *failed_bio,
|
struct bio *btrfs_create_repair_bio(struct inode *inode, struct bio *failed_bio,
|
||||||
struct io_failure_record *failrec,
|
struct io_failure_record *failrec,
|
||||||
struct page *page, int pg_offset, int icsum,
|
struct page *page, int pg_offset, int icsum,
|
||||||
bio_end_io_t *endio_func, void *data);
|
bio_end_io_t *endio_func, void *data);
|
||||||
int free_io_failure(struct extent_io_tree *failure_tree,
|
|
||||||
struct extent_io_tree *io_tree,
|
|
||||||
struct io_failure_record *rec);
|
|
||||||
#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
|
#ifdef CONFIG_BTRFS_FS_RUN_SANITY_TESTS
|
||||||
bool find_lock_delalloc_range(struct inode *inode,
|
bool find_lock_delalloc_range(struct inode *inode,
|
||||||
struct page *locked_page, u64 *start,
|
struct page *locked_page, u64 *start,
|
||||||
|
|
Loading…
Reference in New Issue