From nobody Sun May 5 12:17:52 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.zoho.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 1491405243517303.70737112551694; Wed, 5 Apr 2017 08:14:03 -0700 (PDT) Received: from localhost ([::1]:40962 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cvmdG-0007oC-CA for importer@patchew.org; Wed, 05 Apr 2017 11:14:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59518) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cvmbX-0006Re-Pc for qemu-devel@nongnu.org; Wed, 05 Apr 2017 11:12:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cvmbU-0007aE-NX for qemu-devel@nongnu.org; Wed, 05 Apr 2017 11:12:15 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:27104 helo=relay.sw.ru) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cvmbU-0007VA-Ce for qemu-devel@nongnu.org; Wed, 05 Apr 2017 11:12:12 -0400 Received: from iris.sw.ru (msk-vpn.virtuozzo.com [195.214.232.6]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id v35FC6n6022233; Wed, 5 Apr 2017 18:12:08 +0300 (MSK) From: "Denis V. Lunev" To: qemu-devel@nongnu.org Date: Wed, 5 Apr 2017 18:12:05 +0300 Message-Id: <1491405126-30591-2-git-send-email-den@openvz.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491405126-30591-1-git-send-email-den@openvz.org> References: <1491405126-30591-1-git-send-email-den@openvz.org> X-detected-operating-system: by eggs.gnu.org: OpenBSD 3.x [fuzzy] X-Received-From: 195.214.232.25 Subject: [Qemu-devel] [PATCH 1/2] parallels: create parallels_inactivate() callback of block driver state 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: "Denis V. Lunev" , Stefan Hajnoczi 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" We should avoid to image file at migration end when BDRV_O_INACTIVE is set on the block driver state. All modifications should be done in advance, i.e. in bdrv_inactivate. The patch also adds final bdrv_flush() to be sure that changes have reached disk finally before other side will access the image. Signed-off-by: Denis V. Lunev CC: Stefan Hajnoczi --- block/parallels.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 90acf79..9dea09e 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -728,18 +728,35 @@ fail_options: goto fail; } =20 - -static void parallels_close(BlockDriverState *bs) +static int parallels_inactivate(BlockDriverState *bs) { + int err; BDRVParallelsState *s =3D bs->opaque; =20 - if (bs->open_flags & BDRV_O_RDWR) { - s->header->inuse =3D 0; - parallels_update_header(bs); + if (!(bs->open_flags & BDRV_O_RDWR)) { + return 0; + } + + s->header->inuse =3D 0; + err =3D parallels_update_header(bs); + if (err < 0) { + return err; + } + + err =3D bdrv_truncate(bs->file, s->data_end << BDRV_SECTOR_BITS); + if (err < 0) { + return err; } =20 - if (bs->open_flags & BDRV_O_RDWR) { - bdrv_truncate(bs->file, s->data_end << BDRV_SECTOR_BITS); + return bdrv_flush(bs->file->bs); +} + +static void parallels_close(BlockDriverState *bs) +{ + BDRVParallelsState *s =3D bs->opaque; + + if (!(bs->open_flags & BDRV_O_INACTIVE)) { + parallels_inactivate(bs); } =20 g_free(s->bat_dirty_bmap); @@ -777,6 +794,7 @@ static BlockDriver bdrv_parallels =3D { .bdrv_co_flush_to_os =3D parallels_co_flush_to_os, .bdrv_co_readv =3D parallels_co_readv, .bdrv_co_writev =3D parallels_co_writev, + .bdrv_inactivate =3D parallels_inactivate, =20 .bdrv_create =3D parallels_create, .bdrv_check =3D parallels_check, --=20 2.7.4 From nobody Sun May 5 12:17:52 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.zoho.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 1491405241426898.0361256324882; Wed, 5 Apr 2017 08:14:01 -0700 (PDT) Received: from localhost ([::1]:40961 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cvmdE-0007la-9R for importer@patchew.org; Wed, 05 Apr 2017 11:14:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59517) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cvmbX-0006Rd-PZ for qemu-devel@nongnu.org; Wed, 05 Apr 2017 11:12:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cvmbU-0007Zx-Kc for qemu-devel@nongnu.org; Wed, 05 Apr 2017 11:12:15 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:2217 helo=relay.sw.ru) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cvmbU-0007V8-8s for qemu-devel@nongnu.org; Wed, 05 Apr 2017 11:12:12 -0400 Received: from iris.sw.ru (msk-vpn.virtuozzo.com [195.214.232.6]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id v35FC6n7022233; Wed, 5 Apr 2017 18:12:08 +0300 (MSK) From: "Denis V. Lunev" To: qemu-devel@nongnu.org Date: Wed, 5 Apr 2017 18:12:06 +0300 Message-Id: <1491405126-30591-3-git-send-email-den@openvz.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1491405126-30591-1-git-send-email-den@openvz.org> References: <1491405126-30591-1-git-send-email-den@openvz.org> X-detected-operating-system: by eggs.gnu.org: OpenBSD 3.x [fuzzy] X-Received-From: 195.214.232.25 Subject: [Qemu-devel] [PATCH 2/2] parallels: relax check for auto switch of prealloc_mode 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: "Denis V. Lunev" , Stefan Hajnoczi 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" PRL_PREALLOC_MODE_TRUNCATE can be set only through command line. Remove the check that bdrv_truncate() is working on, this is almost always the case, while the check could lead to serious consequences during migration etc when we should not even try to API which technically could change the image (asserts are possible). Let us keep this simple. Signed-off-by: Denis V. Lunev CC: Stefan Hajnoczi Reviewed-by: Stefan Hajnoczi --- block/parallels.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/block/parallels.c b/block/parallels.c index 9dea09e..e805034 100644 --- a/block/parallels.c +++ b/block/parallels.c @@ -695,8 +695,7 @@ static int parallels_open(BlockDriverState *bs, QDict *= options, int flags, goto fail_options; } =20 - if (!(flags & BDRV_O_RESIZE) || !bdrv_has_zero_init(bs->file->bs) || - bdrv_truncate(bs->file, bdrv_getlength(bs->file->bs)) !=3D 0) { + if (!bdrv_has_zero_init(bs->file->bs) !=3D 0) { s->prealloc_mode =3D PRL_PREALLOC_MODE_FALLOCATE; } =20 --=20 2.7.4