Lines Matching refs:bitmap
15 #include "scrub/bitmap.h"
58 /* Iterate each interval of a bitmap. Do not change the bitmap. */
59 #define for_each_xbitmap_extent(bn, bitmap) \
60 for ((bn) = rb_entry_safe(rb_first(&(bitmap)->xb_root.rb_root), \
66 /* Clear a range of this bitmap. */
69 struct xbitmap *bitmap,
77 while ((bn = xbitmap_tree_iter_first(&bitmap->xb_root, start, last))) {
82 xbitmap_tree_remove(bn, &bitmap->xb_root);
84 xbitmap_tree_insert(bn, &bitmap->xb_root);
93 xbitmap_tree_insert(new_bn, &bitmap->xb_root);
96 xbitmap_tree_remove(bn, &bitmap->xb_root);
98 xbitmap_tree_insert(bn, &bitmap->xb_root);
101 xbitmap_tree_remove(bn, &bitmap->xb_root);
103 xbitmap_tree_insert(bn, &bitmap->xb_root);
107 xbitmap_tree_remove(bn, &bitmap->xb_root);
115 /* Set a range of this bitmap. */
118 struct xbitmap *bitmap,
128 left = xbitmap_tree_iter_first(&bitmap->xb_root, start, last);
133 error = xbitmap_clear(bitmap, start, len);
138 left = xbitmap_tree_iter_first(&bitmap->xb_root, start - 1, start - 1);
142 right = xbitmap_tree_iter_first(&bitmap->xb_root, last + 1, last + 1);
147 xbitmap_tree_remove(left, &bitmap->xb_root);
148 xbitmap_tree_remove(right, &bitmap->xb_root);
150 xbitmap_tree_insert(left, &bitmap->xb_root);
154 xbitmap_tree_remove(left, &bitmap->xb_root);
156 xbitmap_tree_insert(left, &bitmap->xb_root);
159 xbitmap_tree_remove(right, &bitmap->xb_root);
161 xbitmap_tree_insert(right, &bitmap->xb_root);
169 xbitmap_tree_insert(left, &bitmap->xb_root);
175 /* Free everything related to this bitmap. */
178 struct xbitmap *bitmap)
182 while ((bn = xbitmap_tree_iter_first(&bitmap->xb_root, 0, -1ULL))) {
183 xbitmap_tree_remove(bn, &bitmap->xb_root);
188 /* Set up a per-AG block bitmap. */
191 struct xbitmap *bitmap)
193 bitmap->xb_root = RB_ROOT_CACHED;
197 * Remove all the blocks mentioned in @sub from the extents in @bitmap.
200 * for a given owner to generate @bitmap; and iterate all the blocks of the
203 * mentioned in sub from all the extents linked in @bitmap, which leaves
204 * @bitmap as the list of blocks that are not accounted for, which we assume
206 * @bitmap can be reaped.
208 * This is the logical equivalent of bitmap &= ~sub.
212 struct xbitmap *bitmap,
218 if (xbitmap_empty(bitmap) || xbitmap_empty(sub))
222 error = xbitmap_clear(bitmap, bn->bn_start,
266 /* Mark a btree block to the agblock bitmap. */
273 struct xagb_bitmap *bitmap = priv;
285 return xagb_bitmap_set(bitmap, agbno, 1);
288 /* Mark all (per-AG) btree blocks in the agblock bitmap. */
291 struct xagb_bitmap *bitmap,
295 XFS_BTREE_VISIT_ALL, bitmap);
305 struct xagb_bitmap *bitmap,
312 error = xagb_bitmap_visit_btblock(cur, i, bitmap);
320 /* How many bits are set in this bitmap? */
323 struct xbitmap *bitmap)
328 for_each_xbitmap_extent(bn, bitmap)
334 /* Call a function for every run of set bits in this bitmap. */
337 struct xbitmap *bitmap,
344 for_each_xbitmap_extent(bn, bitmap) {
353 /* Does this bitmap have no bits set at all? */
356 struct xbitmap *bitmap)
358 return bitmap->xb_root.rb_root.rb_node == NULL;
364 struct xbitmap *bitmap,
371 bn = xbitmap_tree_iter_first(&bitmap->xb_root, start, last);