xref: /linux/fs/btrfs/ref-verify.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 2014 Facebook.  All rights reserved.
4  */
5 
6 #ifndef BTRFS_REF_VERIFY_H
7 #define BTRFS_REF_VERIFY_H
8 
9 #include <linux/types.h>
10 #include <linux/rbtree_types.h>
11 
12 struct btrfs_fs_info;
13 struct btrfs_ref;
14 
15 #ifdef CONFIG_BTRFS_FS_REF_VERIFY
16 
17 #include <linux/spinlock.h>
18 
19 int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info);
20 void btrfs_free_ref_cache(struct btrfs_fs_info *fs_info);
21 int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
22 		       struct btrfs_ref *generic_ref);
23 void btrfs_free_ref_tree_range(struct btrfs_fs_info *fs_info, u64 start,
24 			       u64 len);
25 
26 static inline void btrfs_init_ref_verify(struct btrfs_fs_info *fs_info)
27 {
28 	spin_lock_init(&fs_info->ref_verify_lock);
29 	fs_info->block_tree = RB_ROOT;
30 }
31 #else
32 static inline int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info)
33 {
34 	return 0;
35 }
36 
37 static inline void btrfs_free_ref_cache(struct btrfs_fs_info *fs_info)
38 {
39 }
40 
41 static inline int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
42 		       struct btrfs_ref *generic_ref)
43 {
44 	return 0;
45 }
46 
47 static inline void btrfs_free_ref_tree_range(struct btrfs_fs_info *fs_info,
48 					     u64 start, u64 len)
49 {
50 }
51 
52 static inline void btrfs_init_ref_verify(struct btrfs_fs_info *fs_info)
53 {
54 }
55 
56 #endif /* CONFIG_BTRFS_FS_REF_VERIFY */
57 
58 #endif
59