[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/19] block/dirty-bitmap: refactor bdrv_dirty_bitmap_next
From: |
John Snow |
Subject: |
[PULL 08/19] block/dirty-bitmap: refactor bdrv_dirty_bitmap_next |
Date: |
Fri, 11 Oct 2019 17:25:39 -0400 |
From: Vladimir Sementsov-Ogievskiy <address@hidden>
bdrv_dirty_bitmap_next is always used in same pattern. So, split it
into _next and _first, instead of combining two functions into one and
add FOR_EACH_DIRTY_BITMAP macro.
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: John Snow <address@hidden>
---
include/block/dirty-bitmap.h | 9 +++++++--
block.c | 4 +---
block/dirty-bitmap.c | 11 +++++++----
block/qcow2-bitmap.c | 8 ++------
migration/block-dirty-bitmap.c | 4 +---
5 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h
index 2f9b088e11e..257f0f67046 100644
--- a/include/block/dirty-bitmap.h
+++ b/include/block/dirty-bitmap.h
@@ -96,8 +96,13 @@ bool bdrv_dirty_bitmap_get_autoload(const BdrvDirtyBitmap
*bitmap);
bool bdrv_dirty_bitmap_get_persistence(BdrvDirtyBitmap *bitmap);
bool bdrv_dirty_bitmap_inconsistent(const BdrvDirtyBitmap *bitmap);
bool bdrv_has_changed_persistent_bitmaps(BlockDriverState *bs);
-BdrvDirtyBitmap *bdrv_dirty_bitmap_next(BlockDriverState *bs,
- BdrvDirtyBitmap *bitmap);
+
+BdrvDirtyBitmap *bdrv_dirty_bitmap_first(BlockDriverState *bs);
+BdrvDirtyBitmap *bdrv_dirty_bitmap_next(BdrvDirtyBitmap *bitmap);
+#define FOR_EACH_DIRTY_BITMAP(bs, bitmap) \
+for (bitmap = bdrv_dirty_bitmap_first(bs); bitmap; \
+ bitmap = bdrv_dirty_bitmap_next(bitmap))
+
char *bdrv_dirty_bitmap_sha256(const BdrvDirtyBitmap *bitmap, Error **errp);
int64_t bdrv_dirty_bitmap_next_zero(BdrvDirtyBitmap *bitmap, uint64_t offset,
uint64_t bytes);
diff --git a/block.c b/block.c
index bea03cfcc92..5b5b0337acc 100644
--- a/block.c
+++ b/block.c
@@ -5363,9 +5363,7 @@ static void coroutine_fn
bdrv_co_invalidate_cache(BlockDriverState *bs,
}
}
- for (bm = bdrv_dirty_bitmap_next(bs, NULL); bm;
- bm = bdrv_dirty_bitmap_next(bs, bm))
- {
+ FOR_EACH_DIRTY_BITMAP(bs, bm) {
bdrv_dirty_bitmap_skip_store(bm, false);
}
diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c
index 4e5c87a907f..6065db80949 100644
--- a/block/dirty-bitmap.c
+++ b/block/dirty-bitmap.c
@@ -851,11 +851,14 @@ bool bdrv_has_changed_persistent_bitmaps(BlockDriverState
*bs)
return false;
}
-BdrvDirtyBitmap *bdrv_dirty_bitmap_next(BlockDriverState *bs,
- BdrvDirtyBitmap *bitmap)
+BdrvDirtyBitmap *bdrv_dirty_bitmap_first(BlockDriverState *bs)
{
- return bitmap == NULL ? QLIST_FIRST(&bs->dirty_bitmaps) :
- QLIST_NEXT(bitmap, list);
+ return QLIST_FIRST(&bs->dirty_bitmaps);
+}
+
+BdrvDirtyBitmap *bdrv_dirty_bitmap_next(BdrvDirtyBitmap *bitmap)
+{
+ return QLIST_NEXT(bitmap, list);
}
char *bdrv_dirty_bitmap_sha256(const BdrvDirtyBitmap *bitmap, Error **errp)
diff --git a/block/qcow2-bitmap.c b/block/qcow2-bitmap.c
index 687087d2bc2..99812b418b8 100644
--- a/block/qcow2-bitmap.c
+++ b/block/qcow2-bitmap.c
@@ -1488,9 +1488,7 @@ void
qcow2_store_persistent_dirty_bitmaps(BlockDriverState *bs, Error **errp)
}
/* check constraints and names */
- for (bitmap = bdrv_dirty_bitmap_next(bs, NULL); bitmap != NULL;
- bitmap = bdrv_dirty_bitmap_next(bs, bitmap))
- {
+ FOR_EACH_DIRTY_BITMAP(bs, bitmap) {
const char *name = bdrv_dirty_bitmap_name(bitmap);
uint32_t granularity = bdrv_dirty_bitmap_granularity(bitmap);
Qcow2Bitmap *bm;
@@ -1610,9 +1608,7 @@ int qcow2_reopen_bitmaps_ro(BlockDriverState *bs, Error
**errp)
return -EINVAL;
}
- for (bitmap = bdrv_dirty_bitmap_next(bs, NULL); bitmap != NULL;
- bitmap = bdrv_dirty_bitmap_next(bs, bitmap))
- {
+ FOR_EACH_DIRTY_BITMAP(bs, bitmap) {
if (bdrv_dirty_bitmap_get_persistence(bitmap)) {
bdrv_dirty_bitmap_set_readonly(bitmap, true);
}
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 793f249aa5b..7eafface614 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -283,9 +283,7 @@ static int init_dirty_bitmap_migration(void)
for (bs = bdrv_next_all_states(NULL); bs; bs = bdrv_next_all_states(bs)) {
const char *name = bdrv_get_device_or_node_name(bs);
- for (bitmap = bdrv_dirty_bitmap_next(bs, NULL); bitmap;
- bitmap = bdrv_dirty_bitmap_next(bs, bitmap))
- {
+ FOR_EACH_DIRTY_BITMAP(bs, bitmap) {
if (!bdrv_dirty_bitmap_name(bitmap)) {
continue;
}
--
2.21.0
- [PULL 00/19] Bitmaps patches, John Snow, 2019/10/11
- [PULL 01/19] util/hbitmap: strict hbitmap_reset, John Snow, 2019/10/11
- [PULL 02/19] block: move bdrv_can_store_new_dirty_bitmap to block/dirty-bitmap.c, John Snow, 2019/10/11
- [PULL 03/19] block/dirty-bitmap: return int from bdrv_remove_persistent_dirty_bitmap, John Snow, 2019/10/11
- [PULL 05/19] block/dirty-bitmap: drop meta, John Snow, 2019/10/11
- [PULL 04/19] block/qcow2: proper locking on bitmap add/remove paths, John Snow, 2019/10/11
- [PULL 07/19] block/dirty-bitmap: drop BdrvDirtyBitmap.mutex, John Snow, 2019/10/11
- [PULL 06/19] block/dirty-bitmap: add bs link, John Snow, 2019/10/11
- [PULL 08/19] block/dirty-bitmap: refactor bdrv_dirty_bitmap_next,
John Snow <=
- [PULL 09/19] block: switch reopen queue from QSIMPLEQ to QTAILQ, John Snow, 2019/10/11
- [PULL 10/19] block: reverse order for reopen commits, John Snow, 2019/10/11
- [PULL 11/19] iotests: add test-case to 165 to test reopening qcow2 bitmaps to RW, John Snow, 2019/10/11
- [PULL 12/19] block/qcow2-bitmap: get rid of bdrv_has_changed_persistent_bitmaps, John Snow, 2019/10/11
- [PULL 13/19] block/qcow2-bitmap: drop qcow2_reopen_bitmaps_rw_hint(), John Snow, 2019/10/11
- [PULL 16/19] block/qcow2-bitmap: fix and improve qcow2_reopen_bitmaps_rw, John Snow, 2019/10/11
- [PULL 14/19] block/qcow2-bitmap: do not remove bitmaps on reopen-ro, John Snow, 2019/10/11
- [PULL 15/19] iotests: add test 260 to check bitmap life after snapshot + commit, John Snow, 2019/10/11
- [PULL 17/19] qcow2-bitmap: move bitmap reopen-rw code to qcow2_reopen_commit, John Snow, 2019/10/11
- [PULL 18/19] MAINTAINERS: Add Vladimir as a reviewer for bitmaps, John Snow, 2019/10/11