diff options
author | Joe Thornber <ejt@redhat.com> | 2016-09-22 17:44:41 +0300 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2017-02-16 21:12:48 +0300 |
commit | 2151249eaabb48151cff6364adb4054b3497d62d (patch) | |
tree | 26ae3dba9537c44fbf6436f31015f1fd33b68098 /drivers/md/persistent-data/dm-bitset.h | |
parent | 48551054fc256285289f6d03abd50cb74fb71819 (diff) | |
download | linux-2151249eaabb48151cff6364adb4054b3497d62d.tar.xz |
dm bitset: add dm_bitset_new()
A more efficient way of creating a populated bitset.
Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/persistent-data/dm-bitset.h')
-rw-r--r-- | drivers/md/persistent-data/dm-bitset.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/md/persistent-data/dm-bitset.h b/drivers/md/persistent-data/dm-bitset.h index 017c0d42cdbf..a08636898a43 100644 --- a/drivers/md/persistent-data/dm-bitset.h +++ b/drivers/md/persistent-data/dm-bitset.h @@ -93,6 +93,22 @@ void dm_disk_bitset_init(struct dm_transaction_manager *tm, int dm_bitset_empty(struct dm_disk_bitset *info, dm_block_t *new_root); /* + * Creates a new bitset populated with values provided by a callback + * function. This is more efficient than creating an empty bitset, + * resizing, and then setting values since that process incurs a lot of + * copying. + * + * info - describes the array + * root - the root block of the array on disk + * size - the number of entries in the array + * fn - the callback + * context - passed to the callback + */ +typedef int (*bit_value_fn)(uint32_t index, bool *value, void *context); +int dm_bitset_new(struct dm_disk_bitset *info, dm_block_t *root, + uint32_t size, bit_value_fn fn, void *context); + +/* * Resize the bitset. * * info - describes the bitset |