Skip to content

Commit b350e8f

Browse files
Qu Wenruokdave
Qu Wenruo
authored andcommitted
btrfs-progs: Refactor read_extent_data to use btrfs_fs_info
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent de8622f commit b350e8f

File tree

6 files changed

+26
-22
lines changed

6 files changed

+26
-22
lines changed

btrfs-map-logical.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ static int write_extent_content(struct btrfs_fs_info *fs_info, int out_fd,
169169

170170
while (cur_offset < length) {
171171
cur_len = min_t(u64, length - cur_offset, BUFFER_SIZE);
172-
ret = read_extent_data(fs_info->tree_root, buffer,
172+
ret = read_extent_data(fs_info, buffer,
173173
logical + cur_offset, &cur_len, mirror);
174174
if (ret < 0) {
175175
fprintf(stderr,

cmds-check.c

+10-8
Original file line numberDiff line numberDiff line change
@@ -7166,8 +7166,9 @@ static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
71667166
u64 num_bytes, unsigned long leaf_offset,
71677167
struct extent_buffer *eb) {
71687168

7169+
struct btrfs_fs_info *fs_info = root->fs_info;
71697170
u64 offset = 0;
7170-
u16 csum_size = btrfs_super_csum_size(root->fs_info->super_copy);
7171+
u16 csum_size = btrfs_super_csum_size(fs_info->super_copy);
71717172
char *data;
71727173
unsigned long csum_offset;
71737174
u32 csum;
@@ -7179,7 +7180,7 @@ static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
71797180
int mirror;
71807181
int num_copies;
71817182

7182-
if (num_bytes % root->fs_info->sectorsize)
7183+
if (num_bytes % fs_info->sectorsize)
71837184
return -EINVAL;
71847185

71857186
data = malloc(num_bytes);
@@ -7191,7 +7192,7 @@ static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
71917192
again:
71927193
read_len = num_bytes - offset;
71937194
/* read as much space once a time */
7194-
ret = read_extent_data(root, data + offset,
7195+
ret = read_extent_data(fs_info, data + offset,
71957196
bytenr + offset, &read_len, mirror);
71967197
if (ret)
71977198
goto out;
@@ -7202,11 +7203,11 @@ static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
72027203
tmp = offset + data_checked;
72037204

72047205
csum = btrfs_csum_data((char *)data + tmp,
7205-
csum, root->fs_info->sectorsize);
7206+
csum, fs_info->sectorsize);
72067207
btrfs_csum_final(csum, (u8 *)&csum);
72077208

72087209
csum_offset = leaf_offset +
7209-
tmp / root->fs_info->sectorsize * csum_size;
7210+
tmp / fs_info->sectorsize * csum_size;
72107211
read_extent_buffer(eb, (char *)&csum_expected,
72117212
csum_offset, csum_size);
72127213
/* try another mirror */
@@ -7221,7 +7222,7 @@ static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
72217222
goto again;
72227223
}
72237224
}
7224-
data_checked += root->fs_info->sectorsize;
7225+
data_checked += fs_info->sectorsize;
72257226
}
72267227
offset += read_len;
72277228
}
@@ -12080,13 +12081,14 @@ static int populate_csum(struct btrfs_trans_handle *trans,
1208012081
struct btrfs_root *csum_root, char *buf, u64 start,
1208112082
u64 len)
1208212083
{
12084+
struct btrfs_fs_info *fs_info = csum_root->fs_info;
1208312085
u64 offset = 0;
1208412086
u64 sectorsize;
1208512087
int ret = 0;
1208612088

1208712089
while (offset < len) {
12088-
sectorsize = csum_root->fs_info->sectorsize;
12089-
ret = read_extent_data(csum_root, buf, start + offset,
12090+
sectorsize = fs_info->sectorsize;
12091+
ret = read_extent_data(fs_info, buf, start + offset,
1209012092
&sectorsize, 0);
1209112093
if (ret)
1209212094
break;

disk-io.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -384,17 +384,17 @@ struct extent_buffer* read_tree_block(
384384
return ERR_PTR(ret);
385385
}
386386

387-
int read_extent_data(struct btrfs_root *root, char *data,
388-
u64 logical, u64 *len, int mirror)
387+
int read_extent_data(struct btrfs_fs_info *fs_info, char *data, u64 logical,
388+
u64 *len, int mirror)
389389
{
390390
u64 offset = 0;
391391
struct btrfs_multi_bio *multi = NULL;
392-
struct btrfs_fs_info *info = root->fs_info;
393392
struct btrfs_device *device;
394393
int ret = 0;
395394
u64 max_len = *len;
396395

397-
ret = btrfs_map_block(info, READ, logical, len, &multi, mirror, NULL);
396+
ret = btrfs_map_block(fs_info, READ, logical, len, &multi, mirror,
397+
NULL);
398398
if (ret) {
399399
fprintf(stderr, "Couldn't map the block %llu\n",
400400
logical + offset);

disk-io.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ struct extent_buffer* read_tree_block(
119119
struct btrfs_fs_info *fs_info, u64 bytenr, u32 blocksize,
120120
u64 parent_transid);
121121

122-
int read_extent_data(struct btrfs_root *root, char *data, u64 logical,
122+
int read_extent_data(struct btrfs_fs_info *fs_info, char *data, u64 logical,
123123
u64 *len, int mirror);
124124
void readahead_tree_block(struct btrfs_root *root, u64 bytenr, u32 blocksize,
125125
u64 parent_transid);

file.c

+8-7
Original file line numberDiff line numberDiff line change
@@ -183,20 +183,21 @@ int btrfs_punch_hole(struct btrfs_trans_handle *trans,
183183
int btrfs_read_file(struct btrfs_root *root, u64 ino, u64 start, int len,
184184
char *dest)
185185
{
186+
struct btrfs_fs_info *fs_info = root->fs_info;
186187
struct btrfs_key key;
187188
struct btrfs_path path;
188189
struct extent_buffer *leaf;
189190
struct btrfs_inode_item *ii;
190191
u64 isize;
191-
int no_holes = btrfs_fs_incompat(root->fs_info, NO_HOLES);
192+
int no_holes = btrfs_fs_incompat(fs_info, NO_HOLES);
192193
int slot;
193194
int read = 0;
194195
int ret;
195196

196-
if (!IS_ALIGNED(start, root->fs_info->sectorsize) ||
197-
!IS_ALIGNED(len, root->fs_info->sectorsize)) {
197+
if (!IS_ALIGNED(start, fs_info->sectorsize) ||
198+
!IS_ALIGNED(len, fs_info->sectorsize)) {
198199
warning("@start and @len must be aligned to %u for function %s",
199-
root->fs_info->sectorsize, __func__);
200+
fs_info->sectorsize, __func__);
200201
return -EINVAL;
201202
}
202203

@@ -260,7 +261,7 @@ int btrfs_read_file(struct btrfs_root *root, u64 ino, u64 start, int len,
260261
goto next;
261262
read_extent_buffer(leaf, dest,
262263
btrfs_file_extent_inline_start(fi), extent_len);
263-
read += round_up(extent_len, root->fs_info->sectorsize);
264+
read += round_up(extent_len, fs_info->sectorsize);
264265
break;
265266
}
266267

@@ -283,7 +284,7 @@ int btrfs_read_file(struct btrfs_root *root, u64 ino, u64 start, int len,
283284
disk_bytenr = btrfs_file_extent_disk_bytenr(leaf, fi) +
284285
btrfs_file_extent_offset(leaf, fi);
285286
read_len_ret = read_len;
286-
ret = read_extent_data(root, dest + read_start - start, disk_bytenr,
287+
ret = read_extent_data(fs_info, dest + read_start - start, disk_bytenr,
287288
&read_len_ret, 0);
288289
if (ret < 0)
289290
break;
@@ -319,7 +320,7 @@ int btrfs_read_file(struct btrfs_root *root, u64 ino, u64 start, int len,
319320
ii = btrfs_item_ptr(path.nodes[0], path.slots[0],
320321
struct btrfs_inode_item);
321322
isize = round_up(btrfs_inode_size(path.nodes[0], ii),
322-
root->fs_info->sectorsize);
323+
fs_info->sectorsize);
323324
read = min_t(u64, isize - start, len);
324325
}
325326
out:

image/main.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -876,6 +876,7 @@ static int read_data_extent(struct metadump_struct *md,
876876
struct async_work *async)
877877
{
878878
struct btrfs_root *root = md->root;
879+
struct btrfs_fs_info *fs_info = root->fs_info;
879880
u64 bytes_left = async->size;
880881
u64 logical = async->start;
881882
u64 offset = 0;
@@ -890,7 +891,7 @@ static int read_data_extent(struct metadump_struct *md,
890891
for (cur_mirror = 0; cur_mirror < num_copies; cur_mirror++) {
891892
while (bytes_left) {
892893
read_len = bytes_left;
893-
ret = read_extent_data(root,
894+
ret = read_extent_data(fs_info,
894895
(char *)(async->buffer + offset),
895896
logical, &read_len, cur_mirror);
896897
if (ret < 0)

0 commit comments

Comments
 (0)