Skip to content

Commit d57dd52

Browse files
committed
btrfs: uninline some static inline helpers from delayed-ref.h
The helpers are doing an initialization or release work, none of which is performance critical that it would require a static inline, so move them to the .c file. Signed-off-by: David Sterba <dsterba@suse.com>
1 parent e925671 commit d57dd52

2 files changed

Lines changed: 72 additions & 65 deletions

File tree

fs/btrfs/delayed-ref.c

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,6 +1004,52 @@ static void init_delayed_ref_common(struct btrfs_fs_info *fs_info,
10041004
INIT_LIST_HEAD(&ref->add_list);
10051005
}
10061006

1007+
void btrfs_init_generic_ref(struct btrfs_ref *generic_ref, int action, u64 bytenr,
1008+
u64 len, u64 parent, u64 owning_root)
1009+
{
1010+
generic_ref->action = action;
1011+
generic_ref->bytenr = bytenr;
1012+
generic_ref->len = len;
1013+
generic_ref->parent = parent;
1014+
generic_ref->owning_root = owning_root;
1015+
}
1016+
1017+
void btrfs_init_tree_ref(struct btrfs_ref *generic_ref, int level, u64 root,
1018+
u64 mod_root, bool skip_qgroup)
1019+
{
1020+
#ifdef CONFIG_BTRFS_FS_REF_VERIFY
1021+
/* If @real_root not set, use @root as fallback */
1022+
generic_ref->real_root = mod_root ?: root;
1023+
#endif
1024+
generic_ref->tree_ref.level = level;
1025+
generic_ref->tree_ref.ref_root = root;
1026+
generic_ref->type = BTRFS_REF_METADATA;
1027+
if (skip_qgroup || !(is_fstree(root) &&
1028+
(!mod_root || is_fstree(mod_root))))
1029+
generic_ref->skip_qgroup = true;
1030+
else
1031+
generic_ref->skip_qgroup = false;
1032+
1033+
}
1034+
1035+
void btrfs_init_data_ref(struct btrfs_ref *generic_ref, u64 ref_root, u64 ino,
1036+
u64 offset, u64 mod_root, bool skip_qgroup)
1037+
{
1038+
#ifdef CONFIG_BTRFS_FS_REF_VERIFY
1039+
/* If @real_root not set, use @root as fallback */
1040+
generic_ref->real_root = mod_root ?: ref_root;
1041+
#endif
1042+
generic_ref->data_ref.ref_root = ref_root;
1043+
generic_ref->data_ref.ino = ino;
1044+
generic_ref->data_ref.offset = offset;
1045+
generic_ref->type = BTRFS_REF_DATA;
1046+
if (skip_qgroup || !(is_fstree(ref_root) &&
1047+
(!mod_root || is_fstree(mod_root))))
1048+
generic_ref->skip_qgroup = true;
1049+
else
1050+
generic_ref->skip_qgroup = false;
1051+
}
1052+
10071053
/*
10081054
* add a delayed tree ref. This does all of the accounting required
10091055
* to make sure the delayed ref is eventually processed before this
@@ -1220,6 +1266,25 @@ int btrfs_add_delayed_extent_op(struct btrfs_trans_handle *trans,
12201266
return 0;
12211267
}
12221268

1269+
void btrfs_put_delayed_ref(struct btrfs_delayed_ref_node *ref)
1270+
{
1271+
if (refcount_dec_and_test(&ref->refs)) {
1272+
WARN_ON(!RB_EMPTY_NODE(&ref->ref_node));
1273+
switch (ref->type) {
1274+
case BTRFS_TREE_BLOCK_REF_KEY:
1275+
case BTRFS_SHARED_BLOCK_REF_KEY:
1276+
kmem_cache_free(btrfs_delayed_tree_ref_cachep, ref);
1277+
break;
1278+
case BTRFS_EXTENT_DATA_REF_KEY:
1279+
case BTRFS_SHARED_DATA_REF_KEY:
1280+
kmem_cache_free(btrfs_delayed_data_ref_cachep, ref);
1281+
break;
1282+
default:
1283+
BUG();
1284+
}
1285+
}
1286+
}
1287+
12231288
/*
12241289
* This does a simple search for the head node for a given extent. Returns the
12251290
* head node if found, or NULL if not.

fs/btrfs/delayed-ref.h

Lines changed: 7 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -318,53 +318,12 @@ static inline u64 btrfs_calc_delayed_ref_csum_bytes(const struct btrfs_fs_info *
318318
return btrfs_calc_metadata_size(fs_info, num_csum_items);
319319
}
320320

321-
static inline void btrfs_init_generic_ref(struct btrfs_ref *generic_ref,
322-
int action, u64 bytenr, u64 len,
323-
u64 parent, u64 owning_root)
324-
{
325-
generic_ref->action = action;
326-
generic_ref->bytenr = bytenr;
327-
generic_ref->len = len;
328-
generic_ref->parent = parent;
329-
generic_ref->owning_root = owning_root;
330-
}
331-
332-
static inline void btrfs_init_tree_ref(struct btrfs_ref *generic_ref, int level,
333-
u64 root, u64 mod_root, bool skip_qgroup)
334-
{
335-
#ifdef CONFIG_BTRFS_FS_REF_VERIFY
336-
/* If @real_root not set, use @root as fallback */
337-
generic_ref->real_root = mod_root ?: root;
338-
#endif
339-
generic_ref->tree_ref.level = level;
340-
generic_ref->tree_ref.ref_root = root;
341-
generic_ref->type = BTRFS_REF_METADATA;
342-
if (skip_qgroup || !(is_fstree(root) &&
343-
(!mod_root || is_fstree(mod_root))))
344-
generic_ref->skip_qgroup = true;
345-
else
346-
generic_ref->skip_qgroup = false;
347-
348-
}
349-
350-
static inline void btrfs_init_data_ref(struct btrfs_ref *generic_ref,
351-
u64 ref_root, u64 ino, u64 offset, u64 mod_root,
352-
bool skip_qgroup)
353-
{
354-
#ifdef CONFIG_BTRFS_FS_REF_VERIFY
355-
/* If @real_root not set, use @root as fallback */
356-
generic_ref->real_root = mod_root ?: ref_root;
357-
#endif
358-
generic_ref->data_ref.ref_root = ref_root;
359-
generic_ref->data_ref.ino = ino;
360-
generic_ref->data_ref.offset = offset;
361-
generic_ref->type = BTRFS_REF_DATA;
362-
if (skip_qgroup || !(is_fstree(ref_root) &&
363-
(!mod_root || is_fstree(mod_root))))
364-
generic_ref->skip_qgroup = true;
365-
else
366-
generic_ref->skip_qgroup = false;
367-
}
321+
void btrfs_init_generic_ref(struct btrfs_ref *generic_ref, int action, u64 bytenr,
322+
u64 len, u64 parent, u64 owning_root);
323+
void btrfs_init_tree_ref(struct btrfs_ref *generic_ref, int level, u64 root,
324+
u64 mod_root, bool skip_qgroup);
325+
void btrfs_init_data_ref(struct btrfs_ref *generic_ref, u64 ref_root, u64 ino,
326+
u64 offset, u64 mod_root, bool skip_qgroup);
368327

