mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 07:13:54 -06:00
block/dirty-bitmap: introduce bdrv_dirty_bitmap_status()
Add a convenient function similar with bdrv_block_status() to get status of dirty bitmap. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> Reviewed-by: Hanna Reitz <hreitz@redhat.com> Message-Id: <20220303194349.2304213-9-vsementsov@virtuozzo.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
This commit is contained in:
parent
84b1e80f67
commit
a6426475a7
4 changed files with 53 additions and 0 deletions
|
@ -301,6 +301,39 @@ bool hbitmap_next_dirty_area(const HBitmap *hb, int64_t start, int64_t end,
|
|||
return true;
|
||||
}
|
||||
|
||||
bool hbitmap_status(const HBitmap *hb, int64_t start, int64_t count,
|
||||
int64_t *pnum)
|
||||
{
|
||||
int64_t next_dirty, next_zero;
|
||||
|
||||
assert(start >= 0);
|
||||
assert(count > 0);
|
||||
assert(start + count <= hb->orig_size);
|
||||
|
||||
next_dirty = hbitmap_next_dirty(hb, start, count);
|
||||
if (next_dirty == -1) {
|
||||
*pnum = count;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (next_dirty > start) {
|
||||
*pnum = next_dirty - start;
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(next_dirty == start);
|
||||
|
||||
next_zero = hbitmap_next_zero(hb, start, count);
|
||||
if (next_zero == -1) {
|
||||
*pnum = count;
|
||||
return true;
|
||||
}
|
||||
|
||||
assert(next_zero > start);
|
||||
*pnum = next_zero - start;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool hbitmap_empty(const HBitmap *hb)
|
||||
{
|
||||
return hb->count == 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue