]> Git Repo - J-linux.git/blob - fs/xfs/scrub/agb_bitmap.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / fs / xfs / scrub / agb_bitmap.h
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (C) 2018-2023 Oracle.  All Rights Reserved.
4  * Author: Darrick J. Wong <[email protected]>
5  */
6 #ifndef __XFS_SCRUB_AGB_BITMAP_H__
7 #define __XFS_SCRUB_AGB_BITMAP_H__
8
9 /* Bitmaps, but for type-checked for xfs_agblock_t */
10
11 struct xagb_bitmap {
12         struct xbitmap32        agbitmap;
13 };
14
15 static inline void xagb_bitmap_init(struct xagb_bitmap *bitmap)
16 {
17         xbitmap32_init(&bitmap->agbitmap);
18 }
19
20 static inline void xagb_bitmap_destroy(struct xagb_bitmap *bitmap)
21 {
22         xbitmap32_destroy(&bitmap->agbitmap);
23 }
24
25 static inline int xagb_bitmap_clear(struct xagb_bitmap *bitmap,
26                 xfs_agblock_t start, xfs_extlen_t len)
27 {
28         return xbitmap32_clear(&bitmap->agbitmap, start, len);
29 }
30 static inline int xagb_bitmap_set(struct xagb_bitmap *bitmap,
31                 xfs_agblock_t start, xfs_extlen_t len)
32 {
33         return xbitmap32_set(&bitmap->agbitmap, start, len);
34 }
35
36 static inline bool xagb_bitmap_test(struct xagb_bitmap *bitmap,
37                 xfs_agblock_t start, xfs_extlen_t *len)
38 {
39         return xbitmap32_test(&bitmap->agbitmap, start, len);
40 }
41
42 static inline int xagb_bitmap_disunion(struct xagb_bitmap *bitmap,
43                 struct xagb_bitmap *sub)
44 {
45         return xbitmap32_disunion(&bitmap->agbitmap, &sub->agbitmap);
46 }
47
48 static inline uint32_t xagb_bitmap_hweight(struct xagb_bitmap *bitmap)
49 {
50         return xbitmap32_hweight(&bitmap->agbitmap);
51 }
52 static inline bool xagb_bitmap_empty(struct xagb_bitmap *bitmap)
53 {
54         return xbitmap32_empty(&bitmap->agbitmap);
55 }
56
57 static inline int xagb_bitmap_walk(struct xagb_bitmap *bitmap,
58                 xbitmap32_walk_fn fn, void *priv)
59 {
60         return xbitmap32_walk(&bitmap->agbitmap, fn, priv);
61 }
62
63 int xagb_bitmap_set_btblocks(struct xagb_bitmap *bitmap,
64                 struct xfs_btree_cur *cur);
65 int xagb_bitmap_set_btcur_path(struct xagb_bitmap *bitmap,
66                 struct xfs_btree_cur *cur);
67
68 static inline uint32_t xagb_bitmap_count_set_regions(struct xagb_bitmap *b)
69 {
70         return xbitmap32_count_set_regions(&b->agbitmap);
71 }
72
73 #endif  /* __XFS_SCRUB_AGB_BITMAP_H__ */
This page took 0.030396 seconds and 4 git commands to generate.