From nobody Wed Jan 7 09:26:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1767025141; cv=none; d=zohomail.com; s=zohoarc; b=d+SGB5topqJziH+XW6Km2tCUZgcCT9kxosOtm/4Mi8nkqJOu4oXe7Qo0Xd3FUZImDKNt54cxWDPR5L2Xab6lBcjsGxyfB64yU8RgCucwIV/76CkXfRCgRSVlr6gPDRYISkc+EB+l4b6gaQrPIqhYrDbgUfU5U9+X+QdI5Epih5I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767025141; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=RHQ06Ay9ayNDOTQUjI5mQsuceKf7xehyCQI6bZPtdsc=; b=FQ33CQyBKEgeEsc0z1vXqBju4bHrOjXkvBs5iE1ZKM0vJLBVbwGUhsVngoGfz6UWiX9eZtpPGblxd0DQdWpMR0sv762spuaVy45ABz3d+6V64U4Xl12hBcTwsnVZmmGSYyugZHJY9K8kcHY2e0f3PdAw6QCtM5epkqcRdYXHqjA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 176702514137965.56942632970708; Mon, 29 Dec 2025 08:19:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vaFwY-00025c-0L; Mon, 29 Dec 2025 11:18:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vaFwL-0001wm-0M; Mon, 29 Dec 2025 11:17:49 -0500 Received: from relay.virtuozzo.com ([130.117.225.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vaFwI-0005OJ-Gi; Mon, 29 Dec 2025 11:17:48 -0500 Received: from [10.193.1.107] (helo=dev007.aci.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1vaFvu-00Apz0-2M; Mon, 29 Dec 2025 17:17:32 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=RHQ06Ay9ayNDOTQUjI5mQsuceKf7xehyCQI6bZPtdsc=; b=RW8FMCwC5VpR dYwSz43w70zy7oPtzgsx83yk15U9jYxraNOalfXtQ7OLjoH+bXiM/hVbWNUeqt1i56k03P9YDoahy sEIEGshESIkcFMPDDUGI3wwm4Ptv8UaY+uPKuGZPm1q5fpnyRpK7xHqLOPyMPcf9mulazMr9rFLfT LzWOiFlr9hCCWtFWrVVY079YT00f53Sv61Ki/9g+96GODRsCys1PmAVVAsyu//kA8Y8I+su0uHv04 RXq2lS6DBNCE/W5GAkM2/JhHsoN9mKSJ3pKdq24mTmudeTAUSO5JswEzU/f8xtYd9zSjzro/MQPmG JXGyvN5kPbi0rnqEGaiC/A==; To: qemu-block@nongnu.org, qemu-devel@nongnu.org, qemu-stable@nongnu.org Cc: den@openvz.org, Andrey Drobyshev , Kevin Wolf , Hanna Reitz Subject: [PATCH 1/3] block: create bdrv_advance_flush_gen() helper Date: Mon, 29 Dec 2025 19:07:43 +0300 Message-ID: <20251229161740.758800-2-den@openvz.org> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20251229161740.758800-1-den@openvz.org> References: <20251229161740.758800-1-den@openvz.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: softfail client-ip=130.117.225.111; envelope-from=den@openvz.org; helo=relay.virtuozzo.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: "Denis V. Lunev" From: "Denis V. Lunev" via Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1767025141542158500 Content-Type: text/plain; charset="utf-8" The patch creates helper to advance flush generation. Right now there is the only place which handles bs->write_gen, but this is going to be changed in the next patches. Unfortunately we need to precisely control the moment of flush() when BDRV_REQ_FUA is passed as a request flag. Generic processing inside bdrv_co_write_req_finish() is too late. Signed-off-by: Denis V. Lunev CC: Andrey Drobyshev CC: Kevin Wolf CC: Hanna Reitz --- block/io.c | 2 +- include/block/block_int-common.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/block/io.c b/block/io.c index d37da2e0ac5..f39ff862c11 100644 --- a/block/io.c +++ b/block/io.c @@ -2147,7 +2147,7 @@ bdrv_co_write_req_finish(BdrvChild *child, int64_t of= fset, int64_t bytes, =20 bdrv_check_request(offset, bytes, &error_abort); =20 - qatomic_inc(&bs->write_gen); + bdrv_advance_flush_gen(bs); =20 /* * Discard cannot extend the image, but in error handling cases, such = as diff --git a/include/block/block_int-common.h b/include/block/block_int-com= mon.h index 80c54a6d09f..67552463dbe 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -1373,6 +1373,11 @@ int bdrv_check_qiov_request(int64_t offset, int64_t = bytes, QEMUIOVector *qiov, size_t qiov_offset, Error **errp); =20 +static inline void bdrv_advance_flush_gen(BlockDriverState *bs) +{ + qatomic_inc(&bs->write_gen); +} + bool cbw_filter_present(void); =20 #ifdef _WIN32 --=20 2.43.5 From nobody Wed Jan 7 09:26:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1767025118; cv=none; d=zohomail.com; s=zohoarc; b=GvulmE0FuAWOYMxhjLSCNTWNCbazbOGhHATPpFxZWm+UQkB2kcwuCnvXzdwO2J3mZd0hZDODqWWoP6mbEAheICRQbJExWSIY5KxGQWMfDYjg//1jjDPbxISDhjnSvQ0Fqceh+lhBk2l9vyQH67VOLP5DDDPEj7LlAX/Swb2a6XU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767025118; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=DaI7hOh3RGqnTJuV0wMRfdPHrqPRwLR2pUWdXAkbt2k=; b=H5Dud/NSgTnWsRGJLnJqmjSUY879QVExbsusu5jorBABqOeAtPdKhNjhBe5QeS+ZJdOOurPedKXUl2MkcfE82F2ml0sT24RuUuVx2sPouQ4Y+bKmHYONaSFxf6FWeR9pGasO1v5CFdQlFAPw22vuoz8b6ge6Wu51Wz1yIJgKtgI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767025118151995.4702976906929; Mon, 29 Dec 2025 08:18:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vaFwd-0002DL-3L; Mon, 29 Dec 2025 11:18:07 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vaFwN-00021T-0V; Mon, 29 Dec 2025 11:17:51 -0500 Received: from relay.virtuozzo.com ([130.117.225.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vaFwI-0005OM-HO; Mon, 29 Dec 2025 11:17:49 -0500 Received: from [10.193.1.107] (helo=dev007.aci.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1vaFvu-00Apz0-2Z; Mon, 29 Dec 2025 17:17:33 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=DaI7hOh3RGqnTJuV0wMRfdPHrqPRwLR2pUWdXAkbt2k=; b=jSQb4isgM/DF /JmQO96JEN5o4gkTlF1dF+U31WWvS+39qezWMa9ALunBWhlxRz9JD9MpYMItI0SURWfkL4p9g+AwJ acNY5ElyGaCFXcVhHDYrh9UUxLIGOBlX8tQOXjLjEmxLjamO+WKSFeuxAHpYd2tksOekCttuPBOjb o8xTmlOqv2tQcf7HYBHQP+rvwUt9Uab89KpkqsigG+n64dWmmxB72+3SNEtCP2jCJu4TFjfP/E9Kc +vBqcZkoMxPdPEnZXSVFTs4pjb483O+iJvkzuhKWJ8R/OvIr6Cp3fBhXy7Qs8aIf80lqVZdvx2FJw 8VsGp0zCoG+1lEDYY/dmJQ==; To: qemu-block@nongnu.org, qemu-devel@nongnu.org, qemu-stable@nongnu.org Cc: den@openvz.org, Andrey Drobyshev , Kevin Wolf , Hanna Reitz Subject: [PATCH 2/3] block: move bdrv_advance_flush_gen() earlier from bdrv_co_write_req_finish Date: Mon, 29 Dec 2025 19:07:44 +0300 Message-ID: <20251229161740.758800-3-den@openvz.org> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20251229161740.758800-1-den@openvz.org> References: <20251229161740.758800-1-den@openvz.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: softfail client-ip=130.117.225.111; envelope-from=den@openvz.org; helo=relay.virtuozzo.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: "Denis V. Lunev" From: "Denis V. Lunev" via Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1767025119563158500 Content-Type: text/plain; charset="utf-8" This helper is mandatory to be called before bdrv_co_flush(). In the other case bdrv_co_flush() will be noop. This helper should be called after actual write is completed for subsequent flush to perform some work. Actually this change is important, without it BDRV_REQ_FUA semantics is broken completely. flush() is not called. This smells like potential data loss if somebody relies on BDRV_REQ_FUA. Signed-off-by: Denis V. Lunev CC: Andrey Drobyshev CC: Kevin Wolf CC: Hanna Reitz --- block/io.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/block/io.c b/block/io.c index f39ff862c11..820b41fab12 100644 --- a/block/io.c +++ b/block/io.c @@ -1163,8 +1163,11 @@ bdrv_driver_pwritev(BlockDriverState *bs, int64_t of= fset, int64_t bytes, ret =3D drv->bdrv_co_writev(bs, sector_num, nb_sectors, qiov, flags); =20 emulate_flags: - if (ret =3D=3D 0 && emulate_fua) { - ret =3D bdrv_co_flush(bs); + if (ret =3D=3D 0) { + bdrv_advance_flush_gen(bs); + if (emulate_fua) { + ret =3D bdrv_co_flush(bs); + } } =20 if (qiov =3D=3D &local_qiov) { @@ -2077,8 +2080,11 @@ bdrv_co_do_pwrite_zeroes(BlockDriverState *bs, int64= _t offset, int64_t bytes, } =20 fail: - if (ret =3D=3D 0 && need_flush) { - ret =3D bdrv_co_flush(bs); + if (ret =3D=3D 0) { + bdrv_advance_flush_gen(bs); + if (need_flush) { + ret =3D bdrv_co_flush(bs); + } } qemu_vfree(buf); return ret; @@ -2147,8 +2153,6 @@ bdrv_co_write_req_finish(BdrvChild *child, int64_t of= fset, int64_t bytes, =20 bdrv_check_request(offset, bytes, &error_abort); =20 - bdrv_advance_flush_gen(bs); - /* * Discard cannot extend the image, but in error handling cases, such = as * when reverting a qcow2 cluster allocation, the discarded range can = pass @@ -3720,6 +3724,7 @@ int coroutine_fn bdrv_co_pdiscard(BdrvChild *child, i= nt64_t offset, } ret =3D 0; out: + bdrv_advance_flush_gen(bs); bdrv_co_write_req_finish(child, req.offset, req.bytes, &req, ret); tracked_request_end(&req); bdrv_dec_in_flight(bs); @@ -3994,6 +4000,7 @@ static int coroutine_fn GRAPH_RDLOCK bdrv_co_copy_ran= ge_internal( bytes, read_flags, write_fl= ags); } + bdrv_advance_flush_gen(dst->bs); bdrv_co_write_req_finish(dst, dst_offset, bytes, &req, ret); tracked_request_end(&req); bdrv_dec_in_flight(dst->bs); @@ -4187,6 +4194,7 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child, i= nt64_t offset, bool exact, } else { offset =3D bs->total_sectors * BDRV_SECTOR_SIZE; } + bdrv_advance_flush_gen(bs); /* * It's possible that truncation succeeded but bdrv_refresh_total_sect= ors * failed, but the latter doesn't affect how we should finish the requ= est. --=20 2.43.5 From nobody Wed Jan 7 09:26:25 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1767025104; cv=none; d=zohomail.com; s=zohoarc; b=HBOGp3ZH6hswvaX3pq9vDxqPbwP2fgJMO5WYP2KGhgylcg3CIvhj0INM5K+cyeEaJOXlbte7DVExlc3s2M5U/NvED4ladFqnPRd+XnDWErvG93PEV52PQXdlsYjOWFB1YXhVHF59wCyJSzMY/m2J/9sMDaF5h/r2TqQf+i2X/Wc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1767025104; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Sender:Subject:Subject:To:To:Message-Id; bh=JLT9uAykIxBsdyhaQxqDbTQmZemlOZi8YbwnZ9h9ql8=; b=WLbNSWhkPVv5xMzevSDCvPgKdMBLYGL+8+p0r0gb18OWyRVDPoW4bVLKx67pQVJGJlnHgR9G7YqeGGQA6FKH6jhdNdG8X4z5t5qL5tZ/qMBg7e1o/gggVUnX2NKB1gKM1IbkfunJJnOJThljRt2Pc1eQwfZ6gCX8Hc/M9yN5qDw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1767025104472185.93149614383458; Mon, 29 Dec 2025 08:18:24 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vaFwc-0002Ay-6b; Mon, 29 Dec 2025 11:18:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vaFwN-00022B-3Z; Mon, 29 Dec 2025 11:17:51 -0500 Received: from relay.virtuozzo.com ([130.117.225.111]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vaFwI-0005OI-H3; Mon, 29 Dec 2025 11:17:49 -0500 Received: from [10.193.1.107] (helo=dev007.aci.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1vaFvu-00Apz0-2m; Mon, 29 Dec 2025 17:17:33 +0100 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=JLT9uAykIxBsdyhaQxqDbTQmZemlOZi8YbwnZ9h9ql8=; b=nOxuCL+DNquc TuiYWsl+pRrjfWrnvXZKuduu3s7sUAil24hc09HNoLrGOzHLC8WK8VuVVMdtLKEIzrD4YJHEkfiF5 RnO5NuoqBDNR3vhfqv0HTakBqmlg2MA0hjrX3xnRfZXaHcnYCTeu4a0SPDtGlxsQ3cG7D2ZkjaBay 2w7yfsPs4X1SbW+ijdnkMkoHSKHJAh4qjwVuju11SWH58Ugpx/vQxv8TCz34+c33Xb1thpj8bKq3P n9m7chXY9BabcWParnwpm6OFufQu/2O8tm3eA2UZ7ez5ydZy20HQnsItLpNavghbwBwHA2AvpX4WB JZZOss1oZ+bb4f3HiSRgyQ==; To: qemu-block@nongnu.org, qemu-devel@nongnu.org, qemu-stable@nongnu.org Cc: den@openvz.org, Andrey Drobyshev , Kevin Wolf , Hanna Reitz Subject: [PATCH 3/3] qcow2: add very final sync on QCOW2 image closing Date: Mon, 29 Dec 2025 19:07:45 +0300 Message-ID: <20251229161740.758800-4-den@openvz.org> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20251229161740.758800-1-den@openvz.org> References: <20251229161740.758800-1-den@openvz.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: softfail client-ip=130.117.225.111; envelope-from=den@openvz.org; helo=relay.virtuozzo.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: "Denis V. Lunev" From: "Denis V. Lunev" via Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1767025105339158501 Content-Type: text/plain; charset="utf-8" qcow2_header_updated() is the final call during image close. This means after this point we will have no IO operations on this file descriptor. This assumption has been validated via 'strace' which clearly confirms that this is very final write and there is no sync after this point. There is almost no problem when the image is residing in local filesystem except that we will have image check if the chage will not reach disk before powerloss, but with a network or distributed filesystem we come to trouble. The change could be in flight and we can miss this data on other node like during migration. The patch adds BDRV_REQ_FUA to the write request to do the trick. Signed-off-by: Denis V. Lunev CC: Andrey Drobyshev CC: Kevin Wolf CC: Hanna Reitz --- block/qcow2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/qcow2.c b/block/qcow2.c index 591fae90214..c2b4604c069 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -3255,7 +3255,7 @@ int qcow2_update_header(BlockDriverState *bs) } =20 /* Write the new header */ - ret =3D bdrv_pwrite(bs->file, 0, s->cluster_size, header, 0); + ret =3D bdrv_pwrite(bs->file, 0, s->cluster_size, header, BDRV_REQ_FUA= ); if (ret < 0) { goto fail; } --=20 2.43.5