[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v8 02/14] block/dirty-bitmap: add locked version of
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[Qemu-block] [PATCH v8 02/14] block/dirty-bitmap: add locked version of bdrv_release_dirty_bitmap |
Date: |
Mon, 30 Oct 2017 19:32:57 +0300 |
It is needed to realize bdrv_dirty_bitmap_release_successor in
the following patch.
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
block/dirty-bitmap.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c
index 81adbeb6d4..981f99d362 100644
--- a/block/dirty-bitmap.c
+++ b/block/dirty-bitmap.c
@@ -326,13 +326,13 @@ static bool bdrv_dirty_bitmap_has_name(BdrvDirtyBitmap
*bitmap)
return !!bdrv_dirty_bitmap_name(bitmap);
}
-/* Called with BQL taken. */
-static void bdrv_do_release_matching_dirty_bitmap(
+/* Called within bdrv_dirty_bitmap_lock..unlock */
+static void bdrv_do_release_matching_dirty_bitmap_locked(
BlockDriverState *bs, BdrvDirtyBitmap *bitmap,
bool (*cond)(BdrvDirtyBitmap *bitmap))
{
BdrvDirtyBitmap *bm, *next;
- bdrv_dirty_bitmaps_lock(bs);
+
QLIST_FOREACH_SAFE(bm, &bs->dirty_bitmaps, list, next) {
if ((!bitmap || bm == bitmap) && (!cond || cond(bm))) {
assert(!bm->active_iterators);
@@ -344,18 +344,33 @@ static void bdrv_do_release_matching_dirty_bitmap(
g_free(bm);
if (bitmap) {
- goto out;
+ return;
}
}
}
+
if (bitmap) {
abort();
}
+}
-out:
+/* Called with BQL taken. */
+static void bdrv_do_release_matching_dirty_bitmap(
+ BlockDriverState *bs, BdrvDirtyBitmap *bitmap,
+ bool (*cond)(BdrvDirtyBitmap *bitmap))
+{
+ bdrv_dirty_bitmaps_lock(bs);
+ bdrv_do_release_matching_dirty_bitmap_locked(bs, bitmap, cond);
bdrv_dirty_bitmaps_unlock(bs);
}
+/* Called within bdrv_dirty_bitmap_lock..unlock */
+static void bdrv_release_dirty_bitmap_locked(BlockDriverState *bs,
+ BdrvDirtyBitmap *bitmap)
+{
+ bdrv_do_release_matching_dirty_bitmap_locked(bs, bitmap, NULL);
+}
+
/* Called with BQL taken. */
void bdrv_release_dirty_bitmap(BlockDriverState *bs, BdrvDirtyBitmap *bitmap)
{
--
2.11.1
- [Qemu-block] [PATCH v8 08/14] migration/qemu-file: add qemu_put_counted_string(), (continued)
- [Qemu-block] [PATCH v8 08/14] migration/qemu-file: add qemu_put_counted_string(), Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 06/14] qapi: add dirty-bitmaps migration capability, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 13/14] iotests: add dirty bitmap postcopy test, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 03/14] block/dirty-bitmap: add bdrv_dirty_bitmap_release_successor, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 01/14] block/dirty-bitmap: add bdrv_dirty_bitmap_enable_successor(), Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 04/14] block/dirty-bitmap: add bdrv_dirty_bitmap_set_frozen, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 09/14] migration: add is_active_iterate handler, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 07/14] migration: include migrate_dirty_bitmaps in migrate_postcopy, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 14/14] iotests: add persistent bitmap migration test, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 12/14] iotests: add dirty bitmap migration test, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 02/14] block/dirty-bitmap: add locked version of bdrv_release_dirty_bitmap,
Vladimir Sementsov-Ogievskiy <=
- [Qemu-block] [PATCH v8 10/14] migration: add postcopy migration of dirty bitmaps, Vladimir Sementsov-Ogievskiy, 2017/10/30
- [Qemu-block] [PATCH v8 05/14] migration: introduce postcopy-only pending, Vladimir Sementsov-Ogievskiy, 2017/10/30
- Re: [Qemu-block] [Qemu-devel] [PATCH v8 00/14] Dirty bitmaps postcopy migration, no-reply, 2017/10/30
- Re: [Qemu-block] [PATCH v8 00/14] Dirty bitmaps postcopy migration, Vladimir Sementsov-Ogievskiy, 2017/10/30