2018-07-30 08:37:09 +03:00
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright ( C ) 2018 Oracle . All Rights Reserved .
* Author : Darrick J . Wong < darrick . wong @ oracle . com >
*/
# ifndef __XFS_SCRUB_BITMAP_H__
# define __XFS_SCRUB_BITMAP_H__
2020-03-17 03:13:05 +03:00
struct xbitmap_range {
2018-07-30 08:37:09 +03:00
struct list_head list ;
2018-07-30 21:18:13 +03:00
uint64_t start ;
uint64_t len ;
2018-07-30 08:37:09 +03:00
} ;
2020-03-17 03:13:05 +03:00
struct xbitmap {
2018-07-30 08:37:09 +03:00
struct list_head list ;
} ;
2020-03-17 03:13:05 +03:00
void xbitmap_init ( struct xbitmap * bitmap ) ;
void xbitmap_destroy ( struct xbitmap * bitmap ) ;
2018-07-30 08:37:09 +03:00
2020-03-17 03:13:05 +03:00
# define for_each_xbitmap_extent(bex, n, bitmap) \
2018-07-30 21:18:13 +03:00
list_for_each_entry_safe ( ( bex ) , ( n ) , & ( bitmap ) - > list , list )
2020-03-17 03:13:05 +03:00
# define for_each_xbitmap_block(b, bex, n, bitmap) \
2018-07-30 21:18:13 +03:00
list_for_each_entry_safe ( ( bex ) , ( n ) , & ( bitmap ) - > list , list ) \
2020-03-17 03:13:05 +03:00
for ( ( b ) = ( bex ) - > start ; ( b ) < ( bex ) - > start + ( bex ) - > len ; ( b ) + + )
2018-07-30 21:18:13 +03:00
2020-03-17 03:13:05 +03:00
int xbitmap_set ( struct xbitmap * bitmap , uint64_t start , uint64_t len ) ;
int xbitmap_disunion ( struct xbitmap * bitmap , struct xbitmap * sub ) ;
int xbitmap_set_btcur_path ( struct xbitmap * bitmap ,
2018-08-10 08:43:02 +03:00
struct xfs_btree_cur * cur ) ;
2020-03-17 03:13:05 +03:00
int xbitmap_set_btblocks ( struct xbitmap * bitmap ,
2018-08-10 08:43:02 +03:00
struct xfs_btree_cur * cur ) ;
2020-03-17 03:16:35 +03:00
uint64_t xbitmap_hweight ( struct xbitmap * bitmap ) ;
2018-07-30 08:37:09 +03:00
# endif /* __XFS_SCRUB_BITMAP_H__ */