GNU Linux-libre 6.9-gnu
[releases.git] / fs / btrfs / ref-verify.h
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