369328
static inline struct btrfs_delayed_extent_op *
370329
btrfs_alloc_delayed_extent_op(void)
@@ -379,24 +338,7 @@ btrfs_free_delayed_extent_op(struct btrfs_delayed_extent_op *op)
379338
kmem_cache_free(btrfs_delayed_extent_op_cachep, op);
380339
}
381340

382-
static inline void btrfs_put_delayed_ref(struct btrfs_delayed_ref_node *ref)
383-
{
384-
if (refcount_dec_and_test(&ref->refs)) {
385-
WARN_ON(!RB_EMPTY_NODE(&ref->ref_node));
386-
switch (ref->type) {
387-
case BTRFS_TREE_BLOCK_REF_KEY:
388-
case BTRFS_SHARED_BLOCK_REF_KEY:
389-
kmem_cache_free(btrfs_delayed_tree_ref_cachep, ref);
390-
break;
391-
case BTRFS_EXTENT_DATA_REF_KEY:
392-
case BTRFS_SHARED_DATA_REF_KEY:
393-
kmem_cache_free(btrfs_delayed_data_ref_cachep, ref);
394-
break;
395-
default:
396-
BUG();
397-
}
398-
}
399-
}
341+
void btrfs_put_delayed_ref(struct btrfs_delayed_ref_node *ref);
400342

401343
static inline u64 btrfs_ref_head_to_space_flags(
402344
struct btrfs_delayed_ref_head *head_ref)

0 commit comments

Comments
 (0)