From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522063547672418.04329677860983; Mon, 26 Mar 2018 04:25:47 -0700 (PDT) Received: from localhost ([::1]:55946 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QFz-0008Dj-Sh for importer@patchew.org; Mon, 26 Mar 2018 07:25:43 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48116) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QBT-00045V-MS for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QBQ-0007N9-Hf for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:53046) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QBQ-0007Jj-8H; Mon, 26 Mar 2018 07:21:00 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0QBN-0002xv-3O; Mon, 26 Mar 2018 14:20:57 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:20:50 +0300 Message-Id: <20180326112056.8420-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 1/7] block/dirty-bitmap: add lock to bdrv_enable/disable_dirty_bitmap X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Functions write to BdrvDirtyBitmap field, so the should take the lock. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/dirty-bitmap.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c index 967159479d..6c00288fd7 100644 --- a/block/dirty-bitmap.c +++ b/block/dirty-bitmap.c @@ -445,15 +445,19 @@ void bdrv_remove_persistent_dirty_bitmap(BlockDriverS= tate *bs, /* Called with BQL taken. */ void bdrv_disable_dirty_bitmap(BdrvDirtyBitmap *bitmap) { + bdrv_dirty_bitmap_lock(bitmap); assert(!bdrv_dirty_bitmap_frozen(bitmap)); bitmap->disabled =3D true; + bdrv_dirty_bitmap_unlock(bitmap); } =20 /* Called with BQL taken. */ void bdrv_enable_dirty_bitmap(BdrvDirtyBitmap *bitmap) { + bdrv_dirty_bitmap_lock(bitmap); assert(!bdrv_dirty_bitmap_frozen(bitmap)); bitmap->disabled =3D false; + bdrv_dirty_bitmap_unlock(bitmap); } =20 BlockDirtyInfoList *bdrv_query_dirty_bitmaps(BlockDriverState *bs) --=20 2.11.1 From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522063636814114.01059469841482; Mon, 26 Mar 2018 04:27:16 -0700 (PDT) Received: from localhost ([::1]:55962 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QHU-0001Ed-3v for importer@patchew.org; Mon, 26 Mar 2018 07:27:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48117) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QBT-00045W-MY for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QBQ-0007My-Gy for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:53050) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QBQ-0007Jl-7y; Mon, 26 Mar 2018 07:21:00 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0QBN-0002xv-HN; Mon, 26 Mar 2018 14:20:57 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:20:51 +0300 Message-Id: <20180326112056.8420-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 2/7] dirty-bitmaps: fix comment about dirty_bitmap_mutex X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Clarify first two cases and fix Modify -> Any access in third case. Also, drop 'only' from third case, as it a bit confuses, when thinking about case where we modify BdrvDirtyBitmap and access HBitmap. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/block_int.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index 27e17addba..e5af7820ff 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -701,10 +701,14 @@ struct BlockDriverState { uint64_t write_threshold_offset; NotifierWithReturn write_threshold_notifier; =20 - /* Writing to the list requires the BQL _and_ the dirty_bitmap_mutex. - * Reading from the list can be done with either the BQL or the - * dirty_bitmap_mutex. Modifying a bitmap only requires - * dirty_bitmap_mutex. */ + /* Writing to the list (i.e. to any field of BdrvDirtyBitmap or to the + * list-head) requires both the BQL _and_ the dirty_bitmap_mutex. + * + * Reading from the list (from any field of BdrvDirtyBitmap or from the + * list-head) can be done with either the BQL or the dirty_bitmap_mute= x. + * + * Any access to underlying HBitmap requires dirty_bitmap_mutex. + */ QemuMutex dirty_bitmap_mutex; QLIST_HEAD(, BdrvDirtyBitmap) dirty_bitmaps; =20 --=20 2.11.1 From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522063394406142.84165913859783; Mon, 26 Mar 2018 04:23:14 -0700 (PDT) Received: from localhost ([::1]:55923 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QDZ-0005Pd-Js for importer@patchew.org; Mon, 26 Mar 2018 07:23:13 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48113) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QBT-00045S-Ly for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QBQ-0007NE-Hf for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:53056) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QBQ-0007KP-8C; Mon, 26 Mar 2018 07:21:00 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0QBN-0002xv-Vy; Mon, 26 Mar 2018 14:20:58 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:20:52 +0300 Message-Id: <20180326112056.8420-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 3/7] dirty-bitmap: remove missed bdrv_dirty_bitmap_get_autoload header X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/dirty-bitmap.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h index 1ff8949b1b..c7e910016d 100644 --- a/include/block/dirty-bitmap.h +++ b/include/block/dirty-bitmap.h @@ -88,7 +88,6 @@ int64_t bdrv_get_meta_dirty_count(BdrvDirtyBitmap *bitmap= ); void bdrv_dirty_bitmap_truncate(BlockDriverState *bs, int64_t bytes); bool bdrv_dirty_bitmap_readonly(const BdrvDirtyBitmap *bitmap); bool bdrv_has_readonly_bitmaps(BlockDriverState *bs); -bool bdrv_dirty_bitmap_get_autoload(const BdrvDirtyBitmap *bitmap); bool bdrv_dirty_bitmap_get_persistance(BdrvDirtyBitmap *bitmap); bool bdrv_dirty_bitmap_qmp_locked(BdrvDirtyBitmap *bitmap); bool bdrv_has_changed_persistent_bitmaps(BlockDriverState *bs); --=20 2.11.1 From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522063548695812.5040464604594; Mon, 26 Mar 2018 04:25:48 -0700 (PDT) Received: from localhost ([::1]:55945 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QFy-0008B7-SP for importer@patchew.org; Mon, 26 Mar 2018 07:25:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48127) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QBT-00045Z-OO for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QBQ-0007Mt-Fw for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:53060) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QBQ-0007Kq-8F; Mon, 26 Mar 2018 07:21:00 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0QBO-0002xv-Gw; Mon, 26 Mar 2018 14:20:58 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:20:53 +0300 Message-Id: <20180326112056.8420-5-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 4/7] dirty-bitmap: separate unused meta-bitmap related functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Separate them in the header and clarify needed locking in comments. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/dirty-bitmap.h | 14 +++++++++----- block/dirty-bitmap.c | 5 +++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/include/block/dirty-bitmap.h b/include/block/dirty-bitmap.h index c7e910016d..b7ccfd1363 100644 --- a/include/block/dirty-bitmap.h +++ b/include/block/dirty-bitmap.h @@ -9,9 +9,6 @@ BdrvDirtyBitmap *bdrv_create_dirty_bitmap(BlockDriverState = *bs, uint32_t granularity, const char *name, Error **errp); -void bdrv_create_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap, - int chunk_size); -void bdrv_release_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap); int bdrv_dirty_bitmap_create_successor(BlockDriverState *bs, BdrvDirtyBitmap *bitmap, Error **errp); @@ -45,7 +42,6 @@ void bdrv_set_dirty_bitmap(BdrvDirtyBitmap *bitmap, int64_t offset, int64_t bytes); void bdrv_reset_dirty_bitmap(BdrvDirtyBitmap *bitmap, int64_t offset, int64_t bytes); -BdrvDirtyBitmapIter *bdrv_dirty_meta_iter_new(BdrvDirtyBitmap *bitmap); BdrvDirtyBitmapIter *bdrv_dirty_iter_new(BdrvDirtyBitmap *bitmap); void bdrv_dirty_iter_free(BdrvDirtyBitmapIter *iter); =20 @@ -84,7 +80,6 @@ void bdrv_reset_dirty_bitmap_locked(BdrvDirtyBitmap *bitm= ap, int64_t bdrv_dirty_iter_next(BdrvDirtyBitmapIter *iter); void bdrv_set_dirty_iter(BdrvDirtyBitmapIter *hbi, int64_t offset); int64_t bdrv_get_dirty_count(BdrvDirtyBitmap *bitmap); -int64_t bdrv_get_meta_dirty_count(BdrvDirtyBitmap *bitmap); void bdrv_dirty_bitmap_truncate(BlockDriverState *bs, int64_t bytes); bool bdrv_dirty_bitmap_readonly(const BdrvDirtyBitmap *bitmap); bool bdrv_has_readonly_bitmaps(BlockDriverState *bs); @@ -99,4 +94,13 @@ BdrvDirtyBitmap *bdrv_reclaim_dirty_bitmap_locked(BlockD= riverState *bs, BdrvDirtyBitmap *bitmap, Error **errp); =20 +/* + * Unused for now meta-bitmaps related functions + */ + +void bdrv_create_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap, int chunk_size= ); +void bdrv_release_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap); +BdrvDirtyBitmapIter *bdrv_dirty_meta_iter_new(BdrvDirtyBitmap *bitmap); +int64_t bdrv_get_meta_dirty_count(BdrvDirtyBitmap *bitmap); + #endif diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c index 6c00288fd7..1812e17549 100644 --- a/block/dirty-bitmap.c +++ b/block/dirty-bitmap.c @@ -149,6 +149,8 @@ BdrvDirtyBitmap *bdrv_create_dirty_bitmap(BlockDriverSt= ate *bs, * @bitmap: the block dirty bitmap for which to create a meta dirty bitmap. * @chunk_size: how many bytes of bitmap data does each bit in the meta bi= tmap * track. + * + * Called with BQL taken. */ void bdrv_create_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap, int chunk_size) @@ -160,6 +162,7 @@ void bdrv_create_meta_dirty_bitmap(BdrvDirtyBitmap *bit= map, qemu_mutex_unlock(bitmap->mutex); } =20 +/* Called with BQL taken. */ void bdrv_release_meta_dirty_bitmap(BdrvDirtyBitmap *bitmap) { assert(bitmap->meta); @@ -529,6 +532,7 @@ BdrvDirtyBitmapIter *bdrv_dirty_iter_new(BdrvDirtyBitma= p *bitmap) return iter; } =20 +/* Called with BQL and dirty_bitmap_mutex locked. */ BdrvDirtyBitmapIter *bdrv_dirty_meta_iter_new(BdrvDirtyBitmap *bitmap) { BdrvDirtyBitmapIter *iter =3D g_new(BdrvDirtyBitmapIter, 1); @@ -688,6 +692,7 @@ int64_t bdrv_get_dirty_count(BdrvDirtyBitmap *bitmap) return hbitmap_count(bitmap->bitmap); } =20 +/* Called with BQL or dirty_bitmap_mutex locked */ int64_t bdrv_get_meta_dirty_count(BdrvDirtyBitmap *bitmap) { return hbitmap_count(bitmap->meta); --=20 2.11.1 From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522063391309844.6847837302323; Mon, 26 Mar 2018 04:23:11 -0700 (PDT) Received: from localhost ([::1]:55921 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QDW-0005Mz-AD for importer@patchew.org; Mon, 26 Mar 2018 07:23:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48118) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QBT-00045X-MW for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QBQ-0007NV-Rt for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:53064) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QBQ-0007Ln-KI; Mon, 26 Mar 2018 07:21:00 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0QBP-0002xv-0L; Mon, 26 Mar 2018 14:20:59 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:20:54 +0300 Message-Id: <20180326112056.8420-6-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 5/7] blockdev: refactor block-dirty-bitmap-clear transaction X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" bdrv_clear_dirty_bitmap do not fail, so we can call it in transaction commit, avoiding any rollback. Signed-off-by: Vladimir Sementsov-Ogievskiy --- blockdev.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/blockdev.c b/blockdev.c index c31bf3d98d..88eae60c1c 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2050,7 +2050,6 @@ typedef struct BlockDirtyBitmapState { BlkActionState common; BdrvDirtyBitmap *bitmap; BlockDriverState *bs; - HBitmap *backup; bool prepared; } BlockDirtyBitmapState; =20 @@ -2129,18 +2128,6 @@ static void block_dirty_bitmap_clear_prepare(BlkActi= onState *common, error_setg(errp, "Cannot clear a readonly bitmap"); return; } - - bdrv_clear_dirty_bitmap(state->bitmap, &state->backup); -} - -static void block_dirty_bitmap_clear_abort(BlkActionState *common) -{ - BlockDirtyBitmapState *state =3D DO_UPCAST(BlockDirtyBitmapState, - common, common); - - if (state->backup) { - bdrv_undo_clear_dirty_bitmap(state->bitmap, state->backup); - } } =20 static void block_dirty_bitmap_clear_commit(BlkActionState *common) @@ -2148,7 +2135,7 @@ static void block_dirty_bitmap_clear_commit(BlkAction= State *common) BlockDirtyBitmapState *state =3D DO_UPCAST(BlockDirtyBitmapState, common, common); =20 - hbitmap_free(state->backup); + bdrv_clear_dirty_bitmap(state->bitmap, NULL); } =20 static void abort_prepare(BlkActionState *common, Error **errp) @@ -2210,7 +2197,6 @@ static const BlkActionOps actions[] =3D { .instance_size =3D sizeof(BlockDirtyBitmapState), .prepare =3D block_dirty_bitmap_clear_prepare, .commit =3D block_dirty_bitmap_clear_commit, - .abort =3D block_dirty_bitmap_clear_abort, } }; =20 --=20 2.11.1 From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522063552949810.4841633998344; Mon, 26 Mar 2018 04:25:52 -0700 (PDT) Received: from localhost ([::1]:55943 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QFy-0008AH-2V for importer@patchew.org; Mon, 26 Mar 2018 07:25:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48119) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QBT-00045Y-Mo for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QBR-0007Nn-4c for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:53068) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QBQ-0007MI-Ss; Mon, 26 Mar 2018 07:21:01 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0QBP-0002xv-EV; Mon, 26 Mar 2018 14:20:59 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:20:55 +0300 Message-Id: <20180326112056.8420-7-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 6/7] block/dirty-bitmap: bdrv_clear_dirty_bitmap: drop unused parameter X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Drop parameter "HBitmap **out" which is unused now, all callers set it to NULL. Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/block_int.h | 2 +- block/dirty-bitmap.c | 14 +++++--------- blockdev.c | 4 ++-- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index e5af7820ff..b2ef0f472d 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -1078,7 +1078,7 @@ bool blk_dev_is_medium_locked(BlockBackend *blk); =20 void bdrv_set_dirty(BlockDriverState *bs, int64_t offset, int64_t bytes); =20 -void bdrv_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap, HBitmap **out); +void bdrv_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap); void bdrv_undo_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap, HBitmap *in); =20 void bdrv_inc_in_flight(BlockDriverState *bs); diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c index 1812e17549..139102f24e 100644 --- a/block/dirty-bitmap.c +++ b/block/dirty-bitmap.c @@ -591,19 +591,15 @@ void bdrv_reset_dirty_bitmap(BdrvDirtyBitmap *bitmap, bdrv_dirty_bitmap_unlock(bitmap); } =20 -void bdrv_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap, HBitmap **out) +void bdrv_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap) { assert(bdrv_dirty_bitmap_enabled(bitmap)); assert(!bdrv_dirty_bitmap_readonly(bitmap)); + bdrv_dirty_bitmap_lock(bitmap); - if (!out) { - hbitmap_reset_all(bitmap->bitmap); - } else { - HBitmap *backup =3D bitmap->bitmap; - bitmap->bitmap =3D hbitmap_alloc(bitmap->size, - hbitmap_granularity(backup)); - *out =3D backup; - } + + hbitmap_reset_all(bitmap->bitmap); + bdrv_dirty_bitmap_unlock(bitmap); } =20 diff --git a/blockdev.c b/blockdev.c index 88eae60c1c..54e1ba8f44 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2135,7 +2135,7 @@ static void block_dirty_bitmap_clear_commit(BlkAction= State *common) BlockDirtyBitmapState *state =3D DO_UPCAST(BlockDirtyBitmapState, common, common); =20 - bdrv_clear_dirty_bitmap(state->bitmap, NULL); + bdrv_clear_dirty_bitmap(state->bitmap); } =20 static void abort_prepare(BlkActionState *common, Error **errp) @@ -2906,7 +2906,7 @@ void qmp_block_dirty_bitmap_clear(const char *node, c= onst char *name, return; } =20 - bdrv_clear_dirty_bitmap(bitmap, NULL); + bdrv_clear_dirty_bitmap(bitmap); } =20 BlockDirtyBitmapSha256 *qmp_x_debug_block_dirty_bitmap_sha256(const char *= node, --=20 2.11.1 From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522063390335854.5718554991209; Mon, 26 Mar 2018 04:23:10 -0700 (PDT) Received: from localhost ([::1]:55920 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QDV-0005LX-Bv for importer@patchew.org; Mon, 26 Mar 2018 07:23:09 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48115) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QBT-00045U-MX for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QBR-0007O3-Dt for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:21:03 -0400 Received: from relay.sw.ru ([185.231.240.75]:53074) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QBR-0007Mc-5B; Mon, 26 Mar 2018 07:21:01 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0QBP-0002xv-RJ; Mon, 26 Mar 2018 14:20:59 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:20:56 +0300 Message-Id: <20180326112056.8420-8-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 7/7] blockdev: unify block-dirty-bitmap-clear command and transaction action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" - use error messages from qmp command, as they are more descriptive - we need not check bs, as block_dirty_bitmap_lookup never returns bs =3D NULL on success (and if user set bs to be not NULL pointer), so, let's just assert it. Signed-off-by: Vladimir Sementsov-Ogievskiy --- blockdev.c | 53 +++++++++++++++++++++-------------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/blockdev.c b/blockdev.c index 54e1ba8f44..3f0979298e 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2114,18 +2114,26 @@ static void block_dirty_bitmap_clear_prepare(BlkAct= ionState *common, if (!state->bitmap) { return; } + assert(state->bs !=3D NULL); =20 if (bdrv_dirty_bitmap_frozen(state->bitmap)) { - error_setg(errp, "Cannot modify a frozen bitmap"); + error_setg(errp, + "Bitmap '%s' is currently frozen and cannot be modified= ", + action->name); return; } else if (bdrv_dirty_bitmap_qmp_locked(state->bitmap)) { - error_setg(errp, "Cannot modify a locked bitmap"); + error_setg(errp, + "Bitmap '%s' is currently locked and cannot be modified= ", + action->name); return; } else if (!bdrv_dirty_bitmap_enabled(state->bitmap)) { - error_setg(errp, "Cannot clear a disabled bitmap"); + error_setg(errp, + "Bitmap '%s' is currently disabled and cannot be cleare= d", + action->name); return; } else if (bdrv_dirty_bitmap_readonly(state->bitmap)) { - error_setg(errp, "Cannot clear a readonly bitmap"); + error_setg(errp, "Bitmap '%s' is readonly and cannot be cleared", + action->name); return; } } @@ -2878,35 +2886,16 @@ void qmp_block_dirty_bitmap_remove(const char *node= , const char *name, void qmp_block_dirty_bitmap_clear(const char *node, const char *name, Error **errp) { - BdrvDirtyBitmap *bitmap; - BlockDriverState *bs; - - bitmap =3D block_dirty_bitmap_lookup(node, name, &bs, errp); - if (!bitmap || !bs) { - return; - } - - if (bdrv_dirty_bitmap_frozen(bitmap)) { - error_setg(errp, - "Bitmap '%s' is currently frozen and cannot be modified= ", - name); - return; - } else if (bdrv_dirty_bitmap_qmp_locked(bitmap)) { - error_setg(errp, - "Bitmap '%s' is currently locked and cannot be modified= ", - name); - return; - } else if (!bdrv_dirty_bitmap_enabled(bitmap)) { - error_setg(errp, - "Bitmap '%s' is currently disabled and cannot be cleare= d", - name); - return; - } else if (bdrv_dirty_bitmap_readonly(bitmap)) { - error_setg(errp, "Bitmap '%s' is readonly and cannot be cleared", = name); - return; - } + BlockDirtyBitmap data =3D { + .node =3D (char *)node, + .name =3D (char *)name + }; + TransactionAction action =3D { + .type =3D TRANSACTION_ACTION_KIND_BLOCK_DIRTY_BITMAP_CLEAR, + .u.block_dirty_bitmap_clear.data =3D &data, + }; =20 - bdrv_clear_dirty_bitmap(bitmap); + blockdev_do_action(&action, errp); } =20 BlockDirtyBitmapSha256 *qmp_x_debug_block_dirty_bitmap_sha256(const char *= node, --=20 2.11.1 From nobody Thu May 2 12:42:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1522065304818105.53778241576026; Mon, 26 Mar 2018 04:55:04 -0700 (PDT) Received: from localhost ([::1]:56069 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QiO-0003my-3G for importer@patchew.org; Mon, 26 Mar 2018 07:55:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55951) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f0QhG-0002sa-On for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:53:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f0QhC-0000Gw-62 for qemu-devel@nongnu.org; Mon, 26 Mar 2018 07:53:54 -0400 Received: from relay.sw.ru ([185.231.240.75]:53966) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f0QhB-0000Da-TG; Mon, 26 Mar 2018 07:53:50 -0400 Received: from msk-vpn.virtuozzo.com ([195.214.232.6] helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1f0Qh8-00036t-Nn; Mon, 26 Mar 2018 14:53:46 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Mon, 26 Mar 2018 14:53:46 +0300 Message-Id: <20180326115346.11939-1-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.11.1 In-Reply-To: <20180326112056.8420-1-vsementsov@virtuozzo.com> References: <20180326112056.8420-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 5.5/7] dirty-bitmap: drop unused bdrv_undo_clear_dirty_bitmap X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, famz@redhat.com, armbru@redhat.com, mreitz@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Vladimir Sementsov-Ogievskiy --- include/block/block_int.h | 1 - block/dirty-bitmap.c | 9 --------- 2 files changed, 10 deletions(-) diff --git a/include/block/block_int.h b/include/block/block_int.h index e5af7820ff..bd857d5099 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -1079,7 +1079,6 @@ bool blk_dev_is_medium_locked(BlockBackend *blk); void bdrv_set_dirty(BlockDriverState *bs, int64_t offset, int64_t bytes); =20 void bdrv_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap, HBitmap **out); -void bdrv_undo_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap, HBitmap *in); =20 void bdrv_inc_in_flight(BlockDriverState *bs); void bdrv_dec_in_flight(BlockDriverState *bs); diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c index 1812e17549..3c69a8eed9 100644 --- a/block/dirty-bitmap.c +++ b/block/dirty-bitmap.c @@ -607,15 +607,6 @@ void bdrv_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap, = HBitmap **out) bdrv_dirty_bitmap_unlock(bitmap); } =20 -void bdrv_undo_clear_dirty_bitmap(BdrvDirtyBitmap *bitmap, HBitmap *in) -{ - HBitmap *tmp =3D bitmap->bitmap; - assert(bdrv_dirty_bitmap_enabled(bitmap)); - assert(!bdrv_dirty_bitmap_readonly(bitmap)); - bitmap->bitmap =3D in; - hbitmap_free(tmp); -} - uint64_t bdrv_dirty_bitmap_serialization_size(const BdrvDirtyBitmap *bitma= p, uint64_t offset, uint64_t by= tes) { --=20 2.11.1