btrfs: eliminate total_size parameter from setup_items_for_insert
The value of this argument can be derived from the total_data as it's simply the value of the data size + size of btrfs_items being touched. Move the parameter calculation inside the function. This results in a simpler interface and also a minor size reduction: ./scripts/bloat-o-meter ctree.original fs/btrfs/ctree.o add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-34 (-34) Function old new delta btrfs_duplicate_item 260 259 -1 setup_items_for_insert 1200 1190 -10 btrfs_insert_empty_items 177 154 -23 Reviewed-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
fc0716c2f6
commit
3dc9dc8969
@@ -4580,9 +4580,7 @@ int btrfs_duplicate_item(struct btrfs_trans_handle *trans,
|
|||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
path->slots[0]++;
|
path->slots[0]++;
|
||||||
setup_items_for_insert(root, path, new_key, &item_size,
|
setup_items_for_insert(root, path, new_key, &item_size, item_size, 1);
|
||||||
item_size, item_size +
|
|
||||||
sizeof(struct btrfs_item), 1);
|
|
||||||
leaf = path->nodes[0];
|
leaf = path->nodes[0];
|
||||||
memcpy_extent_buffer(leaf,
|
memcpy_extent_buffer(leaf,
|
||||||
btrfs_item_ptr_offset(leaf, path->slots[0]),
|
btrfs_item_ptr_offset(leaf, path->slots[0]),
|
||||||
@@ -4762,7 +4760,7 @@ void btrfs_extend_item(struct btrfs_path *path, u32 data_size)
|
|||||||
*/
|
*/
|
||||||
void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
|
void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
|
||||||
const struct btrfs_key *cpu_key, u32 *data_size,
|
const struct btrfs_key *cpu_key, u32 *data_size,
|
||||||
u32 total_data, u32 total_size, int nr)
|
u32 total_data, int nr)
|
||||||
{
|
{
|
||||||
struct btrfs_fs_info *fs_info = root->fs_info;
|
struct btrfs_fs_info *fs_info = root->fs_info;
|
||||||
struct btrfs_item *item;
|
struct btrfs_item *item;
|
||||||
@@ -4773,6 +4771,7 @@ void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
|
|||||||
struct extent_buffer *leaf;
|
struct extent_buffer *leaf;
|
||||||
int slot;
|
int slot;
|
||||||
struct btrfs_map_token token;
|
struct btrfs_map_token token;
|
||||||
|
const u32 total_size = total_data + (nr * sizeof(struct btrfs_item));
|
||||||
|
|
||||||
if (path->slots[0] == 0) {
|
if (path->slots[0] == 0) {
|
||||||
btrfs_cpu_key_to_disk(&disk_key, cpu_key);
|
btrfs_cpu_key_to_disk(&disk_key, cpu_key);
|
||||||
@@ -4875,8 +4874,7 @@ int btrfs_insert_empty_items(struct btrfs_trans_handle *trans,
|
|||||||
slot = path->slots[0];
|
slot = path->slots[0];
|
||||||
BUG_ON(slot < 0);
|
BUG_ON(slot < 0);
|
||||||
|
|
||||||
setup_items_for_insert(root, path, cpu_key, data_size,
|
setup_items_for_insert(root, path, cpu_key, data_size, total_data, nr);
|
||||||
total_data, total_size, nr);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2744,7 +2744,7 @@ static inline int btrfs_del_item(struct btrfs_trans_handle *trans,
|
|||||||
|
|
||||||
void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
|
void setup_items_for_insert(struct btrfs_root *root, struct btrfs_path *path,
|
||||||
const struct btrfs_key *cpu_key, u32 *data_size,
|
const struct btrfs_key *cpu_key, u32 *data_size,
|
||||||
u32 total_data, u32 total_size, int nr);
|
u32 total_data, int nr);
|
||||||
int btrfs_insert_item(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
int btrfs_insert_item(struct btrfs_trans_handle *trans, struct btrfs_root *root,
|
||||||
const struct btrfs_key *key, void *data, u32 data_size);
|
const struct btrfs_key *key, void *data, u32 data_size);
|
||||||
int btrfs_insert_empty_items(struct btrfs_trans_handle *trans,
|
int btrfs_insert_empty_items(struct btrfs_trans_handle *trans,
|
||||||
|
|||||||
@@ -768,8 +768,8 @@ static int btrfs_batch_insert_items(struct btrfs_root *root,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* insert the keys of the items */
|
/* insert the keys of the items */
|
||||||
setup_items_for_insert(root, path, keys, data_size,
|
setup_items_for_insert(root, path, keys, data_size, total_data_size,
|
||||||
total_data_size, total_size, nitems);
|
nitems);
|
||||||
|
|
||||||
/* insert the dir index items */
|
/* insert the dir index items */
|
||||||
slot = path->slots[0];
|
slot = path->slots[0];
|
||||||
|
|||||||
@@ -1057,10 +1057,7 @@ delete_extent_item:
|
|||||||
if (btrfs_comp_cpu_keys(&key, &slot_key) > 0)
|
if (btrfs_comp_cpu_keys(&key, &slot_key) > 0)
|
||||||
path->slots[0]++;
|
path->slots[0]++;
|
||||||
}
|
}
|
||||||
setup_items_for_insert(root, path, &key,
|
setup_items_for_insert(root, path, &key, &extent_item_size,
|
||||||
&extent_item_size,
|
|
||||||
extent_item_size,
|
|
||||||
sizeof(struct btrfs_item) +
|
|
||||||
extent_item_size, 1);
|
extent_item_size, 1);
|
||||||
*key_inserted = 1;
|
*key_inserted = 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -60,8 +60,7 @@ static int test_btrfs_split_item(u32 sectorsize, u32 nodesize)
|
|||||||
key.type = BTRFS_EXTENT_CSUM_KEY;
|
key.type = BTRFS_EXTENT_CSUM_KEY;
|
||||||
key.offset = 0;
|
key.offset = 0;
|
||||||
|
|
||||||
setup_items_for_insert(root, path, &key, &value_len, value_len,
|
setup_items_for_insert(root, path, &key, &value_len, value_len, 1);
|
||||||
value_len + sizeof(struct btrfs_item), 1);
|
|
||||||
item = btrfs_item_nr(0);
|
item = btrfs_item_nr(0);
|
||||||
write_extent_buffer(eb, value, btrfs_item_ptr_offset(eb, 0),
|
write_extent_buffer(eb, value, btrfs_item_ptr_offset(eb, 0),
|
||||||
value_len);
|
value_len);
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ static void insert_extent(struct btrfs_root *root, u64 start, u64 len,
|
|||||||
key.type = BTRFS_EXTENT_DATA_KEY;
|
key.type = BTRFS_EXTENT_DATA_KEY;
|
||||||
key.offset = start;
|
key.offset = start;
|
||||||
|
|
||||||
setup_items_for_insert(root, &path, &key, &value_len, value_len,
|
setup_items_for_insert(root, &path, &key, &value_len, value_len, 1);
|
||||||
value_len + sizeof(struct btrfs_item), 1);
|
|
||||||
fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
|
fi = btrfs_item_ptr(leaf, slot, struct btrfs_file_extent_item);
|
||||||
btrfs_set_file_extent_generation(leaf, fi, 1);
|
btrfs_set_file_extent_generation(leaf, fi, 1);
|
||||||
btrfs_set_file_extent_type(leaf, fi, type);
|
btrfs_set_file_extent_type(leaf, fi, type);
|
||||||
@@ -64,8 +63,7 @@ static void insert_inode_item_key(struct btrfs_root *root)
|
|||||||
key.type = BTRFS_INODE_ITEM_KEY;
|
key.type = BTRFS_INODE_ITEM_KEY;
|
||||||
key.offset = 0;
|
key.offset = 0;
|
||||||
|
|
||||||
setup_items_for_insert(root, &path, &key, &value_len, value_len,
|
setup_items_for_insert(root, &path, &key, &value_len, value_len, 1);
|
||||||
value_len + sizeof(struct btrfs_item), 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user