From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020098.outbound.protection.outlook.com [52.101.84.98]) by lore.virtuozzo.com (Postfix) with ESMTPS id 47DAE8045D for ; Mon, 26 Oct 2026 17:49:48 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nFfJS0dwnxauzoLIG2+cb6AenzOjHKw8qONy8f+hJJkKI2Bc3Ag63SC7fqay6Ff4REwbwHtThR4SEpiW7X8pOMZXLp0D//qj6lfT/UXiLvA7etsCZ1fpEWu46qtIJTNaBasjdlxSmKGCzLghJOlbBDEVFvjyyHRve/DPCMVUQFyLEugS00veHDR7JED+zZ9jeLB00vVs/7jSlmshwCAgEOEJLwK9pvBqFYYQ0hHpCAk7WLH/55rh1s8s8S1AZl85db9JojDLFXTavN19kql5wKIaZIS0C5TSoN+5AQ375VF+/ViWR6rvAS/BXmMf0VZpaAqKPv7OE7waSS129ibIOg== 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=KJYvyZ+1453j5PyRXVybl/idLBvBMdV3WlWRM0ef+tQ=; b=AVDJh0DA+4WYfkXpHL9hefvFKRbczXmVLKJVd8RyV4bIK4YnSIpBWtvCHqWS3f0Pc7RJVfbrnowpEGrL2iPgXMvddoTds9CgRTsbZZW66QrGzzgudGBlF1O3fxrwXGA7f+9rMvv929YtMoSNxFlX0BdIV/Av47VfP/ZxWlujUWJeEd9Z39RpTwrqfYPfkAYm/ATTI2IFJVy3z17xhsO45V6Spd3qisTSNCKC1+6vvUsD5+WPURiCAGM1v15iuessx2biodGXRItzI/BlG+r8Tc3gLzkn8L63KJXB3nD4IN7PYG/F799gKkFXuXAnM0Yaf8+qGGBx0WmKUQ2T91pbGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 2a00:1450:4864:20::32c) 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=KJYvyZ+1453j5PyRXVybl/idLBvBMdV3WlWRM0ef+tQ=; b=lMCftZU5AUgEYasNH5YdSV3i/InpWfdqn5w71Ky/iHtkDULmxgDUeduJiwVDwxdsa8yR/PuR4bpja5o8IRM1NjQzDZ5/8iiBccqbaRbxWvHLJBSVDPfsOxUy4AklW3ayYJAcdjGM0x44nmj8R38kdblQdJJKszhH9OrGBtx3VM8= Received: from ZR0P278CA0169.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:45::16) by AS2PR08MB9737.eurprd08.prod.outlook.com (2603:10a6:20b:607::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.546.22; Mon, 26 Oct 2026 17:49:37 +0000 Received: from ZR1PEPF0000E464.eurprd04.prod.outlook.com (2603:10a6:910:45:cafe::1) by ZR0P278CA0169.outlook.office365.com (2603:10a6:910:45::16) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.546.22 via Frontend Transport; Mon, 26 Oct 2026 17:49:37 +0000 Authentication-Results: spf=pass (sender IP is 2a00:1450:4864:20::32c) 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::32c as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:20::32c; helo=mail-wm1-x32c.google.com; pr=C Received: from mail-wm1-x32c.google.com (2a00:1450:4864:20::32c) by ZR1PEPF0000E464.mail.protection.outlook.com (2603:10a6:918::139) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.569.4 via Frontend Transport; Mon, 26 Oct 2026 17:49:36 +0000 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-4a20bdaf39cso34353625e9.1 for ; Mon, 26 Oct 2026 10:49:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1793036976; x=1793641776; 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=KJYvyZ+1453j5PyRXVybl/idLBvBMdV3WlWRM0ef+tQ=; b=BeoIaW4zSOudM66BJ0cizTgf7lsdr/rCs4HGzHVBlVtzgI+J7Es6SLufxU4+CD6ijJ HRsNN3OfYP6NtLJLoenECrbyw/uSkkMmiVcnTHkhMJbVLDONfY40Xzcz0rDpCjjYnU0k zo4A3T/2iHgUzGHncwki5KSUWJKOdTUYnmHkk9PHzvkYUMSeGTBsN0Y4VJMPqYlbTJ4v hogr5VFnZZbTQfKVn9XjEocIeXoMx2hiAEWJkSaaZlEon8eWHPcbTaHDKssOsF3Ha4rK hLQBg7INDV4Hn5FOjuOixxTAZBxSKR6FpAf8EVDn9JvIH/7sxHjPExFmMNbo4m3stoSi qv7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793036976; x=1793641776; 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=KJYvyZ+1453j5PyRXVybl/idLBvBMdV3WlWRM0ef+tQ=; b=i/OLECPA5Bg9Cp3b7XS6prZ5ln1+eMJZJgxH8WLk5n+Rf2hB1j5rwrqBQ1sKswgwVJ SEOKIa46+lzTGhrKctS9mFvZcRV5BqowLLGY+tq7mfLSHG/h+Um/xm9JFbMMWuTdja+U FpUvS+PlY9PsOZzvohg0Q8PC1cvwh5XUHBdQARfPcZEAVJVIj/VBvgxvzaDoy3xfYVez ih7C4723eWH0XKVZ7Hj3cMeHnzNjp9W/D5pGXV0lo67ex8zIKABMRLc0U/Z/Ws2MpOU9 ized8BTnX1wJ1jOmXRCMgQufUJ71EerFabOU1gwHwaDtCep9vRlbc1ONzCljwbMVlj3o h5bA== X-Gm-Message-State: AFq9FYJBOIFbHHUCQNO35yLpNSbMClkh3NQ6HWpBUYKcWb+rRjqnn5Ky q0gjxAqpiQA2G5UzsXi+5eqMLh4cbzVO+/IooCeqyXSUHt5Vz0t4iS9TGVAgox394k79kUyaWti 2w+HzZlg= X-Gm-Gg: AYBFou2dmfHD2uPQpxWP4XugnnYeNkNhd3BmGm08NwwDvlxhtukSJgWxXS0QOUac8O4 5iX7qrtjfPFFa5DdxBYBF4hQ/Zll6EIOqWPBpJYV2kOVuIYmPp6r5InKtHaB3gEGx2ET58BPSeY O5x2sBKI3OwhyB+ckXxVfFczCwmyajUpXkdFv4LKE6Jah4DIK4WY7WiEVczd1VtAkZojLEZioH5 f1hdaIf07LBCialRTIiEeVoHrUFQJM2zm82+ZJiXVQOcqwN5iX78ZCxFL1seGGHjIlX60ZAB58Y ojA6MlSqT3jp/v8cPFUkI6lV5dMewolCah/DIj4q5lVu41W6Utgax5Jk4sybLzdlbRQOrdVKQui 38x/PnkiCV/W0Jio8OUmiYvMcqhU1EjfTnBBjDc58cSf4VCBqpjbbKCNkJM6kvi0uNibmFP/Hm7 UpVRvBmRDJX4oG91Ow6BefVInCwTqsWcXyina8F0eEaT47As2TW5HgYsyw3si/OxvEKsVdQaaAz Tagz5wlDlro6qjgRrTb2/9Ufkjk1t0JuK/v5P0bnPvJvkx22sRCCRJbKGPqYUdIYIlSjIerYg== X-Received: by 2002:a05:600c:c049:b0:4a7:6bc7:f778 with SMTP id 5b1f17b1804b1-4a76bc7f796mr21954125e9.30.1793036975894; Mon, 26 Oct 2026 10:49:35 -0700 (PDT) Received: from athena.sw.ru ([2a06:5b06:b600:300:1a6:7f7f:f573:ba9e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4a35a574088sm196211485e9.9.2026.10.26.10.49.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2026 10:49:35 -0700 (PDT) From: "Denis V. Lunev" To: andrey.drobyshev@virtuozzo.com Cc: svt-core@virtuozzo.com, den@openvz.org Subject: [PATCH hci-8.1 5/5] virtio-scsi-test: test UNMAP and WRITE SAME during inactivation #VSTOR-151532 Date: Mon, 26 Oct 2026 18:49:29 +0100 Message-ID: <20261026174929.685720-6-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261026174929.685720-1-den@openvz.org> References: <20261026174929.685720-1-den@openvz.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ZR1PEPF0000E464:EE_|AS2PR08MB9737:EE_ X-MS-Office365-Filtering-Correlation-Id: 8e5d41cd-48b6-480d-8b79-08df33898044 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|704161411799003|6059299003|48200799018|61400799027|376014|9140799003|43022699015|82310400026|261026140227099003|56012099006|5063699009|261022075727099003|261009223027099003|261009221227099003|261022105027099003|261021123027099003|261021121427099003|10067099003|261022115727099003|18056099003|55112099003|16102099003|22082099003|6133799003|18002099003; X-Microsoft-Antispam-Message-Info: Nv/EsqBeLWL6K8Ea3HiGs+LYclin4yLky+PA/dgzY1tCEb559uJ2WDYYZRVsTkqkg0DeyHMylD0Bpstl/8TJj49PmB4LkWd8fw6TPGqEPArTmbbEnxc9gR7lRFfdQUtKXGr3nwQiNaZWrBsR7mUTuygOb/aW2bqF7B4QyTFbtdy465K9oPFnzbjv97dOYCovC7edzUSds9YgXFf8jjGngIsWBVGYdvPYW5u1EhO6tSNTHTxIYWufsJ1nCy5JZdM1gv43Q/UzRNzGQVOpA1v3cbDwOfJhByVdlHC2QTJeoVPeaTT3n6Se3FCtHgsaZ0AccTOdpUGF1p6pZKT1Gz4umqATXk7Z7zUtjKiPY6COWJU/OO0ds8QiZ0ATxPJqvNBRIiKUuPeIBoKhvobOkuwxDfskDuTNHp928PPtVl0Aa1fBj8GTXJOhKgCETdRcoA1tWcOB3RPL1fR9W1IgTNs3qRAHS6hvdYxjogtxvCLfqAi7LI4uzBU5DK/ZfLvAk25gqhcyAdsTMBJn+yEhrG70HyTBdnd+JIdmCScQXTnJ2bQDh8WbMGXo7X1FjJumj4IEUlyl/px4Cu46DXBAhbv1VXuTnHGSuR6lnkK7UWZIoWeEu8IXuUleRK1BQc1bUYTfFbDTRNxJkRZPwIWzObcAFl3XCQDGzxbs8XFT1XH6BuW53rf8+Q94ckifmIvoo49xQ5gBsp67x4h/rnDDHKWBT4PlUU34Gmj4lqB1cP6aUidF7+GlmzMrCJWm6yKfnxwvV6T+g9GSWhtVOr/YFJdE4XKmByovA2xQNkvjLprWFUQ8JceCHQ5uYqjEF+1VJO9kQswD/OTPF1kyN59ROYPVNiOohVwQPy7zNq3E9eQbxwK6SAjeZgsOsEnmWsL/dWpl8+yKlPbllY7U5gfuq2KyDQ43vcwk/yxfVIeSK2SCews= X-Forefront-Antispam-Report: CIP:2a00:1450:4864:20::32c;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wm1-x32c.google.com;PTR:mail-wm1-x32c.google.com;CAT:NONE;SFS:(13230040)(704161411799003)(6059299003)(48200799018)(61400799027)(376014)(9140799003)(43022699015)(82310400026)(261026140227099003)(56012099006)(5063699009)(261022075727099003)(261009223027099003)(261009221227099003)(261022105027099003)(261021123027099003)(261021121427099003)(10067099003)(261022115727099003)(18056099003)(55112099003)(16102099003)(22082099003)(6133799003)(18002099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: mF+nBaOEXdtzjegVp78164NLcW6901QHFfPMKE3Nbx4wfCL2pBxAL9t50sxJ8g6A450FN7Ak/Rc04WN+qVPuMhXajCsXXLSZwdC4fumnsPqG28i2MkQQuZm0WWHE1tSMg8pMQJAAyIwOloDMD2eXred8pwn2izJQdU98QFLa1zWV4XMHZAee0OBVbkyI+4YCQB5omE4AYVLp0pkYYyqauXCQY7zfHkqnFs2tZZBnYz2yn4e5p2eQXAzMx1ArF/Pz2FpzsuuLpQB6g+OXKdPP7TCjudBzqYzIcaupdM/t3KmktKl6E9uyZ/LVDk5uFexHN/nBfVXdEMPokJbAGePSxFjJNrSlpaoiXNYhTp1I+KUEpMqgr+hpNYPeeAP+HnLK/0tK0tKcX+WqSv22G/JYWFzn7t29rpvnobIzD3YIjvPdIXdgj0wzcQSBmvEdmM1g X-ExternalRecipientOutboundConnectors: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2026 17:49:36.4792 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8e5d41cd-48b6-480d-8b79-08df33898044 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: ZR1PEPF0000E464.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS2PR08MB9737 List-Id: From: Denis V. Lunev Inactivate all nodes while a multi-descriptor UNMAP, or a WRITE SAME spanning several chunks, is in flight on a slow node and check that the command completes. QEMU used to abort when the drain in bdrv_inactivate_all() ended and resumed the request queued for the next descriptor or chunk on an inactive node. Signed-off-by: Denis V. Lunev Cc: Paolo Bonzini Cc: Kevin Wolf Cc: Hanna Reitz Cc: Fabiano Rosas Cc: Laurent Vivier --- tests/qtest/virtio-scsi-test.c | 88 ++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/tests/qtest/virtio-scsi-test.c b/tests/qtest/virtio-scsi-test.c index bc1edf046c2..16153c6e9ec 100644 --- a/tests/qtest/virtio-scsi-test.c +++ b/tests/qtest/virtio-scsi-test.c @@ -269,6 +269,68 @@ static void test_unmap_large_lba(void *obj, void *data, qvirtio_scsi_pci_free(vs); } +static void inactivate_during_command(QVirtioSCSIPCI *scsi_pci, + QGuestAllocator *t_alloc, + const uint8_t *cdb, + uint8_t *data_out, size_t data_out_len) +{ + QVirtioSCSIQueues *vs; + VirtioSCSICmd cmd; + struct virtio_scsi_cmd_resp resp; + + alloc = t_alloc; + vs = qvirtio_scsi_init(scsi_pci->scsi.vdev); + + virtio_scsi_submit_command(vs, cdb, NULL, 0, data_out, data_out_len, + &cmd); + qtest_qmp_assert_success(scsi_pci->pci_vdev.pdev->bus->qts, + "{'execute': 'blockdev-set-active'," + " 'arguments': {'active': false}}"); + + /* The drain must have waited for the whole command */ + virtio_scsi_wait_command(vs, &cmd, &resp, 0); + g_assert_cmphex(resp.response, ==, 0); + g_assert_cmphex(resp.status, ==, GOOD); + + qvirtio_scsi_pci_free(vs); +} + +static void test_unmap_inactivate(void *obj, void *data, + QGuestAllocator *t_alloc) +{ + const uint8_t unmap[VIRTIO_SCSI_CDB_SIZE] = { + 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00 + }; + uint8_t unmap_params[0x48] = { + 0x00, 0x46, /* unmap data length */ + 0x00, 0x40, /* unmap block descriptor data length */ + }; + int i; + + for (i = 0; i < 4; i++) { + uint8_t *desc = &unmap_params[8 + i * 16]; + + desc[7] = i * 8; /* LBA */ + desc[11] = 1; /* sector count */ + } + + inactivate_during_command(obj, t_alloc, unmap, unmap_params, + sizeof(unmap_params)); +} + +static void test_write_same_inactivate(void *obj, void *data, + QGuestAllocator *t_alloc) +{ + /* 2 MiB of non-zero data is written in 512 KiB chunks */ + const uint8_t write_same[VIRTIO_SCSI_CDB_SIZE] = { + 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + }; + uint8_t buf[512]; + + memset(buf, 0xa5, sizeof(buf)); + inactivate_during_command(obj, t_alloc, write_same, buf, sizeof(buf)); +} + static void test_write_to_cdrom(void *obj, void *data, QGuestAllocator *t_alloc) { @@ -373,6 +435,20 @@ static void *virtio_scsi_setup_4k(GString *cmd_line, void *arg) return arg; } +/* Each request must outlast the kick-to-QMP round trip on a loaded host */ +static void *virtio_scsi_setup_slow(GString *cmd_line, void *arg) +{ + g_string_append_printf(cmd_line, + " -blockdev null-co,node-name=null0,read-zeroes=on" + " -blockdev blkdebug,image=null0,node-name=dbg," + "discard=unmap,inject-error.0.event=none," + "inject-error.0.iotype=%s,inject-error.0.errno=0," + "inject-error.0.delay-ns=100000000" + " -device scsi-hd,drive=dbg,lun=0,scsi-id=1", + (const char *)arg); + return arg; +} + static void *virtio_scsi_setup_cd(GString *cmd_line, void *arg) { g_string_append(cmd_line, @@ -410,6 +486,18 @@ static void register_virtio_scsi_test(void) opts.before = virtio_scsi_setup_cd; qos_add_test("write-to-cdrom", "virtio-scsi", test_write_to_cdrom, &opts); + /* ioeventfd=off starts the command before the kick returns */ + opts.before = virtio_scsi_setup_slow; + opts.edge = (QOSGraphEdgeOptions) { + .extra_device_opts = "ioeventfd=off", + }; + opts.arg = (void *)"discard"; + qos_add_test("unmap-inactivate", "virtio-scsi-pci", + test_unmap_inactivate, &opts); + opts.arg = (void *)"write"; + qos_add_test("write-same-inactivate", "virtio-scsi-pci", + test_write_same_inactivate, &opts); + opts.before = virtio_scsi_setup_iothread; opts.edge = (QOSGraphEdgeOptions) { .extra_device_opts = "iothread=thread0", -- 2.53.0