drm/panthor: Don't declare a queue blocked if deferred operations are pending
[drm/drm-misc.git] / fs / xfs / scrub / agb_bitmap.h
blobe488e1f4f63d3a15923a3be46f2ceb9f3b36dc50
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3 * Copyright (C) 2018-2023 Oracle. All Rights Reserved.
4 * Author: Darrick J. Wong <djwong@kernel.org>
5 */
6 #ifndef __XFS_SCRUB_AGB_BITMAP_H__
7 #define __XFS_SCRUB_AGB_BITMAP_H__
9 /* Bitmaps, but for type-checked for xfs_agblock_t */
11 struct xagb_bitmap {
12 struct xbitmap32 agbitmap;
15 static inline void xagb_bitmap_init(struct xagb_bitmap *bitmap)
17 xbitmap32_init(&bitmap->agbitmap);
20 static inline void xagb_bitmap_destroy(struct xagb_bitmap *bitmap)
22 xbitmap32_destroy(&bitmap->agbitmap);
25 static inline int xagb_bitmap_clear(struct xagb_bitmap *bitmap,
26 xfs_agblock_t start, xfs_extlen_t len)
28 return xbitmap32_clear(&bitmap->agbitmap, start, len);
30 static inline int xagb_bitmap_set(struct xagb_bitmap *bitmap,
31 xfs_agblock_t start, xfs_extlen_t len)
33 return xbitmap32_set(&bitmap->agbitmap, start, len);
36 static inline bool xagb_bitmap_test(struct xagb_bitmap *bitmap,
37 xfs_agblock_t start, xfs_extlen_t *len)
39 return xbitmap32_test(&bitmap->agbitmap, start, len);
42 static inline int xagb_bitmap_disunion(struct xagb_bitmap *bitmap,
43 struct xagb_bitmap *sub)
45 return xbitmap32_disunion(&bitmap->agbitmap, &sub->agbitmap);
48 static inline uint32_t xagb_bitmap_hweight(struct xagb_bitmap *bitmap)
50 return xbitmap32_hweight(&bitmap->agbitmap);
52 static inline bool xagb_bitmap_empty(struct xagb_bitmap *bitmap)
54 return xbitmap32_empty(&bitmap->agbitmap);
57 static inline int xagb_bitmap_walk(struct xagb_bitmap *bitmap,
58 xbitmap32_walk_fn fn, void *priv)
60 return xbitmap32_walk(&bitmap->agbitmap, fn, priv);
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);
68 static inline uint32_t xagb_bitmap_count_set_regions(struct xagb_bitmap *b)
70 return xbitmap32_count_set_regions(&b->agbitmap);
73 #endif /* __XFS_SCRUB_AGB_BITMAP_H__ */