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
12struct btrfs_fs_info;
13struct btrfs_ref;
14
15#ifdef CONFIG_BTRFS_FS_REF_VERIFY
16
17#include <linux/spinlock.h>
18
19int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info);
20void btrfs_free_ref_cache(struct btrfs_fs_info *fs_info);
21int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
22		       struct btrfs_ref *generic_ref);
23void btrfs_free_ref_tree_range(struct btrfs_fs_info *fs_info, u64 start,
24			       u64 len);
25
26static 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
32static inline int btrfs_build_ref_tree(struct btrfs_fs_info *fs_info)
33{
34	return 0;
35}
36
37static inline void btrfs_free_ref_cache(struct btrfs_fs_info *fs_info)
38{
39}
40
41static inline int btrfs_ref_tree_mod(struct btrfs_fs_info *fs_info,
42		       struct btrfs_ref *generic_ref)
43{
44	return 0;
45}
46
47static inline void btrfs_free_ref_tree_range(struct btrfs_fs_info *fs_info,
48					     u64 start, u64 len)
49{
50}
51
52static 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