From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from AM0PR08MB5314.eurprd08.prod.outlook.com (2603:10a6:208:184::7) by PAXPR08MB6942.eurprd08.prod.outlook.com with HTTPS; Wed, 16 Sep 2026 15:24:54 +0000 Received: from GVYP280CA0045.SWEP280.PROD.OUTLOOK.COM (2603:10a6:150:f9::14) by AM0PR08MB5314.eurprd08.prod.outlook.com (2603:10a6:208:184::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.5; Wed, 16 Sep 2026 15:24:52 +0000 Received: from WA1PEPF000099D3.eurprd04.prod.outlook.com (2603:10a6:150:f9:cafe::77) by GVYP280CA0045.outlook.office365.com (2603:10a6:150:f9::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Wed, 16 Sep 2026 15:24:52 +0000 Authentication-Results: spf=softfail (sender IP is 99.81.216.78) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning openvz.org discourages use of 99.81.216.78 as permitted sender) Received: from nat.eu.perception-point.io (99.81.216.78) by WA1PEPF000099D3.mail.protection.outlook.com (10.167.242.27) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Wed, 16 Sep 2026 15:24:49 +0000 X-PERCEPTION-POINT-VERDICT: CLN X-PERCEPTION-POINT-SPF: X-PERCEPTION-POINT-SPAM: PASS X-PERCEPTION-POINT-SENDER-IP: 2a00:1450:4864:31::10 X-PP-Forefront-Antispam-Report: CIP:2a00:1450:4864:31::10;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wm2-x10.google.com;PTR:mail-wm2-x10.google.com;CAT:NONE;SFS:(13230040)(3072899012)(43022699015)(12012899012)(2092899012)(6059299003)(82310400026)(10067099003)(18056099003)(19002099009)(6133799003)(5063699009)(55112099003)(22082099003)(16102099003)(18002099003)(57112099003);DIR:INB; Received: from AM0PR07CU002.outbound.protection.outlook.com (mail-am0pr07cu00203.outbound.protection.outlook.com [40.93.65.67]) by inbound-smtp.eu-west-1.amazonaws.com with SMTP id hc9klks0lhcqdgbd974ra4866vb4krrmc449h9g1; Wed, 16 Sep 2026 15:24:46 +0000 (UTC) X-SES-Spam-Verdict: PASS X-SES-Virus-Verdict: PASS Received-SPF: softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.65.67 as permitted sender) client-ip=40.93.65.67; envelope-from=den@openvz.org; helo=AM0PR07CU002.outbound.protection.outlook.com; Authentication-Results-Original: amazonses.com; spf=softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.65.67 as permitted sender) client-ip=40.93.65.67; envelope-from=den@openvz.org; helo=AM0PR07CU002.outbound.protection.outlook.com; dkim=pass header.i=@openvz.org; dmarc=pass header.from=openvz.org; X-SES-RECEIPT: AEFBQUFBQUFBQUFHSjA1aldoZ0JFRlROQ0JlZWRxWXhEdFlLUFVRcDJxVHkwdDdaZE9tSmY3Q3JaV0hRdUpOd2hyRjkyTG1OdHh0dFFXS0NiQ05tWGVrZTNCdHE3QkxVeHBSRTJPWitNM2Nqa1dIVDhhaHFEOWcybVRuZzJYRGJDdmZlSTBaMGZGaWw4VytISlFobkpuTzBWL2dVeE85MkNTS2FuMHdIZkFFcHRjQW1ES3NLaVB4WWhSYUdVZ0VJcTdOcnc0cE1qVC9IYXVlWjZDcTdwbFdLVGhXSEFHTUtZSm5FV05FL29OQmJLSWtybWpNeitHL2VRV3JKelNvb0J3VThVU0JrdzhVWGZhRjNLYU9EL3FZVTc3RTZOd085WkRTMjNsZWd3bzlYaWdDRXVhM1l1ZWc9PQ== X-SES-DKIM-SIGNATURE: a=rsa-sha256; q=dns/txt; b=2CkQ+CEBpNcO2bsYiRS7YwkZHMENFjPFJq7rvFfKcA8OMETfPxxuKdDQCRZoSx11Ip9agewRr0nSiiRe+MYbtm3u3PPiG+vblDO1RW5SfgwE7AKICQ2DasiItd2aNyphpXoyM065DPzPRuwB+AZaalzP3OQphgGb3+M3ceTzBAw=; c=relaxed/simple; s=shh3fegwg5fppqsuzphvschd53n6ihuv; d=amazonses.com; t=1789572286; v=1; bh=EkOys7DmHQiymuxTabBTFy1NLOuhJYFMlVci0I2b1fg=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT; Received: from DB9PR06CA0003.eurprd06.prod.outlook.com (2603:10a6:10:1db::8) by AM8PR08MB5554.eurprd08.prod.outlook.com (2603:10a6:20b:1c5::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.6; Wed, 16 Sep 2026 15:24:42 +0000 Received: from MA3PEPF00000404.eurprd04.prod.outlook.com (2603:10a6:10:1db:cafe::a2) by DB9PR06CA0003.outlook.office365.com (2603:10a6:10:1db::8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.11 via Frontend Transport; Wed, 16 Sep 2026 15:24:42 +0000 Authentication-Results-Original: spf=pass (sender IP is 2a00:1450:4864:31::10) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of openvz.org designates 2a00:1450:4864:31::10 as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:31::10; helo=mail-wm2-x10.google.com; pr=C Received: from mail-wm2-x10.google.com (2a00:1450:4864:31::10) by MA3PEPF00000404.mail.protection.outlook.com (2603:10b6:140::195) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.7 via Frontend Transport; Wed, 16 Sep 2026 15:24:41 +0000 Received: by mail-wm2-x10.google.com with SMTP id 5b1f17b1804b1-49b912e4ad9so6059485e9.2 for ; Wed, 16 Sep 2026 08:24:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1789572281; x=1790177081; darn=virtuozzo.com; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6WpI/w+RkAgzOnrfALZeBWxHn6OB8NwqZN1Iu5WXwGI=; b=kVFeCqnikqqa4FzrLl1HdHUcpy/wLYF4e/BYeIF7UjugeeL9HkHBqeAmjYF/rZwqYk WuOR1tszpcryBfjCm924YNdjKPO7iT+wmJOmn2oZLpmMok2I+OZYTgjDKEMFRFwpggDi spJPoMHUGiDYqRY4o4IK+q3dCVc3z4P9i8F6zFpHI0oh/GxGQB7JM2ypOwjwK0Dnq7Po vwdhWnhFPoghGrASNoQ5nweMPNtGCJiBzYiSg8keRCx3EvwfLcjeTWGe6d2syLd2UYic KNssVSEQptQ2DB+GoIX05J+MjK5zqDBdxzoVfjEivochSQp7mBxTVDCjgrPgnC0Cpgx7 8mGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789572281; x=1790177081; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=6WpI/w+RkAgzOnrfALZeBWxHn6OB8NwqZN1Iu5WXwGI=; b=FduxZTxaUOD9P6rREYbgc08bY2QWhLFFBEqHIzmlPwMI0Sknq8TWxpbna+00SpMVVO uK2XaNvINFkuS6ojK8i/QqRMZ2oJoEflxNLFPvkfyjOMsShXQLqiE8gI365L3R5vRSPs 6UsHZns9Q9RB7Fy3F+r7/avFhOXVjDW/KaNnqu8YR29PjtRtOo/AfMZyZcINX2IRMznS aCaD9CmnJnUKNUeOdmt0M3jE0zfMkMa+zWloyadMibn83vPIg+Jto3tvNuOZ3dC1aG2B Fwx265HaC1uNn2FpOdpuUGrUwHk1bNuvuq+l66f4rCLA29tAXVPMliFGo9JY/sWduUch Ne4Q== X-Gm-Message-State: AFuF++miz5cs2+peEdprivn7GdunNJFgCrYqaQbIfz8Ggs0zjGCu5fqZ 8ojyNWAVyUTqpLiOpSVVDlq84JQa8m9s8tWCI9ALAy6QDRvS0udbOJrr+xJaTRO81SBzQU2SCrw agms8YR0= X-Gm-Gg: AYBFou03ke40zKZfkaS0nIiu3p5A1qZUQQJ4aeIV9zNnP1CekrA+pgFj0tZHgA9zdU6 I9AxCdbGjT2eFRfT+g8gCfhWSfqrM9hNZ6COuacKWULSQjs1ynLC2mEBMRPTPRbHq+/u9n/WrGu 4bqiTKbhsW4fEjHBBj7+AG/gp8CZeQcj5Vwbfqwnxx6iMqR/Yb0qo/hwuq3uFYqOP+zu6O9qjV+ P7eMrc56yUIk0FGUBWVXaZZQuXgiYpv5+q56PUK7yjddWMoUgyikQjcbygZWszVSXksWqUtJtrs bQcnMfy/8xLE2TrulNVP9FLo5lubZoj9TPlHAU5PN+80BuwVRC7B1LZBcH9Et+lW+P4oKdtrho/ AhCtj8aRg1SLYIhE4amSiQir5GIhpEVEvGg6BZ3OtehdHdC3GYkwGsGMhC3l4AJ3FacyP4Ipqvp W7V+YYRogvA0ugjpvgn+pZY3ImTdvZl+NJ1z5ZluWoKCTlV0jLE9ye7jBf8L764kVvF47d X-Received: by 2002:a05:600c:8b8a:b0:49d:1f10:8b9f with SMTP id 5b1f17b1804b1-49eac463921mr44028035e9.7.1789572280917; Wed, 16 Sep 2026 08:24:40 -0700 (PDT) Return-Path: den@openvz.org Received: from athena.sw.ru ([2a06:5b06:b600:300:f56f:c51e:c53f:b1ce]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49fbd0c39dcsm1836415e9.12.2026.09.16.08.24.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Sep 2026 08:24:40 -0700 (PDT) From: "Denis V. Lunev" To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [PATCH hci-8.0 1/5] qcow2: do not clear the dirty bit when reopening a read-only node #VSTOR-140073 Date: Wed, 16 Sep 2026 17:24:33 +0200 Message-ID: <20260916152437.1787889-2-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260916152437.1787889-1-den@openvz.org> References: <20260916152437.1787889-1-den@openvz.org> Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 1 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:1 X-MS-TrafficTypeDiagnostic: MA3PEPF00000404:EE_|AM8PR08MB5554:EE_|WA1PEPF000099D3:EE_|AM0PR08MB5314:EE_|PAXPR08MB6942:EE_ X-MS-Office365-Filtering-Correlation-Id: 057fe1b4-ee3b-4b56-35f8-08df1406a66f X-MS-Exchange-AtpMessageProperties: SA|SL X-PERCEPTION-POINT-CUSTOM: vzpp X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|3072899012|43022699015|12012899012|2092899012|6059299003|82310400026|10067099003|18056099003|19002099009|6133799003|5063699009|55112099003|22082099003|16102099003|18002099003|57112099003; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?ttxZXjmxsrHJGhT6YHSyCnBFBqvPln9Z22WEXGmRmiSW9qESoc4A2pj6Nc6W?= =?us-ascii?Q?cQm0MojgEePZEN/sfJBj0pHoenYbI6quQ/vPnmYrk7z+1zYpfuCz/mtWm2xb?= =?us-ascii?Q?UcIvNe3p8+M7VoIGZu/VUrMy7392Jz7yREYidN4Ecsd7gnHuK8wOAGnwO1QZ?= =?us-ascii?Q?9p/rpFyUZBsuTdOiaW5uA1ExfeyrHpkfqYhxhthv7z3tVva1Wtd59dtcJTA9?= =?us-ascii?Q?2pS23eaoPXf8M8mwIfo8nhZIFSLih2TB77gt77MxKbO+uaNLCf+ODxBfls9M?= =?us-ascii?Q?Bd5ZwPxOV5JES8BpLgMP0J0A3bYz9vZ7hF7s4FTvUsj5tE/DF8MYHZNMvufo?= =?us-ascii?Q?2LmWDMjAP3urOt6E5dLZgBXmVy12O6ZjxNoD/Y5Z//ZxP04I1xB28Z41/9Zh?= =?us-ascii?Q?67l3rB/Tr/isEFMydw8/cbdCI3fSh3g4PE14zaC9w289aEsh1WxMTUdB7Gc1?= =?us-ascii?Q?F1iCARZdat/LKFLH3c4Aj3K1mwFAKewbRCqCDFWGURku5V/WpJcA26gkxFJx?= =?us-ascii?Q?GWENr/vL9qevf87AQ6oUtzHKVYfcPo+2NnQrjrsbhJQ1O2Y0+P+xCA9s/34+?= =?us-ascii?Q?LsFraKyI/Ri5UyTv6sEzhYuGfxqbGVS3Prcb0YzB6+drTIOtSq8B1m/i815c?= =?us-ascii?Q?6Z1j+XAPAVasTcbRdoIu08WwuuDMJqibMQhpsYbBvgxogZyAbKfn+edu8qRi?= =?us-ascii?Q?jM7GSFEXPkgWtSsQVnZo3oZkWVKEgSS0x0yj97/dHlruMw9wmPyq21IMemGh?= =?us-ascii?Q?WLkLIg7Lp1XvS7xv3CLPneJPgzADT22kSARbrh/5+yLqaSjE43/V0L7TIzWQ?= =?us-ascii?Q?wJNfQThH/aXQGFhf0VMVLusK5proWPZeLi6tJbUGc8Lj1vzZCCu3/HWtmP1c?= =?us-ascii?Q?uxm0gABxR+480pclIoXybWCKG/FoHMlfizhUCtVcZOIySwnNNwcxwlltAh04?= =?us-ascii?Q?Za6Go2VVMVoDGYpuB2JecTTG2Z07bnXe6qdprXsEbcaPnrdXRe+xynUgf/RH?= =?us-ascii?Q?9enjSsyPaiqADYC5UHEAM/RMjQeRwiK6vV9zZ1H9h5QSz563DmzWEG6QGSuM?= =?us-ascii?Q?1HWcJPHHS2EWtEidWVKNtOviINOu69ysd27Avfd46sic2hpP7aKCx5SEEvhJ?= =?us-ascii?Q?anhNX2AA3RC5SbYkXeZ61O7Mq7HmAPXVx9SggQHBeadrdz7hqROgBHEnfZu/?= =?us-ascii?Q?ESNoclC4z5jDpqeeNQERsAzxdXUW15bTDruM1bXdrv6orG5UN/zAnZYweRNL?= =?us-ascii?Q?zIubl7u9E++NL97zK10EHG344C054PvNnONc+GX7URMbHAN1ImkffOLPi+qH?= =?us-ascii?Q?EYpUfkP4p/kycp7E3JG4vV52dtFU0hd80KNvk5DCvU7cgr4qsdQtuJd39jo7?= =?us-ascii?Q?JJL8JwS6p2o+wHbAK/Wb1OKv1E2lVkHxN3C7AjwwzvRftmzQz+koYxRfk/s1?= =?us-ascii?Q?cSI/3lldHxxBtrbeYUB2g+Pzy9C1uR9MWgvWimP37P5y6SB7omBCVXcUXg/I?= =?us-ascii?Q?gaB4uoUWvpyb1EV7ym15VIFjF7w56wI47bjV9R27xDzCZqV+mwzO+exVX+zP?= =?us-ascii?Q?PNjq64jPE46DEVnuWt2JHKN0NFxpqBI9k/8yCMG/vHl5rwobCQp7jUiJSxma?= =?us-ascii?Q?7Q6sCh1r+iFfTMkdFQZuxp3ucFZKLpyRwIJiTkrSh7O/EXnB/f31ZvfRHM4I?= =?us-ascii?Q?rb7QxY/IHLbqGAhPAOLtiixGCxsQzfuRY3cWpcadBQFm47wafUvObrMrsb0T?= =?us-ascii?Q?rTzIbWmK/We6uP+MZhyM4yxUCndjuV0wmZTZTHzYHTq9AmaZAxE42Osnd8g9?= =?us-ascii?Q?kW6vo6tkGnu9FVeZh5AcoyYzSQZbusgRdpH1tOTYfaHrqVXysnfVNdww/jsv?= =?us-ascii?Q?1zRBXeOqTaSsHdKdQVBdXmQHwowoBDq4DcPVihlvGGUB10WUkuctunrTgQDn?= =?us-ascii?Q?udfeZKctDEBvBWedAWP2QaxyWzXI8wXdBNYSdY6NJ0TZXfAaNPI7iDFxch7L?= =?us-ascii?Q?krpNW0y/qWaqAEA56DwRmmuf9uV60myfwtPc/MXrTrjfGqMMu/S00BEuXspE?= =?us-ascii?Q?/bTWe4eWpV7PBmRSC20k3P8X4hBx3Dn5K0WzjKt4LNMJlB/3d8gO6SWbVPJD?= =?us-ascii?Q?XgDg9G3Xv2tJZNXawadiQV2PArJxDEUuKVRq6KTwHIj9FjtnskIhn9Siy7h+?= =?us-ascii?Q?GsvwxJgMtwIktXDJtbVNng76tD6Ol9HC8R11Jg=3D=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:2a00:1450:4864:31::10;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wm2-x10.google.com;PTR:mail-wm2-x10.google.com;CAT:NONE;SFS:(13230040)(3072899012)(43022699015)(12012899012)(2092899012)(6059299003)(82310400026)(10067099003)(18056099003)(19002099009)(6133799003)(5063699009)(55112099003)(22082099003)(16102099003)(18002099003)(57112099003);DIR:INB; X-Auto-Response-Suppress: DR, OOF, AutoReply X-Exchange-RoutingPolicyChecked: yQd8LWVedGPhZqcc0yeOGGRKq+MtUPh6vXM3evGbxPV8s6t+j+tWbUEap1cUSF3G94fqrRvFHUUdwZUvo4a7ofwgTEarG049v27/Yk8undgkIrBr7aSyR4Oo7zYOSa60f3W7cqJQF3M3UKBwQdrs2dBSze4WhlX6zSdTY3/Pjz/Dm91/JNpDF6Db8H9KwNhiAe4rQOLqydVRK8PkEO19crh5qTpTVi4n07T7RcksPH0XscEPMPAlYhPwc1CLWVhB7409TVNq4lpWRon2g/UDQsJyG0N6naJiQ0PhtBd7TQhnr9tdhfM6jfxL/HRBogVGsZx9I3WWfdc5nkBhq2ZJCg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5554 X-MS-Exchange-Organization-ExpirationStartTime: 16 Sep 2026 15:24:50.4565 (UTC) X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000 X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit X-MS-Exchange-Organization-Network-Message-Id: 057fe1b4-ee3b-4b56-35f8-08df1406a66f X-MS-Exchange-Organization-MessageDirectionality: Incoming X-MS-Exchange-Transport-CrossTenantHeadersStripped: WA1PEPF000099D3.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Exchange-Organization-AuthSource: WA1PEPF000099D3.eurprd04.prod.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Office365-Filtering-Correlation-Id-Prvs: d88ea452-f69d-4e83-3a8c-08df1406a134 X-MS-Exchange-Organization-SCL: -1 X-Microsoft-Antispam: BCL:0;ARA:13230040|3072899012|2092899012|35042699022|6059299003|43022699015|82310400026|12012899012|16102099003|55112099003|22082099003|18056099003|18003699003|19002099009|10067099003|5063699009|56012099006|5133699003|6133799003; X-Forefront-Antispam-Report: CIP:99.81.216.78;CTRY:IE;LANG:en;SCL:-1;SRV:;IPV:CAL;SFV:SKN;H:nat.eu.perception-point.io;PTR:nat2.eu.perception-point.io;CAT:NONE;SFS:(13230040)(3072899012)(2092899012)(35042699022)(6059299003)(43022699015)(82310400026)(12012899012)(16102099003)(55112099003)(22082099003)(18056099003)(18003699003)(19002099009)(10067099003)(5063699009)(56012099006)(5133699003)(6133799003);DIR:INB; X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2026 15:24:49.5776 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 057fe1b4-ee3b-4b56-35f8-08df1406a66f X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: WA1PEPF000099D3.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB5314 X-MS-Exchange-Transport-EndToEndLatency: 00:00:05.3598544 X-MS-Exchange-Processed-By-BccFoldering: 15.21.0451.004 Content-Type: text/plain X-Microsoft-Antispam-Mailbox-Delivery: ucf:0;jmr:0;auth:0;dest:I;ENG:(910005)(944506478)(944626604)(920097)(930201)(20251009189)(140003); X-Microsoft-Antispam-Message-Info: =?iso-8859-1?Q?XrJht2xgNTaqP8QlX7daMWGNMmgCB+N7ZVn0Rfwtxz2+idXfB6iw9hz8Yo?= =?iso-8859-1?Q?UnHNp5C6TCY/6KEVLynZNv8lmuZiImN1vPKH7KtBvmmfLWfoA8LlIyRBJb?= =?iso-8859-1?Q?BwAX/unVNc9Atg1DWnTpvoUJ35AZbdXKN1vRKtM+JlPAXxvSxOCRQuevyN?= =?iso-8859-1?Q?83EbqiNwfBS/Yv+/Ufww08RiYfVP3Mt184mw5hLk7e4Bkh6WYNhAw2bJli?= =?iso-8859-1?Q?E+f+DuCNRjuhhxipryP9NUj+OisuktIJJcc/qF/hBzfI5MCk7UwuDRhnhR?= =?iso-8859-1?Q?h56URn3ACn933HbH9nrdZzI2i6Bfi+nfS7H5tpQ0YZTtQEeLmkolYyPWmQ?= =?iso-8859-1?Q?p5WHgSEdoc/BrMdvvGEJwSmAy6XAz7o6pfheMZnbbeyKQkAN8QnywZ8geq?= =?iso-8859-1?Q?RWpCNh29Ty72nHiQoEL6ADQgjJJuFcjR/EYyXbUzliy8oVSW+kdGZg/LtK?= =?iso-8859-1?Q?6U87qJSVKDgwRYXk8wxeuS7KrzErYvhrPyidxOoy4cXgqUM9kEHZDPmEVD?= =?iso-8859-1?Q?bdSiDAJR9RPjh+gN9bRMzFDpZ4trqYH2vIob5pp0yzZhLKdwObkXuuYO6y?= =?iso-8859-1?Q?R76VbcmmsEdscUOb/+is8yntDnTR5xY+BlfEY4UwJJBZ7xeSoHOEI33mAN?= =?iso-8859-1?Q?YCf0qlHy4mixjyb5xlhNK11oYMwNunhkQoNSdoc29nnuTEfnGNzxxoJVAr?= =?iso-8859-1?Q?Gjo6m3+36XW+DzFByPffxv064d2NoX/U53LOPfV4IjTAPSYGFCKdC7KKzq?= =?iso-8859-1?Q?sV/KU+8HH1YdtTsIiKJcd3aR42LpBKiQ6QjlmIyvSXuEVpzZmZVVcgOhGY?= =?iso-8859-1?Q?vqsYF7nOcgS7PQiZTl6RYVV4bcv8Wa3y9iuCMGBSww8S/lLQ+ERgQV+ltC?= =?iso-8859-1?Q?hksNOskCx2U3zRgpsbIlsEC555P6wkMhnzhcexK9HyMMdPZV3Az/1CbQL6?= =?iso-8859-1?Q?LHCyoMzCTOV12rBSa/4k0TENq+8rJfV10NPIA8D4gPp9co5e5Hbo9+GQv2?= =?iso-8859-1?Q?HdmWb3cW4RbTC++E/buxVP4UAyufDFNie4Qw+JwdYhryezklPN42neqRwW?= =?iso-8859-1?Q?UTnfYAfjiK27EjEcrlyGT+BaT/DLA6jjkePE2sNCa2s+UdqGUhz6DW1T+Q?= =?iso-8859-1?Q?s8u2IJkgRLq7cl4v3DFOCo7gad94iqziY6kV4Tp+L0JVjkmAij70SwELT+?= =?iso-8859-1?Q?pTHNZLcdUeEIDx9F+Kw5WHn+2kjwQcd6OGHan2VK/mvU64hgaC+mpylP0y?= =?iso-8859-1?Q?P/OliBVdlSQs7ud4Mhe3EO+yH6BHh+FIhUzq/Y1LHgGK7P6LdQPz/o6vqx?= =?iso-8859-1?Q?C8/tAOTz7pBsqgEiMEZoToh6RgxB9MwfAuXEzFcJ+jOLPyJjf593AJNMsd?= =?iso-8859-1?Q?swhU8m8B+5ZvRmUm7x1arHtXeDBPzTJZLy7nnGkutbU6ISBUVrx0KSeG5S?= =?iso-8859-1?Q?UEhD6TtsKbYIev6rB9eR2yuKQSYGkGjglSb23Qb0mmP69HJ4uywK5kNWbY?= =?iso-8859-1?Q?8qJsg+a7hA6GcXExDGLf2YsgkecFtpTmOJdjnfWWlkba/nYGnX+Zie9Q8X?= =?iso-8859-1?Q?e/hNq5dtfHgHftnlR+8ppH74SV+fJBw6jli5OsuMU34qTHSHqGjwvgAhSs?= =?iso-8859-1?Q?4RL8eEMd2T7vgmNsrnJVMpbTBKiQo5hHwGAro9ZGXDZr8+QpZqTqh9I9rF?= =?iso-8859-1?Q?iDAZJz2IhRS44jPsZ/ebGOLISBonBkFzUU+8WQUA8FuCKCELONuGYzVUEN?= =?iso-8859-1?Q?bztdqqvWgYWyt6b2pUoSzifV6IVjIVo+ftEZIjOBUME5Hs7K+tEzK+4PKM?= =?iso-8859-1?Q?/19jZw9GoJF57TdjMZR3jn8BSaooiMQAtXAPLSlhH8gNdLgHRE0wPwLKa0?= =?iso-8859-1?Q?cnTfzyyeyAkG/rjn3gLoC5D7Ii4LK9cjx5Wk7HiCJ5FoYCzMgrB9bd3rsS?= =?iso-8859-1?Q?B0/RJKqMKOzKT+LQA+C/Ox51WL9liqILSgavjUJAGvk1pWIFS93dM26cnQ?= =?iso-8859-1?Q?biqSMZHiyg2A1h2XIMOQtLAkuLWKwrdwy98Jb/oy5pVaSjqRXvB4IPVG/I?= =?iso-8859-1?Q?LDOW92g8ZQGpQV9yHSqEq8aYsUf5bPvPoVl4P9ckYq2M+FkmEfi1h6spQH?= =?iso-8859-1?Q?C7uVjDh7atOfxAHR9M99Shj6lIazkmmRLvOPjYMn6ncrgxg2US9aD1Pn5z?= =?iso-8859-1?Q?boCF3JqEKmHt0hmSNwtihxSjbYEavImQE0rn5cgKttl6P6Al24kiNfZDkB?= =?iso-8859-1?Q?gRpAt6GuLLWy4uv0xkKAM762zBbFfyeNg/ejH6ectnsgIdCdXfIZohFJeP?= =?iso-8859-1?Q?yrctyu5i3TlqisXimhdP+Mt8h1lhz8OtkeF2tLWP7OVnlr4/6XsmL938ed?= =?iso-8859-1?Q?RLr4ukEwVOft7efIGGV4vIj1lLbKFIqSnPkvASdqVLT8pdzs2oAmj/4fZH?= =?iso-8859-1?Q?eMgpll5e6sBnIuZO9nkAANMBpptfbahxDxKNCDX/aim6ZCaDMM8s4JuvCw?= =?iso-8859-1?Q?LUki6R71D3Esq+5b9W2y+8QV/2yRVIFRt8JQM4n9SicHs9+KRIktojAH4b?= =?iso-8859-1?Q?vRzDEDjslahf+MlkWLPU4oPlTeCSqFcbl5kCIUJJFae66MHyTLh92AS7O7?= =?iso-8859-1?Q?zAkev9yuPcB4uOplRAiyhnN19Sm2qoCWH+ywAxm+uysha1sEwqBn18yMrN?= =?iso-8859-1?Q?868dHa41Mcthey6sL7V5I3kbZMUaUUOxdAvVTevvy86AzbYn0suHk8kGIZ?= =?iso-8859-1?Q?Ok99h4kpFjuAJvnUNX3Wbb/K+DWov4nBoN3duuEysXcS8V/evGY5XhGn1d?= =?iso-8859-1?Q?/xIn+yk93byo/Y83Sis/9ihYeyCyzU8EZdJV8opMX2TPueqLsV3l2BNEfk?= =?iso-8859-1?Q?EIkHOPfUgdxBWucyt222OPnkHIjRT45Ti2FF7Rcwj3P/RhvdvEZeavvr8A?= =?iso-8859-1?Q?ocAiebgiI1Y=3D?= MIME-Version: 1.0 List-Id: From: Denis V. Lunev qcow2_reopen_prepare() clears the dirty bit whenever the node is reopened read-only, with an unguarded header write. A read-only node can still be dirty, inherited from an earlier writable session, and it holds no BLK_PERM_WRITE to resolve that. A read-only to read-only reopen of a dirty image therefore fails outright: $ qemu-io -r -f qcow2 dirty.qcow2 <<< $'reopen -r\nquit' qemu-io: failed while preparing to reopen image 'dirty.qcow2' Where the file node below is writable the write is not refused early, and bdrv_co_write_req_prepare() aborts on its BLK_PERM_WRITE assertion instead. Clear it only for a node that is writable now, the predicate qcow2_do_open() already uses for the repair. bdrv_is_writable() also excludes an inactive node, whose header must not be touched either. Signed-off-by: Denis V. Lunev Reviewed-by: Andrey Drobyshev CC: Kevin Wolf CC: Hanna Reitz CC: Andrey Drobyshev Cc: qemu-stable@nongnu.org --- block/qcow2.c | 8 +++--- tests/qemu-iotests/039 | 50 ++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/039.out | 20 +++++++++++++++ 3 files changed, 75 insertions(+), 3 deletions(-) diff --git a/block/qcow2.c b/block/qcow2.c index 34498078f5e..3e0a219e156 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -2190,9 +2190,11 @@ qcow2_reopen_prepare(BDRVReopenState *state,BlockReopenQueue *queue, goto fail; } - ret = qcow2_mark_clean(state->bs); - if (ret < 0) { - goto fail; + if (bdrv_is_writable(state->bs)) { + ret = qcow2_mark_clean(state->bs); + if (ret < 0) { + goto fail; + } } } diff --git a/tests/qemu-iotests/039 b/tests/qemu-iotests/039 index 94a8bfe754e..3d0c073d65d 100755 --- a/tests/qemu-iotests/039 +++ b/tests/qemu-iotests/039 @@ -95,6 +95,40 @@ $QEMU_IMG info --image-opts \ # The dirty bit must still be set: this open never wrote any guest data _qcow2_dump_header | grep incompatible_features +echo +echo "== Read-only reopen must not clear the dirty bit ==" + +# A read-only node cannot write the header, and must keep the dirty bit +$QEMU_IO -r -c "reopen -r" -c "read -P 0x5a 0 512" "$TEST_IMG" \ + | _filter_qemu_io + +# The dirty bit must still be set +_qcow2_dump_header | grep incompatible_features + +echo +echo "== Read-only reopen must not write through a writable file node ==" + +# The write the header update needs is refused by the permission system +echo "{'execute': 'qmp_capabilities'} + {'execute': 'blockdev-reopen', + 'arguments': {'options': [{'node-name': 'drive', + 'driver': 'qcow2', + 'read-only': true, + 'file': 'prot'}]}} + {'execute': 'quit'}" \ + | $QEMU -qmp stdio -nographic -nodefaults \ + -blockdev "{'node-name': 'prot', + 'driver': 'file', + 'filename': '$TEST_IMG'}" \ + -blockdev "{'node-name': 'drive', + 'driver': 'qcow2', + 'file': 'prot', + 'read-only': true}" \ + | _filter_qmp + +# The dirty bit must still be set +_qcow2_dump_header | grep incompatible_features + echo echo "== Repairing the image file must succeed ==" @@ -108,6 +142,22 @@ echo "== Data should still be accessible after repair ==" $QEMU_IO -c "read -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io +echo +echo "== A read-write to read-only reopen must clear the dirty bit ==" + +_make_test_img -o "compat=1.1,lazy_refcounts=on" $size + +# The kill keeps the close from clearing the bit, so the header shows what +# the reopen did with it +_NO_VALGRIND \ +$QEMU_IO -c "write -P 0x5a 0 512" \ + -c "reopen -r" \ + -c "sigraise $(kill -l KILL)" "$TEST_IMG" 2>&1 \ + | _filter_qemu_io + +# The dirty bit must not be set +_qcow2_dump_header | grep incompatible_features + echo echo "== Opening a dirty image read/write should repair it ==" diff --git a/tests/qemu-iotests/039.out b/tests/qemu-iotests/039.out index c66361128f6..ce8ee577216 100644 --- a/tests/qemu-iotests/039.out +++ b/tests/qemu-iotests/039.out @@ -27,6 +27,19 @@ incompatible_features [0] == Read-only open must not crash on close == incompatible_features [0] +== Read-only reopen must not clear the dirty bit == +read 512/512 bytes at offset 0 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +incompatible_features [0] + +== Read-only reopen must not write through a writable file node == +QMP_VERSION +{"return": {}} +{"return": {}} +{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false, "reason": "host-qmp-quit"}} +{"return": {}} +incompatible_features [0] + == Repairing the image file must succeed == ERROR cluster 5 refcount=0 reference=1 Rebuilding refcount structure @@ -45,6 +58,13 @@ incompatible_features [] read 512/512 bytes at offset 0 512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +== A read-write to read-only reopen must clear the dirty bit == +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 +wrote 512/512 bytes at offset 0 +512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +./common.rc: Killed ( VALGRIND_QEMU="${VALGRIND_QEMU_IO}" _qemu_proc_exec "${VALGRIND_LOGFILE}" "$QEMU_IO_PROG" $QEMU_IO_ARGS "$@" ) +incompatible_features [] + == Opening a dirty image read/write should repair it == Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 wrote 512/512 bytes at offset 0 -- 2.53.0