btrfs-progs: export read_extent_data function
Export it for later btrfs-map-logical cleanup. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
parent
cf4eb9a90e
commit
0074cd315c
34
cmds-check.c
34
cmds-check.c
|
@ -5235,40 +5235,6 @@ static int check_space_cache(struct btrfs_root *root)
|
||||||
return error ? -EINVAL : 0;
|
return error ? -EINVAL : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int read_extent_data(struct btrfs_root *root, char *data,
|
|
||||||
u64 logical, u64 *len, int mirror)
|
|
||||||
{
|
|
||||||
u64 offset = 0;
|
|
||||||
struct btrfs_multi_bio *multi = NULL;
|
|
||||||
struct btrfs_fs_info *info = root->fs_info;
|
|
||||||
struct btrfs_device *device;
|
|
||||||
int ret = 0;
|
|
||||||
u64 max_len = *len;
|
|
||||||
|
|
||||||
ret = btrfs_map_block(&info->mapping_tree, READ, logical, len,
|
|
||||||
&multi, mirror, NULL);
|
|
||||||
if (ret) {
|
|
||||||
fprintf(stderr, "Couldn't map the block %llu\n",
|
|
||||||
logical + offset);
|
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
device = multi->stripes[0].dev;
|
|
||||||
|
|
||||||
if (device->fd == 0)
|
|
||||||
goto err;
|
|
||||||
if (*len > max_len)
|
|
||||||
*len = max_len;
|
|
||||||
|
|
||||||
ret = pread64(device->fd, data, *len, multi->stripes[0].physical);
|
|
||||||
if (ret != *len)
|
|
||||||
ret = -EIO;
|
|
||||||
else
|
|
||||||
ret = 0;
|
|
||||||
err:
|
|
||||||
kfree(multi);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
|
static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
|
||||||
u64 num_bytes, unsigned long leaf_offset,
|
u64 num_bytes, unsigned long leaf_offset,
|
||||||
struct extent_buffer *eb) {
|
struct extent_buffer *eb) {
|
||||||
|
|
34
disk-io.c
34
disk-io.c
|
@ -366,6 +366,40 @@ struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr,
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int read_extent_data(struct btrfs_root *root, char *data,
|
||||||
|
u64 logical, u64 *len, int mirror)
|
||||||
|
{
|
||||||
|
u64 offset = 0;
|
||||||
|
struct btrfs_multi_bio *multi = NULL;
|
||||||
|
struct btrfs_fs_info *info = root->fs_info;
|
||||||
|
struct btrfs_device *device;
|
||||||
|
int ret = 0;
|
||||||
|
u64 max_len = *len;
|
||||||
|
|
||||||
|
ret = btrfs_map_block(&info->mapping_tree, READ, logical, len,
|
||||||
|
&multi, mirror, NULL);
|
||||||
|
if (ret) {
|
||||||
|
fprintf(stderr, "Couldn't map the block %llu\n",
|
||||||
|
logical + offset);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
device = multi->stripes[0].dev;
|
||||||
|
|
||||||
|
if (device->fd == 0)
|
||||||
|
goto err;
|
||||||
|
if (*len > max_len)
|
||||||
|
*len = max_len;
|
||||||
|
|
||||||
|
ret = pread64(device->fd, data, *len, multi->stripes[0].physical);
|
||||||
|
if (ret != *len)
|
||||||
|
ret = -EIO;
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
|
err:
|
||||||
|
kfree(multi);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int write_and_map_eb(struct btrfs_trans_handle *trans,
|
int write_and_map_eb(struct btrfs_trans_handle *trans,
|
||||||
struct btrfs_root *root,
|
struct btrfs_root *root,
|
||||||
struct extent_buffer *eb)
|
struct extent_buffer *eb)
|
||||||
|
|
|
@ -69,6 +69,8 @@ struct btrfs_device;
|
||||||
int read_whole_eb(struct btrfs_fs_info *info, struct extent_buffer *eb, int mirror);
|
int read_whole_eb(struct btrfs_fs_info *info, struct extent_buffer *eb, int mirror);
|
||||||
struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr,
|
struct extent_buffer *read_tree_block(struct btrfs_root *root, u64 bytenr,
|
||||||
u32 blocksize, u64 parent_transid);
|
u32 blocksize, u64 parent_transid);
|
||||||
|
int read_extent_data(struct btrfs_root *root, char *data, u64 logical,
|
||||||
|
u64 *len, int mirror);
|
||||||
void readahead_tree_block(struct btrfs_root *root, u64 bytenr, u32 blocksize,
|
void readahead_tree_block(struct btrfs_root *root, u64 bytenr, u32 blocksize,
|
||||||
u64 parent_transid);
|
u64 parent_transid);
|
||||||
struct extent_buffer *btrfs_find_create_tree_block(struct btrfs_root *root,
|
struct extent_buffer *btrfs_find_create_tree_block(struct btrfs_root *root,
|
||||||
|
|
Loading…
Reference in New Issue