Skip to content

Commit 26072f5

Browse files
Gu Jinxiangkdave
Gu Jinxiang
authored andcommitted
btrfs-progs: Use fs_info instead of root for BTRFS_LEAF_DATA_SIZE
Do a cleanup. Also make it consistent with kernel. Use fs_info instead of root for BTRFS_LEAF_DATA_SIZE, since maybe in some situation we do not know root, but just know fs_info. Signed-off-by: Gu Jinxiang <gujx@cn.fujitsu.com> Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent c449c39 commit 26072f5

File tree

7 files changed

+42
-33
lines changed

7 files changed

+42
-33
lines changed

cmds-check.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -7233,9 +7233,9 @@ static int fix_item_offset(struct btrfs_root *root, struct btrfs_path *path)
72337233
unsigned int shift = 0, offset;
72347234

72357235
if (i == 0 && btrfs_item_end_nr(buf, i) !=
7236-
BTRFS_LEAF_DATA_SIZE(root)) {
7236+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
72377237
if (btrfs_item_end_nr(buf, i) >
7238-
BTRFS_LEAF_DATA_SIZE(root)) {
7238+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
72397239
ret = delete_bogus_item(root, path, buf, i);
72407240
if (!ret)
72417241
goto again;
@@ -7244,7 +7244,7 @@ static int fix_item_offset(struct btrfs_root *root, struct btrfs_path *path)
72447244
ret = -EIO;
72457245
break;
72467246
}
7247-
shift = BTRFS_LEAF_DATA_SIZE(root) -
7247+
shift = BTRFS_LEAF_DATA_SIZE(root->fs_info) -
72487248
btrfs_item_end_nr(buf, i);
72497249
} else if (i > 0 && btrfs_item_end_nr(buf, i) !=
72507250
btrfs_item_offset_nr(buf, i - 1)) {

convert/source-ext2.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ static int ext2_copy_single_xattr(struct btrfs_trans_handle *trans,
520520
}
521521
strncpy(namebuf, xattr_prefix_table[name_index], XATTR_NAME_MAX);
522522
strncat(namebuf, EXT2_EXT_ATTR_NAME(entry), entry->e_name_len);
523-
if (name_len + datalen > BTRFS_LEAF_DATA_SIZE(root) -
523+
if (name_len + datalen > BTRFS_LEAF_DATA_SIZE(root->fs_info) -
524524
sizeof(struct btrfs_item) - sizeof(struct btrfs_dir_item)) {
525525
fprintf(stderr, "skip large xattr on inode %Lu name %.*s\n",
526526
objectid - INO_OFFSET, name_len, namebuf);

convert/source-reiserfs.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -676,7 +676,7 @@ static int reiserfs_xattr_indirect_fn(reiserfs_filsys_t fs, u64 position,
676676
size_t alloc = min(position + num_blocks * fs->fs_blocksize, size);
677677
char *body;
678678

679-
if (size > BTRFS_LEAF_DATA_SIZE(xa_data->root) -
679+
if (size > BTRFS_LEAF_DATA_SIZE(xa_data->root->fs_info) -
680680
sizeof(struct btrfs_item) - sizeof(struct btrfs_dir_item)) {
681681
fprintf(stderr, "skip large xattr on objectid %llu name %.*s\n",
682682
xa_data->target_oid, (int)xa_data->namelen,
@@ -714,7 +714,7 @@ static int reiserfs_xattr_direct_fn(reiserfs_filsys_t fs, __u64 position,
714714
struct reiserfs_xattr_data *xa_data = data;
715715
char *newbody;
716716

717-
if (size > BTRFS_LEAF_DATA_SIZE(xa_data->root) -
717+
if (size > BTRFS_LEAF_DATA_SIZE(xa_data->root->fs_info) -
718718
sizeof(struct btrfs_item) - sizeof(struct btrfs_dir_item)) {
719719
fprintf(stderr, "skip large xattr on objectid %llu name %.*s\n",
720720
xa_data->target_oid, (int)xa_data->namelen,

ctree.c

+28-21
Original file line numberDiff line numberDiff line change
@@ -413,7 +413,7 @@ static inline unsigned int leaf_data_end(struct btrfs_root *root,
413413
{
414414
u32 nr = btrfs_header_nritems(leaf);
415415
if (nr == 0)
416-
return BTRFS_LEAF_DATA_SIZE(root);
416+
return BTRFS_LEAF_DATA_SIZE(root->fs_info);
417417
return btrfs_item_offset_nr(leaf, nr - 1);
418418
}
419419

@@ -515,24 +515,26 @@ btrfs_check_leaf(struct btrfs_root *root, struct btrfs_disk_key *parent_key,
515515
goto fail;
516516
}
517517
if (i == 0 && btrfs_item_end_nr(buf, i) !=
518-
BTRFS_LEAF_DATA_SIZE(root)) {
518+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
519519
ret = BTRFS_TREE_BLOCK_INVALID_OFFSETS;
520520
fprintf(stderr, "bad item end %u wanted %u\n",
521521
btrfs_item_end_nr(buf, i),
522-
(unsigned)BTRFS_LEAF_DATA_SIZE(root));
522+
(unsigned)BTRFS_LEAF_DATA_SIZE(root->fs_info));
523523
goto fail;
524524
}
525525
}
526526

527527
for (i = 0; i < nritems; i++) {
528-
if (btrfs_item_end_nr(buf, i) > BTRFS_LEAF_DATA_SIZE(root)) {
528+
if (btrfs_item_end_nr(buf, i) >
529+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
529530
btrfs_item_key(buf, &key, 0);
530531
btrfs_print_key(&key);
531532
fflush(stdout);
532533
ret = BTRFS_TREE_BLOCK_INVALID_OFFSETS;
533534
fprintf(stderr, "slot end outside of leaf %llu > %llu\n",
534535
(unsigned long long)btrfs_item_end_nr(buf, i),
535-
(unsigned long long)BTRFS_LEAF_DATA_SIZE(root));
536+
(unsigned long long)BTRFS_LEAF_DATA_SIZE(
537+
root->fs_info));
536538
goto fail;
537539
}
538540
}
@@ -1619,7 +1621,7 @@ static int leaf_space_used(struct extent_buffer *l, int start, int nr)
16191621
*/
16201622
int btrfs_leaf_free_space(struct btrfs_root *root, struct extent_buffer *leaf)
16211623
{
1622-
u32 nodesize = (root ? BTRFS_LEAF_DATA_SIZE(root) : leaf->len);
1624+
u32 nodesize = (root ? BTRFS_LEAF_DATA_SIZE(root->fs_info) : leaf->len);
16231625
int nritems = btrfs_header_nritems(leaf);
16241626
int ret;
16251627
ret = nodesize - leaf_space_used(leaf, 0, nritems);
@@ -1740,11 +1742,11 @@ static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root
17401742
memmove_extent_buffer(right,
17411743
btrfs_leaf_data(right) + data_end - push_space,
17421744
btrfs_leaf_data(right) + data_end,
1743-
BTRFS_LEAF_DATA_SIZE(root) - data_end);
1745+
BTRFS_LEAF_DATA_SIZE(root->fs_info) - data_end);
17441746

17451747
/* copy from the left data area */
17461748
copy_extent_buffer(right, left, btrfs_leaf_data(right) +
1747-
BTRFS_LEAF_DATA_SIZE(root) - push_space,
1749+
BTRFS_LEAF_DATA_SIZE(root->fs_info) - push_space,
17481750
btrfs_leaf_data(left) + leaf_data_end(root, left),
17491751
push_space);
17501752

@@ -1760,7 +1762,7 @@ static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root
17601762
/* update the item pointers */
17611763
right_nritems += push_items;
17621764
btrfs_set_header_nritems(right, right_nritems);
1763-
push_space = BTRFS_LEAF_DATA_SIZE(root);
1765+
push_space = BTRFS_LEAF_DATA_SIZE(root->fs_info);
17641766
for (i = 0; i < right_nritems; i++) {
17651767
item = btrfs_item_nr(i);
17661768
push_space -= btrfs_item_size(right, item);
@@ -1879,7 +1881,7 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
18791881
btrfs_item_nr_offset(0),
18801882
push_items * sizeof(struct btrfs_item));
18811883

1882-
push_space = BTRFS_LEAF_DATA_SIZE(root) -
1884+
push_space = BTRFS_LEAF_DATA_SIZE(root->fs_info) -
18831885
btrfs_item_offset_nr(right, push_items -1);
18841886

18851887
copy_extent_buffer(left, right, btrfs_leaf_data(left) +
@@ -1897,7 +1899,8 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
18971899
item = btrfs_item_nr(i);
18981900
ioff = btrfs_item_offset(left, item);
18991901
btrfs_set_item_offset(left, item,
1900-
ioff - (BTRFS_LEAF_DATA_SIZE(root) - old_left_item_size));
1902+
ioff - (BTRFS_LEAF_DATA_SIZE(root->fs_info) -
1903+
old_left_item_size));
19011904
}
19021905
btrfs_set_header_nritems(left, old_left_nritems + push_items);
19031906

@@ -1911,7 +1914,8 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
19111914
push_space = btrfs_item_offset_nr(right, push_items - 1) -
19121915
leaf_data_end(root, right);
19131916
memmove_extent_buffer(right, btrfs_leaf_data(right) +
1914-
BTRFS_LEAF_DATA_SIZE(root) - push_space,
1917+
BTRFS_LEAF_DATA_SIZE(root->fs_info) -
1918+
push_space,
19151919
btrfs_leaf_data(right) +
19161920
leaf_data_end(root, right), push_space);
19171921

@@ -1922,7 +1926,7 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
19221926
}
19231927
right_nritems -= push_items;
19241928
btrfs_set_header_nritems(right, right_nritems);
1925-
push_space = BTRFS_LEAF_DATA_SIZE(root);
1929+
push_space = BTRFS_LEAF_DATA_SIZE(root->fs_info);
19261930
for (i = 0; i < right_nritems; i++) {
19271931
item = btrfs_item_nr(i);
19281932
push_space = push_space - btrfs_item_size(right, item);
@@ -1979,11 +1983,12 @@ static noinline int copy_for_split(struct btrfs_trans_handle *trans,
19791983
nritems * sizeof(struct btrfs_item));
19801984

19811985
copy_extent_buffer(right, l,
1982-
btrfs_leaf_data(right) + BTRFS_LEAF_DATA_SIZE(root) -
1986+
btrfs_leaf_data(right) +
1987+
BTRFS_LEAF_DATA_SIZE(root->fs_info) -
19831988
data_copy_size, btrfs_leaf_data(l) +
19841989
leaf_data_end(root, l), data_copy_size);
19851990

1986-
rt_data_off = BTRFS_LEAF_DATA_SIZE(root) -
1991+
rt_data_off = BTRFS_LEAF_DATA_SIZE(root->fs_info) -
19871992
btrfs_item_end_nr(l, mid);
19881993

19891994
for (i = 0; i < nritems; i++) {
@@ -2044,7 +2049,7 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
20442049
l = path->nodes[0];
20452050
slot = path->slots[0];
20462051
if (extend && data_size + btrfs_item_size_nr(l, slot) +
2047-
sizeof(struct btrfs_item) > BTRFS_LEAF_DATA_SIZE(root))
2052+
sizeof(struct btrfs_item) > BTRFS_LEAF_DATA_SIZE(root->fs_info))
20482053
return -EOVERFLOW;
20492054

20502055
/* first try to make some room by pushing left and right */
@@ -2079,21 +2084,22 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
20792084
if (mid <= slot) {
20802085
if (nritems == 1 ||
20812086
leaf_space_used(l, mid, nritems - mid) + data_size >
2082-
BTRFS_LEAF_DATA_SIZE(root)) {
2087+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
20832088
if (slot >= nritems) {
20842089
split = 0;
20852090
} else {
20862091
mid = slot;
20872092
if (mid != nritems &&
20882093
leaf_space_used(l, mid, nritems - mid) +
2089-
data_size > BTRFS_LEAF_DATA_SIZE(root)) {
2094+
data_size >
2095+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
20902096
split = 2;
20912097
}
20922098
}
20932099
}
20942100
} else {
20952101
if (leaf_space_used(l, 0, mid) + data_size >
2096-
BTRFS_LEAF_DATA_SIZE(root)) {
2102+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
20972103
if (!extend && data_size && slot == 0) {
20982104
split = 0;
20992105
} else if ((extend || !data_size) && slot == 0) {
@@ -2102,7 +2108,8 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
21022108
mid = slot;
21032109
if (mid != nritems &&
21042110
leaf_space_used(l, mid, nritems - mid) +
2105-
data_size > BTRFS_LEAF_DATA_SIZE(root)) {
2111+
data_size >
2112+
BTRFS_LEAF_DATA_SIZE(root->fs_info)) {
21062113
split = 2 ;
21072114
}
21082115
}
@@ -2727,7 +2734,7 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
27272734
}
27282735

27292736
/* delete the leaf if it is mostly empty */
2730-
if (used < BTRFS_LEAF_DATA_SIZE(root) / 4) {
2737+
if (used < BTRFS_LEAF_DATA_SIZE(root->fs_info) / 4) {
27312738
/* push_leaf_left fixes the path.
27322739
* make sure the path still points to our leaf
27332740
* for possible call to del_ptr below

ctree.h

+6-4
Original file line numberDiff line numberDiff line change
@@ -360,11 +360,12 @@ struct btrfs_header {
360360
sizeof(struct btrfs_header)) / \
361361
sizeof(struct btrfs_key_ptr))
362362
#define __BTRFS_LEAF_DATA_SIZE(bs) ((bs) - sizeof(struct btrfs_header))
363-
#define BTRFS_LEAF_DATA_SIZE(r) (__BTRFS_LEAF_DATA_SIZE(r->fs_info->nodesize))
364-
#define BTRFS_MAX_INLINE_DATA_SIZE(r) (BTRFS_LEAF_DATA_SIZE(r) - \
363+
#define BTRFS_LEAF_DATA_SIZE(fs_info) \
364+
(__BTRFS_LEAF_DATA_SIZE(fs_info->nodesize))
365+
#define BTRFS_MAX_INLINE_DATA_SIZE(r) (BTRFS_LEAF_DATA_SIZE(r->fs_info) - \
365366
sizeof(struct btrfs_item) - \
366367
sizeof(struct btrfs_file_extent_item))
367-
#define BTRFS_MAX_XATTR_SIZE(r) (BTRFS_LEAF_DATA_SIZE(r) - \
368+
#define BTRFS_MAX_XATTR_SIZE(r) (BTRFS_LEAF_DATA_SIZE(r->fs_info) - \
368369
sizeof(struct btrfs_item) -\
369370
sizeof(struct btrfs_dir_item))
370371

@@ -599,7 +600,8 @@ struct btrfs_extent_item_v0 {
599600
__le32 refs;
600601
} __attribute__ ((__packed__));
601602

602-
#define BTRFS_MAX_EXTENT_ITEM_SIZE(r) ((BTRFS_LEAF_DATA_SIZE(r) >> 4) - \
603+
#define BTRFS_MAX_EXTENT_ITEM_SIZE(r) \
604+
((BTRFS_LEAF_DATA_SIZE(r->fs_info) >> 4) - \
603605
sizeof(struct btrfs_item))
604606
#define BTRFS_MAX_EXTENT_SIZE SZ_128M
605607

file-item.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#include "crc32c.h"
2828
#include "internal.h"
2929

30-
#define MAX_CSUM_ITEMS(r,size) ((((BTRFS_LEAF_DATA_SIZE(r) - \
30+
#define MAX_CSUM_ITEMS(r, size) ((((BTRFS_LEAF_DATA_SIZE(r->fs_info) - \
3131
sizeof(struct btrfs_item) * 2) / \
3232
size) - 1))
3333
int btrfs_insert_file_extent(struct btrfs_trans_handle *trans,

volumes.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -826,7 +826,7 @@ static int btrfs_device_avail_bytes(struct btrfs_trans_handle *trans,
826826
return ret;
827827
}
828828

829-
#define BTRFS_MAX_DEVS(r) ((BTRFS_LEAF_DATA_SIZE(r) \
829+
#define BTRFS_MAX_DEVS(r) ((BTRFS_LEAF_DATA_SIZE(r->fs_info) \
830830
- sizeof(struct btrfs_item) \
831831
- sizeof(struct btrfs_chunk)) \
832832
/ sizeof(struct btrfs_stripe) + 1)

0 commit comments

Comments
 (0)