From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020141.outbound.protection.outlook.com [52.101.69.141]) by lore.virtuozzo.com (Postfix) with ESMTPS id BB0AC802E4 for ; Tue, 1 Sep 2026 15:50:58 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iWGcpAREUs89mieyaaO1IASOGLjKPyAbKIEtGWljXizl9zFcnEtLMixycWgk8StRA7vpS6lZa14UIRGxMxn+djExn2gkf3zPlzLeU4SKZsttu6XTHIzD0DAcPNGqzBynWuNRD1+IrQIa/KR2+MwrxEVQqFKZr4D/Y1fts4NcVdM4pC4Q7h7osfbDfOPTmlX8jHpjvKfcRJgAFP72tP95Hr7AOOd4wdTzS/rHXWFrZvXBklmNTm0pxeSDA7/lQxieYFJQyXIpp2tl6L1Z4TyVqGQNYMEQj1JnT3hr/f7goU8EaJnhs0RlLml61Ugyi8wcVA40BuLznNOEPK6tLGYk2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/i7KPLkBrZjtXsRodduQR7diO06T6sqyJXYKUm9nn3c=; b=RZuI+sEXfHNz/NwYA6hIUAazZsF2L6JL6k1XX/4PAXOH9tJB2eynzysrNgORWwUyQ55RcVSThnePmibBwstXeMUIVIIJxPSPRnTL5T1MrdnZQ4OtMbnkqjMAesk6zENyIVcYKLTs0CYQ0ZcA8movi5vCDOkDcKd5lO5Hrc1GwaLHFN0rtYfRv7yyTfauD2M5dhnugRWsOMeEjp+R3RXhRqjGaLYFZQiVZ+VEl6EX1om+vAU2qxStFpZLmtnqAOJkv2L0J+l/gYMN+btn6W3VQKf1AkoTHDntJyyb7YqiRErqoNrAjcBPtm3fz5+XRD7M9MMCiKDt0pvhQvGaIXxLpQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/i7KPLkBrZjtXsRodduQR7diO06T6sqyJXYKUm9nn3c=; b=fIGU9grX2BsEBG8kkiJG4Nt2w+g6Nuk8VLchfvbuu1Uei0WMcTt1wpAGkQkR1NUGkGp2XbxlMQsOklOENQo7Ip1H6TC62eQvwuYHUx/2YdGARmLoFf8NDH4ghgtXQegiLnYY4m3eGUe4tBb/fnpm4yF/BTDzS+LyCsVRwsec/TGAHDVVStLE0GFN5ZauF0u9NKJS5upf9bU5z+3sFgKLi53g20DRbIdUI/gCeEB5/4awfsN35bjdtlhmyyuetWNwI/EQ7zop3erU9NvAKfN3PSxiKsFElK2NEf8CkIZKJTEUKeCAI1PhTFZmA30f42csP0szKHvaO318Z7Kf8e5fvQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=virtuozzo.com; Received: from VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) by AM8PR08MB6610.eurprd08.prod.outlook.com (2603:10a6:20b:36a::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Tue, 1 Sep 2026 15:50:55 +0000 Received: from VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8]) by VI0PR08MB10656.eurprd08.prod.outlook.com ([fe80::4e37:b189:ddcd:3dd8%7]) with mapi id 15.21.0382.007; Tue, 1 Sep 2026 15:50:55 +0000 From: Andrey Drobyshev To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [QEMU HCI-8.0 PATCH 6/5] VZ: iotests/nbd-commands: do not depend on cluster allocation order #VSTOR-119829 Date: Tue, 1 Sep 2026 18:50:47 +0300 Message-ID: <20260901155047.461396-1-andrey.drobyshev@virtuozzo.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260831152528.1350583-1-den@openvz.org> References: <20260831152528.1350583-1-den@openvz.org> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: VIYP296CA0004.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:29d::15) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AM8PR08MB6610:EE_ X-MS-Office365-Filtering-Correlation-Id: 78823ea4-f4ff-4448-b239-08df0840ced7 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr List-Id: svt-core@virtuozzo.com X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016|23010399003|52116014|5113699003|22082099003|18002099003|56012099006|3023799007|10067099003|38350700014; X-Microsoft-Antispam-Message-Info: aKOU2zKPAT26Qj4WwX3LPsq36+sl1AaI1YHMuvBuDkRDk51Nu5v3Cl2TDjpauCtLMFaVldWTlhWcvaKDiIzLxafXRiu0jMBh0cD1kzHBPMJFQ0id/e/+0nwW8uXrs+YBvx7vxzKclkQjRbByNR6zA+8Vnim8C1Tb81NzGRaEw3/kUzIZ6EnkzIW8vl6CPxDeANjdtJMD6FDK89RoyKcznEPMGh32pa0CGu9HxxCUA80H+3Jgphk907Tt1CtMy1Uj7lVBanJXyDfMbOH1SOn0RyFR6//EI4N8XYAW0EROxSDI82v0dJ9k506K2lzousjSPyWJhYPmFBLxtgzQG+LCENj5/1UuNIU2YxTW31Ap4D7OHsYsmwEMtppJItEkNyBeuu/SQiCYU795G6eElm/oJf3DUfWgExQpkrVCaEuFEwJpeQ+StGPKSk0QV8bV8xgoWBdFxXcnlOOAc0zwXr9SAmJkdbPYmxSFrsSDgENllG7zjv1Zvf75d3YGecNRJTc65Uq/3R41QLpfv8D9ja8prUlUwKUaiwbjEwKf55WlkWX+OX6kYlCFUFJRZFFR7GmaOrPL/01apzohyQB4ezksRQk7+dGaiCFqlDbQcIeYHQET9eTmn1NqvLvBYwQdYSs+4fJ7XwgP55a2BV/dzNRoPq4drST7N7owN6gIjAps15+4/3rgK+CwqgCImmyEvVgH6sE3ILg2Bd0gWP2VUId+XUd5gkeoA+iIBBufFuM4wp4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI0PR08MB10656.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(23010399003)(52116014)(5113699003)(22082099003)(18002099003)(56012099006)(3023799007)(10067099003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tNoG4AMVE+YecGySosN8xTGE2FlH/PviaHb3lxzaQMcDZ7W8UEv1TzkkHMwX?= =?us-ascii?Q?eMdsYZEWXwSuUywJ3IJR1sXp+WQ3HaI+dIEdH3rxgVUaLj1d8ky+Nne43nuk?= =?us-ascii?Q?jUyU0uP7U0ZRHf/0v1MPapyupsp6/oP3w7VtSarKG1xf2cubNHfaiw3fXV2/?= =?us-ascii?Q?5Uvowx3Pmxs3uFM/htfu0UKI5onnMNx8fgMVhmlUwwahkxChQ+hLHP556sBz?= =?us-ascii?Q?Bu9ogqWitf0Qc5LZsEkq6Hnhzlm951oo6lroITUiyIgzMUbb571iPySPgAXJ?= =?us-ascii?Q?2A37Y1fwalS8FyOcakAG0yoEt3R0fj0vQMylnYpAaAc+hiQDFzGsD1xjCqnI?= =?us-ascii?Q?U+SEg+lS64LUlorWlZ24kw41KR1WZ9aOvxJ90b3ElCwEHc9Fztru+pbj7Gtk?= =?us-ascii?Q?DC+YcCay+lZ0YGiz18s6JS/zdFXyHAk1rTLrfNMaLiyK4JAZ32Wps4fgOlSG?= =?us-ascii?Q?GziKnBUTcVsj2+f3RVsl6aXUpFdPLB8TNNuUW9hChND5r6mVl6Mzfblax5Uf?= =?us-ascii?Q?9+eC/1qFM8iBPqimGeWT/iM/hgaI02On0gc8ym7s2KaxVeGI+2Z2zZPaXCpi?= =?us-ascii?Q?azKz6Ebw1hiMUhMzkvBZoVDFDTY8/GcvjiOzV9GevOSOiyiVK5h7eTuBZE3I?= =?us-ascii?Q?kP+flaY8crEJ4l5wR1bTF9W3uKrzFe5SvYlREssBWbOlYrPNxpy4cwqyx1Sq?= =?us-ascii?Q?Jd4coNSphpOmqEsNSRbgrSIH7sTwIA2RvE3YL74xWohmdxGh1cXFceOxyc72?= =?us-ascii?Q?9Nw9qATRFlfFHsVNXXQDlveGdn5dZGA9gJ+XPn1aFMAjVzifTnapvKJosnBE?= =?us-ascii?Q?Ct6s4gLJ/0OkyiKYXVxznijAKtJ0WFm6pPnZWTZ+yrj9wxrnRF2mrfj36/K7?= =?us-ascii?Q?SdVO16+ByPU20R06u1Sjxjs3Siw3gElnDa3nRffeDkH7wR344ggid4GajKPO?= =?us-ascii?Q?RaCPmHfx81sVQ9WBglua7OcHKuORPkD82/6X2Uk/Gv9uQALKkc3sPaTtV4do?= =?us-ascii?Q?A2P6C9/Pnz7g4SPIiGO6T61GBQYYnVUufohwBAsDCkDKTKTZpvavvrA3M482?= =?us-ascii?Q?8yYIyKsRXA7T9AVyGH073XwdWg+abmFpi1ZtR9X8TtclbbNVUQLTBYRbv32C?= =?us-ascii?Q?YjNzlu15wa224c7UnKHTCNBLIJl5l0Gdgu1zHI85MkV8b/zXAoH9BrryNHuz?= =?us-ascii?Q?t+YlUbBWdbr8hObKQbYGZnA3apQ/wRSiNrxzKrOSTh9UPZx8Q5xtc4DaT6QC?= =?us-ascii?Q?0zjfvxcdW4czE/0HTQfdFy0CcaDr/sYpQD/zn5PLe3u4/MYo+AIHZbFk9fR8?= =?us-ascii?Q?MbT/xN7cJf1CSIEEsIQ9WBRlihgs9tN/sWWTGhH0OfCZlonD5lGpcULGU6NJ?= =?us-ascii?Q?MIgqQ0qw3ypuvCdZ5Fi8Zg/OG5kbOemc8I7n1Q6qTY6hwBQciH/mhNNaHBum?= =?us-ascii?Q?jyUu770PRNkq7FPch22HsLAZioYz1kBmh7NitvSOt1uHJtqbkTZSv0jOvPz5?= =?us-ascii?Q?NAQm2nIzv0Jp+oYa1N9z0enwN0ZvQnEqcqTJzsvcdYd9oRtQhpU8mXp2vmlV?= =?us-ascii?Q?veYbYgMVGWUOsdlnb1KzJAwx3tU+GNFMdUFTACdHMm4KEq3Z5X4vnYzWWtPW?= =?us-ascii?Q?iSTfgzGu9Qu6jVIuJD4zN+igFkEutaqSx/8QDTErpgVij0R+4oDNKwpRgeaI?= =?us-ascii?Q?a9hrcEQscXIG9/3C9/6+Ymuk3lycgN+fjo0elEuLN+VqWbI5Kk5BVxSJl8JZ?= =?us-ascii?Q?tiFPnUwAggBHumBma7eIpsmf1pkUX28=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78823ea4-f4ff-4448-b239-08df0840ced7 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Sep 2026 15:50:55.2729 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UOEhmYIxHDWY/iE0a6waLPdSMociiL4/jPQIoVfHMvIQ0PLjzw4HNGKH5eEojRyP2l6ar71J7KdHKqqj9sTq1T4UzIEVM45dzv/wuyQJQXs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB6610 test_cache_copies_on_read compares qemu-img map output verbatim, but map only merges neighbours that are contiguous in the image file. Our copy-on-read runs its 16M chunks concurrently since ce4a1338cf7 ("block/io: copy-on-read: use aio task pool"), so the two halves of the 32M NBD_CMD_CACHE race for cluster allocation and flakily land in the file in swapped order: OK: {start: 0, length: 32M, depth: 0, offset: 327680} FAIL: {start: 0, length: 16M, depth: 0, offset: 17104896} {start: 16M, length: 16M, depth: 0, offset: 327680} Same data, same depth, only the host offsets differ. Merge adjacent extents of equal depth in top_extents() so that the test compares the guest layout, not the file layout. Signed-off-by: Andrey Drobyshev --- tests/qemu-iotests/tests/nbd-commands | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/qemu-iotests/tests/nbd-commands b/tests/qemu-iotests/tests/nbd-commands index 4c1cd33db74..9a4a0d1ecd8 100755 --- a/tests/qemu-iotests/tests/nbd-commands +++ b/tests/qemu-iotests/tests/nbd-commands @@ -105,8 +105,17 @@ class TestNbdCommands(iotests.QMPTestCase): """Which parts of the top image are local, once qemu has let go.""" self.disconnect() self.vm.shutdown() - return [(e['start'], e['length'], e['depth']) - for e in qemu_img_map(top)] + # Concurrent copy-on-read tasks may allocate clusters out of + # order, and qemu-img map does not merge neighbours that are + # discontiguous in the image file. Only the guest layout + # matters here, so merge adjacent extents of equal depth. + extents = [] + for e in qemu_img_map(top): + if extents and extents[-1][2] == e['depth']: + extents[-1][1] += e['length'] + else: + extents.append([e['start'], e['length'], e['depth']]) + return [tuple(e) for e in extents] def test_cache_copies_on_read(self): maximum = self.h.get_block_size(nbd.SIZE_MAXIMUM) -- 2.47.1