From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AM0PR83CU005.outbound.protection.outlook.com (mail-westeuropeazon11020105.outbound.protection.outlook.com [52.101.69.105]) by lore.virtuozzo.com (Postfix) with ESMTPS id C36B18125F for ; Wed, 4 Nov 2026 13:45:51 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yCKcQjvOwAtCw4AlXiX+m8TQzR+rNllBN0l9OHiLqcTrL+c7UCA+agQDUija00kBid9Prcb8F0Om2BYZYyuO002rV+wKGJL3FzYfsvQbDQeFicz+qYooU0//yXxf0NSl3bj3BZfrqcGbsXauet9OcIo6Y0NUApisZah5UFGqzjrjVUJrqOOJPUV9DiUXjXUHYPIF3W/eNaKmdfyh1Dc+1NvXsi67bjJRQZC2R6m834Wjp5swNJDOQyPGSNfh337AG3jmzfCQtTm3Tk6iSeUXZFEWkwXAZGuQif6BnIDz5B9icfFFPRRDr0ojCj4xtyjaKV/ItsY72Zfea2xwvEcesQ== 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=B1dPx6FxrK31CMqVTprytfsw1G85S3eDCzT1uOSmlII=; b=LetNTraHZZXrLSGN236BEWEaxYqD290TMV+g6VySkS0+Myg4hx9b4DNvKGPh6x1S2JcQ6slTlT24vLsISPOc0TPSy2GR6JYMjerzesJOlIctKGQEk4YXNMCsO/WA5ACeSsxidYCJ6GqbTbXlLRtS5PCzh7SK1BOvGZELWHtHA1GlfhReOUBtGddZcwn1OwEwOp1QonuYr46DdwICZoSIP+7y7b2UyGXheKvEyVj/qLR7t6mcfbWxQnzB303/B5/i82vhow2R4WOKjTicb8f6XmGOP1OfCPhshSc10pIrc9GJlxLMT4pmI5L5psgYKaCfGGVDv4o34YqUYhufVCqB7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 2a00:1450:4864:20::429) smtp.rcpttodomain=virtuozzo.com smtp.mailfrom=openvz.org; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=openvz.org; dkim=pass (signature was verified) header.d=openvz.org; arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.onmicrosoft.com; s=selector2-virtuozzo-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=B1dPx6FxrK31CMqVTprytfsw1G85S3eDCzT1uOSmlII=; b=N27NSdX8Zdu45mCH54PSUivemWM/ygKJMLnkLhkyHAlfEZH2h5uuA7QEUsVZCPvrYc7Ir3K1PbSY0uoXtcysdBChoL8o/lXFgwZd3hFJv78T9Rd636XT1N7gy/mzp3m+nJ5EIjsIo5A2ezDkqjPF+an86XVo3bdxpSnc0MNcRL0= Received: from AS4P250CA0009.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:5df::10) by FRZPR08MB11217.eurprd08.prod.outlook.com (2603:10a6:d10:138::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.569.12; Wed, 4 Nov 2026 13:45:48 +0000 Received: from AM1PEPF000C1AD9.eurprd02.prod.outlook.com (2603:10a6:20b:5df:cafe::3b) by AS4P250CA0009.outlook.office365.com (2603:10a6:20b:5df::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.10 via Frontend Transport; Wed, 4 Nov 2026 13:45:48 +0000 Authentication-Results: spf=pass (sender IP is 2a00:1450:4864:20::429) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org; Received-SPF: Pass (protection.outlook.com: domain of openvz.org designates 2a00:1450:4864:20::429 as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:20::429; helo=mail-wr1-x429.google.com; pr=C Received: from mail-wr1-x429.google.com (2a00:1450:4864:20::429) by AM1PEPF000C1AD9.mail.protection.outlook.com (2603:10a6:20f:fff8::258) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.592.5 via Frontend Transport; Wed, 4 Nov 2026 13:45:46 +0000 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-48e20edd106so502571f8f.1 for ; Wed, 04 Nov 2026 05:45:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1793799946; x=1794404746; darn=virtuozzo.com; h=content-transfer-encoding:content-type: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=B1dPx6FxrK31CMqVTprytfsw1G85S3eDCzT1uOSmlII=; b=Irt1q5yQcVNkdzYE5h/iBcuk1IPArZ5pSEmx4KwTTvDN3SpNlVALhP+rcKTDmZuNVc IeZj9g5iVtGb+nzIp6vCfCsw80uTx2XrdveW4VqfK5FwRIt2EEgeXm3JTdIaHabBBB0f AJoVYOFdRaV98CbzV9Ts2aXpW500Dp8LAUHjlPWkmVc9BDb52UPzEXhHnul1ZPEkf98F R8r19IqVbuhbDeHL4nUcMIYt0++6VqN+skK/Upt1ezmzHt7IcmjKkLEysnyI4ptVvlQr 2BLnhqYD25cUnVeguh8GM9v6G33MvlCR1tMZbmSBP0SihWZH82xu5RzNbaE7YT7cZSUo IdcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793799946; x=1794404746; h=content-transfer-encoding:content-type: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=B1dPx6FxrK31CMqVTprytfsw1G85S3eDCzT1uOSmlII=; b=vEzcH1WYJDFga/RdL4ILkWf0suz0xD1AahBXYBJBQG343pFZAvWagEaf/h+BNNHr7e RmMum4JwGOdSYMuRzHkfCLxiSlTdOzXkwigV+yQSZhQVq9rjH6DwK3bpFz5ekXoMu/0R WRIUFEgipoNuXkPlCu6X22+03WTlI2moiMn7D47y6hTxiLj1XYuQ0V/sl1GSCy01HMF6 nHP+wm+mpggsIa53OiiH7JfJciODziaiy1duSc18awG8YqFYLxQz6QdRcDWwPM2Ex2bL q4lZ17+ViwP+dcDDOyVSdV69uimYViJ+FTn4dFXmtZLzOMQnKtE/q7+r2nVf9Uih8wW5 /shw== X-Gm-Message-State: APuU4Z83/fiH0QmJziT1HmUQr+RuWzH5Oo3TGy3a+Mi21O4AHWWNkfke f0CX/5OiLfbncDWi5oRyjhb9tf+1uJx84VHtOC0hMzYNsky/Tu5Y4z3/iHNPIBabq8FFnA== X-Gm-Gg: AYBFou0Z/ryADZYBbgw0sAE4fYJzPOV2h/zdauLDljO9TyhGq6AT3w8qxzyaQqxkns9 6znCafILrrzu2dnUkXVFkQ7V6aco480io94PaH8l9j2HQskZHKL6m9MLX4tNrH6Kg1x3stKCVbu tFeLCCN2AfcU8yKtGKjw84dKqHhTm+pqYLLOswx+dqOwNwm8gY13cb+CuTIcMPkdPip8peEt+8b 4mLxSDyDKVyouMj06q392a4T1tkGLno1fnBeRZLDD/DjeC/pXri2inmv5LsrZlJTiQ9yQkdwtkd jn1OnZw3FdBh52i0Q0ANHiWOwCyPytZDXSa5OQAw8J2ybBBGtuuhOFwqvTsXf0JWO6rB2y+w+vt mdG8w5zD7zqwg+o1kPE711gHEDinbw5N6/sa5G5Xs57D9C9BtFq3JqvPv9kR1r5f0JXDFX9VMSU hSHhoWQaZHhzR5aElRPVL8hUjvdgB0X06ZaLgzVc+CU6pVg0in87ucb/KhL0nkrr9CQRTDhQIjm zEbMbUF5vU5zn7zlr6vwBRiNYnNH7csq7T6ree7iP6Ag0nXOfG29ZMq6BNvdwgHBtnvD1e/ofVI aU4XgY8ADD6x6VwQX6c1oIc+zdJJZoRRup6FHbyYsZWQPG8= X-Received: by 2002:a05:6000:40d9:b0:48e:69ff:ba36 with SMTP id ffacd0b85a97d-48e8a2feb40mr11289744f8f.28.1793799946351; Wed, 04 Nov 2026 05:45:46 -0800 (PST) Received: from athena.sw.ru ([2a06:5b06:b600:300:162e:5a6e:fd46:18b7]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48feeb51a9csm4005178f8f.59.2026.11.04.05.45.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Nov 2026 05:45:45 -0800 (PST) From: "Denis V. Lunev" To: andrey.drobyshev@virtuozzo.com Cc: svt-core@virtuozzo.com, den@openvz.org Subject: [PATCH hci-dev 4/6] tests/qtest/virtio-scsi: cover a replacement that changes the size #VSTOR-130961 Date: Wed, 4 Nov 2026 14:45:37 +0100 Message-ID: <20261104134539.1519657-5-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261104134539.1519657-1-den@openvz.org> References: <20261104134539.1519657-1-den@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM1PEPF000C1AD9:EE_|FRZPR08MB11217:EE_ X-MS-Office365-Filtering-Correlation-Id: 589b16b1-245c-49fb-2c00-08df3a79ee15 X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr X-MS-Exchange-AtpMessageProperties: SA X-MS-Exchange-SenderADCheck: 0 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|48200799018|6059299003|376014|61400799027|9140799003|43022699015|82310400026|261026135527099003|261026140227099003|260925022911599003|260925021911599003|260925021311599003|56012099006|5023799004|261009223027099003|261028144727099003|261026121527099003|5063699009|261022105027099003|261021121427099003|10067099003|55112099003|18056099003|18002099003|261102123227099003|16102099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: =?utf-8?B?V3JkeUlneHRRMUlGV1FaWlRJUGs5bHN1M2I3Y2QrV0hWTVdoZFFwVnlWbDl4?= =?utf-8?B?V25iSFN2S0JydzNYamNqL3ZTbVNpRHkrN2NHSFgvUE4zU2hQMlJlbzNDQ29X?= =?utf-8?B?TmJCRmo5aEcwVFhBeENnSHJ3ajJJcnBvYzJ6cnljYTZjcWhKL2hld2o2MHNO?= =?utf-8?B?ZCs3ZjA5aHVETGRwNEk3YjVXeTZpL0pGb2lEVjhKWnhrT0E3MDFZc0grYm1i?= =?utf-8?B?NFNMZkJ2OVpiVVZ4ZjJRaEVoUzdLRmZhbmZBa0NKeWVsMHptSVRmbkdRT3Bj?= =?utf-8?B?VksyRjZlTlk0WTZBaGpqSytaeFFmbTg5UysrbWhVcjR3akFHd0dMYkxTRWxI?= =?utf-8?B?bDhMRkcrOHlBM2NHRkh5Nkw1dU1JeHlWZjNHdzdqbW5jTEY0OVpaNDNzK0Ni?= =?utf-8?B?amdla0JBVXBEVkJGS1ZVOFBKSFA0Q2hGRzZYN0pVNDdBbHh2d2JDSUM1aTZB?= =?utf-8?B?S0pwRGJneTdjNXNRTWxjL09DUUw3bHcrWVp5THYxUURSdEFqSmZTQzVFNkph?= =?utf-8?B?eDcvT1ZHckpJWlJqelVNaW5aVFhoYm9VZE1Qb0h1U3ZRMXdaOGNBWXcyOXpr?= =?utf-8?B?Q0tVTkRKZW4yMmtyTVd2MlJzTlpUaFloY2JtT2FCLzRrSEVrbFZVZXNFOGVr?= =?utf-8?B?UTFYeGp4bTd1bmxxQWVYbWtybWxaejFWZ0JlMU5YRHp0Y0V4NEoybFlqMGg4?= =?utf-8?B?emMycEFJb3FZc0w2Tkc2eDJYWVpOa2h2cGMwVG1aQXlHSWpTbnFoT0tXaVRR?= =?utf-8?B?NkFPZzV3SVU3NEd0UXJNdmxZOERMM2xRK0ZXZjZ6cVFwWWo4KzNqM016Zmo3?= =?utf-8?B?eUc1ZjNseWErUFJ6RVdsYjRJczVGblNRYjZIaU5DdElDaVZTdXpoS1o5Tklp?= =?utf-8?B?SG4zRUl3RE9TT21aVUR6aEZtTEJvUisydmU5ZmYvZGJidzVrZlA3bzArRFdZ?= =?utf-8?B?T3FqMlVOMUwzUE9vMVFYSUxLcEIrTUxVVW5TNW43SXlUQ0l4Qk8ySm5lQ3JR?= =?utf-8?B?Q1I3MW5wY2VXcDY1YU9GcUVyaktNYkQzdEdxM2Y0ZTk0ckhIQmUzNGt6VmxH?= =?utf-8?B?REhiaFh3TTJ0dGFBSHFhRGRMNnNpZCtybGRtNE9Pb1Rkalg1WE9ZZS9CQk5F?= =?utf-8?B?aEdHc1VaWjVkSXA3UDRibmZrNyswdkRFWHFOYXhEYjhYSWY2NHJ5RVAyVDFK?= =?utf-8?B?eWltL2JiejBSYUNrQWl4TGFqTkc5L3B2TkNSUzhRSE55cFp5WndzSDBEQVJy?= =?utf-8?B?ditPdVhrbGswMXZuZmVmNkFOQmdkVitrRVFJMWVIazduV0dscTYweHRDRUhE?= =?utf-8?B?SktOS0MwTGYzNlR2T1NteHpvSUwxVTRhVEY4V29wSVRqd1pOS2RuaGRUR3pW?= =?utf-8?B?dTFWbXhrVG96MHFNY2ZpVmlPQ0tqaXl4WHRLOHpiZlBId3FleTd4alNjdmZV?= =?utf-8?B?MkN6blowN29zUmZ2YXJadUMrdjAyUTFPSHJUNExnPT0=?= X-Forefront-Antispam-Report: CIP:2a00:1450:4864:20::429;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wr1-x429.google.com;PTR:mail-wr1-x429.google.com;CAT:NONE;SFS:(13230040)(48200799018)(6059299003)(376014)(61400799027)(9140799003)(43022699015)(82310400026)(261026135527099003)(261026140227099003)(260925022911599003)(260925021911599003)(260925021311599003)(56012099006)(5023799004)(261009223027099003)(261028144727099003)(261026121527099003)(5063699009)(261022105027099003)(261021121427099003)(10067099003)(55112099003)(18056099003)(18002099003)(261102123227099003)(16102099003)(22082099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 2kkcqlaK3e6MaD8yIVwxlw6zLKqsxDKnxo5KKzX1y6wqiV4b9k/9k0JEt2iiL5nrAyg6USQMZcm+d9qgxQkvQ/VYE2/k3bpgyBVlV+qaa5125emZXaXruOuoe1zuDir+YGUZwI5EdqjoLygVyxHnQPSFFM6+5FiO0wf+nLGrIDZCRHel2DYQirNP6JdJbkCauCYeBVP+cLQeX+KY/cr+gjzy4OXxWbH9tQkWI20K/WoJbNoxe2HkAQSFkmK92nkrk9HKBl/Xe6koVd9IRO8kKpRJ0JNvFdsSJsZPOeP6BxzKShMmDK+U8V5+phgSKS/yS2XdBcKpXgF48NnayUv1cE5OCfiM4eWANDmyQfM5wfKMmzID0fcnSV1/BJSw3Sy4/WptQ504aqha+U+dmMSHQHnAGtwsR6alp1QytT7ULBgtw21ovN3aRsSc6EnxOKe0 X-ExternalRecipientOutboundConnectors: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2026 13:45:46.9595 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 589b16b1-245c-49fb-2c00-08df3a79ee15 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: AM1PEPF000C1AD9.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: FRZPR08MB11217 List-Id: From: Denis V. Lunev Realize a scsi-hd on a 1 MiB node, replace it with a 128 MiB one using qom-set, and check that the device reports CAPACITY DATA HAS CHANGED and then serves a read which only fits in the new node. Both halves regress on their own. Without the notification from bdrv_replace_child_bs() the first command after the replacement fails with ILLEGAL REQUEST / LOGICAL BLOCK ADDRESS OUT OF RANGE instead of the unit attention. Without the refresh in scsi_disk_resize_cb() the read after it is refused the same way, since nothing here issues READ CAPACITY. Signed-off-by: Denis V. Lunev Message-ID: <20260812121500.1034178-4-den@openvz.org> Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Eric Blake (cherry picked from commit e0856654911f3730cc71ab5c3a3a272cdbaff148) --- tests/qtest/virtio-scsi-test.c | 63 ++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/tests/qtest/virtio-scsi-test.c b/tests/qtest/virtio-scsi-test.c index db10d572d0f..f1aaeb31559 100644 --- a/tests/qtest/virtio-scsi-test.c +++ b/tests/qtest/virtio-scsi-test.c @@ -236,6 +236,53 @@ static void test_unmap_large_lba(void *obj, void *data, qvirtio_scsi_pci_free(vs); } +/* Test replacing the backing node with one of a different size */ +static void test_replaced_node_size(void *obj, void *data, + QGuestAllocator *t_alloc) +{ + QVirtioSCSI *scsi = obj; + QVirtioSCSIQueues *vs; + uint8_t buf[512] = { 0 }; + /* READ(10), LBA 0, transfer length 1 */ + const uint8_t read_low_cdb[VIRTIO_SCSI_CDB_SIZE] = { + 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 + }; + /* READ(10), LBA 0x1000 (2 MiB), transfer length 1 */ + const uint8_t read_high_cdb[VIRTIO_SCSI_CDB_SIZE] = { + 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00 + }; + struct virtio_scsi_cmd_resp resp; + + alloc = t_alloc; + vs = qvirtio_scsi_init(scsi->vdev); + + /* LBA 0 is inside the 1 MiB node the device was realized with */ + virtio_scsi_do_command(vs, read_low_cdb, buf, sizeof(buf), NULL, 0, &resp); + g_assert_cmphex(resp.response, ==, 0); + g_assert_cmphex(resp.status, ==, GOOD); + + /* Swap in a 128 MiB node; the device is not reset by this */ + qtest_qmp_assert_success(global_qtest, + "{'execute': 'qom-set', 'arguments': {" + " 'path': '/machine/peripheral/scsi-hd0'," + " 'property': 'drive', 'value': 'big'}}"); + + /* The guest has to be told that the capacity it knows is stale */ + virtio_scsi_do_command(vs, read_high_cdb, buf, sizeof(buf), NULL, 0, &resp); + g_assert_cmphex(resp.response, ==, 0); + g_assert_cmphex(resp.status, ==, CHECK_CONDITION); + g_assert_cmphex(resp.sense[2], ==, UNIT_ATTENTION); + g_assert_cmphex(resp.sense[12], ==, 0x2a); + g_assert_cmphex(resp.sense[13], ==, 0x09); /* CAPACITY DATA HAS CHANGED */ + + /* LBA 0x1000 is past the old node but well inside the new one */ + virtio_scsi_do_command(vs, read_high_cdb, buf, sizeof(buf), NULL, 0, &resp); + g_assert_cmphex(resp.response, ==, 0); + g_assert_cmphex(resp.status, ==, GOOD); + + qvirtio_scsi_pci_free(vs); +} + static void test_write_to_cdrom(void *obj, void *data, QGuestAllocator *t_alloc) { @@ -340,6 +387,18 @@ static void *virtio_scsi_setup_4k(GString *cmd_line, void *arg) return arg; } +static void *virtio_scsi_setup_replace(GString *cmd_line, void *arg) +{ + g_string_append(cmd_line, + " -blockdev driver=null-co,read-zeroes=on," + "size=1048576,node-name=small" + " -blockdev driver=null-co,read-zeroes=on," + "size=134217728,node-name=big" + " -device scsi-hd,id=scsi-hd0,drive=small," + "lun=0,scsi-id=1"); + return arg; +} + static void *virtio_scsi_setup_cd(GString *cmd_line, void *arg) { g_string_append(cmd_line, @@ -374,6 +433,10 @@ static void register_virtio_scsi_test(void) qos_add_test("large-lba-unmap", "virtio-scsi", test_unmap_large_lba, &opts); + opts.before = virtio_scsi_setup_replace; + qos_add_test("replaced-node-size", "virtio-scsi", + test_replaced_node_size, &opts); + opts.before = virtio_scsi_setup_cd; qos_add_test("write-to-cdrom", "virtio-scsi", test_write_to_cdrom, &opts); -- 2.53.0