@@ -413,7 +413,7 @@ static inline unsigned int leaf_data_end(struct btrfs_root *root,
413
413
{
414
414
u32 nr = btrfs_header_nritems (leaf );
415
415
if (nr == 0 )
416
- return BTRFS_LEAF_DATA_SIZE (root );
416
+ return BTRFS_LEAF_DATA_SIZE (root -> fs_info );
417
417
return btrfs_item_offset_nr (leaf , nr - 1 );
418
418
}
419
419
@@ -515,24 +515,26 @@ btrfs_check_leaf(struct btrfs_root *root, struct btrfs_disk_key *parent_key,
515
515
goto fail ;
516
516
}
517
517
if (i == 0 && btrfs_item_end_nr (buf , i ) !=
518
- BTRFS_LEAF_DATA_SIZE (root )) {
518
+ BTRFS_LEAF_DATA_SIZE (root -> fs_info )) {
519
519
ret = BTRFS_TREE_BLOCK_INVALID_OFFSETS ;
520
520
fprintf (stderr , "bad item end %u wanted %u\n" ,
521
521
btrfs_item_end_nr (buf , i ),
522
- (unsigned )BTRFS_LEAF_DATA_SIZE (root ));
522
+ (unsigned )BTRFS_LEAF_DATA_SIZE (root -> fs_info ));
523
523
goto fail ;
524
524
}
525
525
}
526
526
527
527
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 )) {
529
530
btrfs_item_key (buf , & key , 0 );
530
531
btrfs_print_key (& key );
531
532
fflush (stdout );
532
533
ret = BTRFS_TREE_BLOCK_INVALID_OFFSETS ;
533
534
fprintf (stderr , "slot end outside of leaf %llu > %llu\n" ,
534
535
(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 ));
536
538
goto fail ;
537
539
}
538
540
}
@@ -1619,7 +1621,7 @@ static int leaf_space_used(struct extent_buffer *l, int start, int nr)
1619
1621
*/
1620
1622
int btrfs_leaf_free_space (struct btrfs_root * root , struct extent_buffer * leaf )
1621
1623
{
1622
- u32 nodesize = (root ? BTRFS_LEAF_DATA_SIZE (root ) : leaf -> len );
1624
+ u32 nodesize = (root ? BTRFS_LEAF_DATA_SIZE (root -> fs_info ) : leaf -> len );
1623
1625
int nritems = btrfs_header_nritems (leaf );
1624
1626
int ret ;
1625
1627
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
1740
1742
memmove_extent_buffer (right ,
1741
1743
btrfs_leaf_data (right ) + data_end - push_space ,
1742
1744
btrfs_leaf_data (right ) + data_end ,
1743
- BTRFS_LEAF_DATA_SIZE (root ) - data_end );
1745
+ BTRFS_LEAF_DATA_SIZE (root -> fs_info ) - data_end );
1744
1746
1745
1747
/* copy from the left data area */
1746
1748
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 ,
1748
1750
btrfs_leaf_data (left ) + leaf_data_end (root , left ),
1749
1751
push_space );
1750
1752
@@ -1760,7 +1762,7 @@ static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root
1760
1762
/* update the item pointers */
1761
1763
right_nritems += push_items ;
1762
1764
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 );
1764
1766
for (i = 0 ; i < right_nritems ; i ++ ) {
1765
1767
item = btrfs_item_nr (i );
1766
1768
push_space -= btrfs_item_size (right , item );
@@ -1879,7 +1881,7 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
1879
1881
btrfs_item_nr_offset (0 ),
1880
1882
push_items * sizeof (struct btrfs_item ));
1881
1883
1882
- push_space = BTRFS_LEAF_DATA_SIZE (root ) -
1884
+ push_space = BTRFS_LEAF_DATA_SIZE (root -> fs_info ) -
1883
1885
btrfs_item_offset_nr (right , push_items - 1 );
1884
1886
1885
1887
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
1897
1899
item = btrfs_item_nr (i );
1898
1900
ioff = btrfs_item_offset (left , item );
1899
1901
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 ));
1901
1904
}
1902
1905
btrfs_set_header_nritems (left , old_left_nritems + push_items );
1903
1906
@@ -1911,7 +1914,8 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
1911
1914
push_space = btrfs_item_offset_nr (right , push_items - 1 ) -
1912
1915
leaf_data_end (root , right );
1913
1916
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 ,
1915
1919
btrfs_leaf_data (right ) +
1916
1920
leaf_data_end (root , right ), push_space );
1917
1921
@@ -1922,7 +1926,7 @@ static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
1922
1926
}
1923
1927
right_nritems -= push_items ;
1924
1928
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 );
1926
1930
for (i = 0 ; i < right_nritems ; i ++ ) {
1927
1931
item = btrfs_item_nr (i );
1928
1932
push_space = push_space - btrfs_item_size (right , item );
@@ -1979,11 +1983,12 @@ static noinline int copy_for_split(struct btrfs_trans_handle *trans,
1979
1983
nritems * sizeof (struct btrfs_item ));
1980
1984
1981
1985
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 ) -
1983
1988
data_copy_size , btrfs_leaf_data (l ) +
1984
1989
leaf_data_end (root , l ), data_copy_size );
1985
1990
1986
- rt_data_off = BTRFS_LEAF_DATA_SIZE (root ) -
1991
+ rt_data_off = BTRFS_LEAF_DATA_SIZE (root -> fs_info ) -
1987
1992
btrfs_item_end_nr (l , mid );
1988
1993
1989
1994
for (i = 0 ; i < nritems ; i ++ ) {
@@ -2044,7 +2049,7 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
2044
2049
l = path -> nodes [0 ];
2045
2050
slot = path -> slots [0 ];
2046
2051
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 ))
2048
2053
return - EOVERFLOW ;
2049
2054
2050
2055
/* 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,
2079
2084
if (mid <= slot ) {
2080
2085
if (nritems == 1 ||
2081
2086
leaf_space_used (l , mid , nritems - mid ) + data_size >
2082
- BTRFS_LEAF_DATA_SIZE (root )) {
2087
+ BTRFS_LEAF_DATA_SIZE (root -> fs_info )) {
2083
2088
if (slot >= nritems ) {
2084
2089
split = 0 ;
2085
2090
} else {
2086
2091
mid = slot ;
2087
2092
if (mid != nritems &&
2088
2093
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 )) {
2090
2096
split = 2 ;
2091
2097
}
2092
2098
}
2093
2099
}
2094
2100
} else {
2095
2101
if (leaf_space_used (l , 0 , mid ) + data_size >
2096
- BTRFS_LEAF_DATA_SIZE (root )) {
2102
+ BTRFS_LEAF_DATA_SIZE (root -> fs_info )) {
2097
2103
if (!extend && data_size && slot == 0 ) {
2098
2104
split = 0 ;
2099
2105
} else if ((extend || !data_size ) && slot == 0 ) {
@@ -2102,7 +2108,8 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
2102
2108
mid = slot ;
2103
2109
if (mid != nritems &&
2104
2110
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 )) {
2106
2113
split = 2 ;
2107
2114
}
2108
2115
}
@@ -2727,7 +2734,7 @@ int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
2727
2734
}
2728
2735
2729
2736
/* 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 ) {
2731
2738
/* push_leaf_left fixes the path.
2732
2739
* make sure the path still points to our leaf
2733
2740
* for possible call to del_ptr below
0 commit comments