From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from AS8PR04CU009.outbound.protection.outlook.com (mail-westeuropeazon11021124.outbound.protection.outlook.com [52.101.70.124]) by lore.virtuozzo.com (Postfix) with ESMTPS id F082380474 for ; Mon, 26 Oct 2026 17:49:38 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=csQmqdU/D6Mo9toTgpuxfJCDUiFMZOq2edVHcEvLS/n5bek5xJVcZdP3MzD58A3pu8LrHaDH1eGyXqJNEqZJPmhbhceWd4sinrR2tRhUliBOp/7LQOcScHCT4k30jlSXfNcBW6aMWNDELE9WBsoYhJSJlFcnJKLBUyLotzIitYWQaIQXDiACvMur14GE7QNXtGp/TPC8QDLrGEf5t/dFwUPYD2DLYOYo6Fn1v92p3eJizIGhVuxwIWDVjybswYSyKPS2retesbSG+nifwuxLs9aWyepwO8Nmpi2U8MPcmVA2Da8dlbdvBPhAJkkV1ytdIm3R6GuAG0JTYpGTasgJsg== 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=TIg6/K0QOMURG9ASbNDrqHwI+cnHEfzNcAsuXfTQIqo=; b=UOOx+tMo05GUiHWR+7+HBVlQp1K+hcjlbZPRgwbSRvZ7HrztBEUlE0DqII5VHbGNYvxFGGxRpVKM6tUGi0zbU58HKslzAq9PHR8uoFBpd+JN4Rfu7eL0pM64NOUMA9fPPFSD+9tCtpHURI3jYxft00+FmNpqGNw1GHU/h1lYOT3lUPix+lATL6UanavO0cQUBqSJoHxank42t2F24BqF88mqsvGzSUq1L6gELUUDiCDC0QB9bCIV8t3SMySZO69cas2vurcLVJyyLFBmIPaLC0Dafk14nv///yK1ws7qLbZly4vEaVPFjZapkoLXulMseSea8gk19Yxj+WQTvkPYZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 2a00:1450:4864:20::32b) 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=TIg6/K0QOMURG9ASbNDrqHwI+cnHEfzNcAsuXfTQIqo=; b=juxnr6mKfCke7ROp5DVlyocrGxEXycJNGfPetDaWA5cnp3jCBrEp1bZwVpOAyAyiSdXJabOyFMB5iKBfQtRe7Hl3pFTKjmPNAMHpzyGV6z7ZYlPK8R8zj2vT7PCZfJN/meU15/dxWbIUcHYGZX/oTcw0peLZbDrpZ2s9CY2xGcs= Received: from AM8P251CA0008.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::13) by MA9PR08MB174881.eurprd08.prod.outlook.com (2603:10a6:250:104::8) 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:35 +0000 Received: from AMS1EPF0000009D.eurprd02.prod.outlook.com (2603:10a6:20b:21b:cafe::a4) by AM8P251CA0008.outlook.office365.com (2603:10a6:20b:21b::13) 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:35 +0000 Authentication-Results: mx.microsoft.com 1; spf=pass (sender IP is 2a00:1450:4864:20::32b) 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::32b as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:20::32b; helo=mail-wm1-x32b.google.com; pr=C Received: from mail-wm1-x32b.google.com (2a00:1450:4864:20::32b) by AMS1EPF0000009D.mail.protection.outlook.com (2603:10a6:20f:fff8::20a) 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:35 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-4a3517554f7so22010445e9.2 for ; Mon, 26 Oct 2026 10:49:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1793036975; x=1793641775; 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=TIg6/K0QOMURG9ASbNDrqHwI+cnHEfzNcAsuXfTQIqo=; b=CBxADmwf7iuFTc8mOYRm4i5dPEBqxpePVeLleeTG7AmzGopQY+BEkLh4R0f4IYvDeH hbkAF7qS23THRHBg2xmvYrlpa8RII5su2vuAETfevtoB0mtSKq/EfyjaiPk2svghfwTX gKOL+dgIrLkAVcKMt46H8ImXxNeCrucdweUJE8/+p+JI4pghC6uyczyh0PiRqiBa9JJ3 JLRLT+ZDoJNg2faFzpA3EQnenqb6qgs45TKeUWacJSJm6MyIXv/vUI4xwovZkTN5gVQq hI9H/a3xHgU5u/TgdDxSq9Z5IxAtXZmZW91DeIZ8LjooG00pPfNA7Io7XWm6IpIDIwCx M2Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793036975; x=1793641775; 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=TIg6/K0QOMURG9ASbNDrqHwI+cnHEfzNcAsuXfTQIqo=; b=dxqLieq8+FnndER2oz+vtn86ogibP6ZLjW2Q0Yn6D+OZsZwW9QBQaqxXf1B+Ndg9cc S6Y5+av4NxNZb70Eho4smDeg6SqkFaG7w9vDxVa/voK8NcQ4879XD0OotOF4djRiv6DN IHpHkbI85iKwmBx1XR5vuMlfF4cK9X2dG/ENX0lUC/Sy/aX5QjYd5p1JTscJc91d4oxO Dq2SkvAbYo1GOEUSjxtos7iEyhBIVbEZ8oZm9jtyYm5Qf9/sBy/EUJgzE6Ed6em7SeoI rAmFG7O4LNrBHBAbLvH0BSgAStKYxbGoSnsbjFUBA/RICPbXZGmc03YhFEk0B4Ud4SXO gYxA== X-Gm-Message-State: AFq9FYJcjHsWtT5W62Cqhz8H+wEHSF+aOAKxRuK/QZ3s/BQI1r8AGEUu UgYpClRytkR9godjRKvI1noEQBs4VukwZkUDshN8mTCmRi6ehQSvenjKsINBwj/9OLrU4w== X-Gm-Gg: AYBFou0uzZdvPnthO4FZRbeCPsK/NgdtXdwRjhKRbci+rmLL92xngzYo0llZc3wrX8+ 4z4K4G3QAnHjZpGCDkkzSibrG3NvFhT8gLaRAzL0dpDB+KPGnO2ea+sootcnr6STjVwjcE8Yirs kbJ0ai8omX6THmxiRD4q09JF7Tpn40vKfdDy8TzkobkB8gGBojfhyQ1g2EWW0uw81Ty+WtGOgc5 eN8ZC9foIwOdF1JA9Ufi5rzwva71YvwChRYom5hvUhBui5KrUinTWWdiqrkeRl3/ir8jsxVvtGb VvdgwXpRHb2DKZFz8NQmcaSVYNImHoZGFhaquVAEQEpMoJv2YMVhqWDACFr+QU/GFb9Kgym6otB 0ybkSs77l4W5FvBOyspYgl2peKIUq6RmPfh+L9PM+8ppuRrUwGqhWFWkf2a9B8AYPoeXbUtV78A oJ1ed50KIJaNroMjI955npznzn5SRpaWNjV9vlOBe6Fkp/dMV7rYNpfcfMA4Szzl9sgYYZ0qygv kbShEE2U+GgeI823WYta7hgbPioNqoFGmMBb4TdWoeK/JOw8hSfxwpYQwgvaqKTo4bdlQRf X-Received: by 2002:a05:600c:4e87:b0:4a2:1867:10e8 with SMTP id 5b1f17b1804b1-4a35aca7643mr157710555e9.25.1793036975024; 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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2026 10:49:34 -0700 (PDT) From: "Denis V. Lunev" To: andrey.drobyshev@virtuozzo.com Cc: svt-core@virtuozzo.com, den@openvz.org Subject: [PATCH hci-8.1 4/5] virtio-scsi-test: split virtio_scsi_do_command() into submit and wait #VSTOR-151532 Date: Mon, 26 Oct 2026 18:49:28 +0100 Message-ID: <20261026174929.685720-5-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: AMS1EPF0000009D:EE_|MA9PR08MB174881:EE_ X-MS-Office365-Filtering-Correlation-Id: 4691f547-8ca6-4e3f-2c3e-08df33897fb0 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|9140799003|6059299003|82310400026|61400799027|48200799018|376014|43022699015|16102099003|22082099003|55112099003|18002099003|261026121527099003|56012099006|5063699009|10067099003|261009221227099003|261022105027099003|261021121427099003|261021123027099003|261009223027099003|261026140227099003; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Z7OZtzPSCh0eWUdRJmnJx7ZD2tAKLLdQ1MV2MieekgXvbTOmVS6y8zsEeQLw?= =?us-ascii?Q?kGOFJIS5NqsrY8oUgXUP4q4UELMXKrSmoxM/XbHVydgm1VSg4qdXhx33QQMx?= =?us-ascii?Q?YfWOTX1wYNdwF1WCew8G+PwtIxlE0RzHZAQvmYq1h5Q+clM1OKQ7xo8sKRsy?= =?us-ascii?Q?dH1O3IHqo4JeLPiGlUI+Evj04IeU3OGI0j/9FEYieNtnnJz2wRbnVDYFp2VX?= =?us-ascii?Q?KPVVt9f3+A5crWTe3zcqmkv4/Kvkm3Irz9O3EnEMUB+V5aN2laK39BLZ7ejH?= =?us-ascii?Q?MEjtIcxGUW4Ro0KOvpdV3ka6xBSXYlMrngjzP6hCcbLZmjtn43qo5kqqjhCt?= =?us-ascii?Q?72Hayy6ciIr+R/rPHz936iFYkQDgz84OAag6oXnW5OF2zU92CnoFMfWxR2ID?= =?us-ascii?Q?euTDfMBymTTuDB+BOonrgKD25hUdiCdVy+MhX7zctMo6paAQsY/aCKeZDW3w?= =?us-ascii?Q?5X0cvCrW5ggNHz9xVKc7iaFmLMoHeujuUbnvmtcen/V5aq2tbd3l7i3PAfSp?= =?us-ascii?Q?1uwxuWALFAAw9RoG7EEXaZ6/PgePXw8Thawogv/4ZwkGPWwQQQa1C3I3pUq9?= =?us-ascii?Q?p3nM3WWFoiHYdp0mtNrygysUbSNMMTJGQt/xWcwtFAjioprE7fyoLddrg1w1?= =?us-ascii?Q?IpCSjkArSvFwbecy3DXkR21sJKq9gFzvfa5QuPIrjbn0JDQHjngz+wPQzVrR?= =?us-ascii?Q?R6+xpHWu+ZHo47/ObVvX6Pjw2kFDVMlUM6vZJ0zz36h6uAWuxBt0VFu2WFhx?= =?us-ascii?Q?DNiOyOHsxT0ELviaUWYNcd78VPuCLTqdGMtfrl42XDhu1RmYhf0/6sgoi/iI?= =?us-ascii?Q?JJJNpqrcXO7Tu6KeCtYLSTDZlYhb5m6eNr0Y+qWUErFmHOVEN0lsaEbwH55q?= =?us-ascii?Q?FTVlGe/S4prkzDgtsyq9bxpYtYudd0a260Jtu7KLih8jwPmTXT/twGzldiQP?= =?us-ascii?Q?37925F1XW/8UMlrkqh13eue5ld8HCzL7qK5/4tJq/D4=3D?= X-Forefront-Antispam-Report: CIP:2a00:1450:4864:20::32b;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wm1-x32b.google.com;PTR:mail-wm1-x32b.google.com;CAT:NONE;SFS:(13230040)(704161411799003)(9140799003)(6059299003)(82310400026)(61400799027)(48200799018)(376014)(43022699015)(16102099003)(22082099003)(55112099003)(18002099003)(261026121527099003)(56012099006)(5063699009)(10067099003)(261009221227099003)(261022105027099003)(261021121427099003)(261021123027099003)(261009223027099003)(261026140227099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vsgRoUjJRs3m8/Z2YGUDG06o+fjaj9Q34KpUILfyIB5nNSSwiQZJjOLcosTD0vX/xwJheJlXTVBq03DC2j5ciEIvFKbwhFnXuLv3j7cjf1ir1Li+NrnShS+Zi994e3OZLHRY8l3LJFBlotE2BSPfrWINzsGCyHvxa6EgSl8ZI4IbQUApRnam77PHJcooByADJBwxbp7SD73H8/X/BPTdsNzJueazSK20OM1pbVphG8H4J71/d1WV9zMO2sfD43ZD0yJ/jx2+xft868bIvBSUU9fT2i+T0/mIsrFy9sDXId0JW2mTeOP33+7qE+HseS5HJ9SUH8afKxiNx2TSsi0W3B8mVTqUhbJHDA5FlrZ6DysZvBn7MO+jFjJWsacYDmj4wOgVXJniJrkg781j9MQtSt+BdWDZHrL2BB2LYDg8pLUnsjO3DFNxdk7N0cS0T1qL 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:35.5588 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4691f547-8ca6-4e3f-2c3e-08df33897fb0 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: AMS1EPF0000009D.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: MA9PR08MB174881 List-Id: From: Denis V. Lunev Add virtio_scsi_submit_command() and virtio_scsi_wait_command() so that a test can act on the device while a command is still in flight. virtio_scsi_do_command() becomes a wrapper around the two and its callers are unchanged. 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 | 85 +++++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 26 deletions(-) diff --git a/tests/qtest/virtio-scsi-test.c b/tests/qtest/virtio-scsi-test.c index db10d572d0f..bc1edf046c2 100644 --- a/tests/qtest/virtio-scsi-test.c +++ b/tests/qtest/virtio-scsi-test.c @@ -59,22 +59,28 @@ static uint64_t qvirtio_scsi_alloc(QVirtioSCSIQueues *vs, size_t alloc_size, return addr; } -static uint8_t virtio_scsi_do_command(QVirtioSCSIQueues *vs, - const uint8_t *cdb, - const uint8_t *data_in, - size_t data_in_len, - uint8_t *data_out, size_t data_out_len, - struct virtio_scsi_cmd_resp *resp_out) +typedef struct { + uint32_t free_head; + uint64_t req_addr; + uint64_t resp_addr; + uint64_t data_in_addr; + uint64_t data_out_addr; +} VirtioSCSICmd; + +static void virtio_scsi_submit_command(QVirtioSCSIQueues *vs, + const uint8_t *cdb, + const uint8_t *data_in, + size_t data_in_len, + uint8_t *data_out, size_t data_out_len, + VirtioSCSICmd *cmd) { QVirtQueue *vq; struct virtio_scsi_cmd_req req = { { 0 } }; struct virtio_scsi_cmd_resp resp = { .response = 0xff, .status = 0xff }; - uint64_t req_addr, resp_addr, data_in_addr = 0, data_out_addr = 0; - uint8_t response; - uint32_t free_head; QTestState *qts = global_qtest; vq = vs->vq[2]; + *cmd = (VirtioSCSICmd) { 0 }; req.lun[0] = 1; /* Select LUN */ req.lun[1] = 1; /* Select target 1 */ @@ -83,41 +89,68 @@ static uint8_t virtio_scsi_do_command(QVirtioSCSIQueues *vs, /* XXX: Fix endian if any multi-byte field in req/resp is used */ /* Add request header */ - req_addr = qvirtio_scsi_alloc(vs, sizeof(req), &req); - free_head = qvirtqueue_add(qts, vq, req_addr, sizeof(req), false, true); + cmd->req_addr = qvirtio_scsi_alloc(vs, sizeof(req), &req); + cmd->free_head = qvirtqueue_add(qts, vq, cmd->req_addr, sizeof(req), + false, true); if (data_out_len) { - data_out_addr = qvirtio_scsi_alloc(vs, data_out_len, data_out); - qvirtqueue_add(qts, vq, data_out_addr, data_out_len, false, true); + cmd->data_out_addr = qvirtio_scsi_alloc(vs, data_out_len, data_out); + qvirtqueue_add(qts, vq, cmd->data_out_addr, data_out_len, false, true); } /* Add response header */ - resp_addr = qvirtio_scsi_alloc(vs, sizeof(resp), &resp); - qvirtqueue_add(qts, vq, resp_addr, sizeof(resp), true, !!data_in_len); + cmd->resp_addr = qvirtio_scsi_alloc(vs, sizeof(resp), &resp); + qvirtqueue_add(qts, vq, cmd->resp_addr, sizeof(resp), true, + !!data_in_len); if (data_in_len) { - data_in_addr = qvirtio_scsi_alloc(vs, data_in_len, data_in); - qvirtqueue_add(qts, vq, data_in_addr, data_in_len, true, false); + cmd->data_in_addr = qvirtio_scsi_alloc(vs, data_in_len, data_in); + qvirtqueue_add(qts, vq, cmd->data_in_addr, data_in_len, true, false); } - qvirtqueue_kick(qts, vs->dev, vq, free_head); - qvirtio_wait_used_elem(qts, vs->dev, vq, free_head, NULL, - QVIRTIO_SCSI_TIMEOUT_US); + qvirtqueue_kick(qts, vs->dev, vq, cmd->free_head); +} + +static uint8_t virtio_scsi_wait_command(QVirtioSCSIQueues *vs, + VirtioSCSICmd *cmd, + struct virtio_scsi_cmd_resp *resp_out, + gint64 timeout_us) +{ + uint8_t response; + QTestState *qts = global_qtest; + + qvirtio_wait_used_elem(qts, vs->dev, vs->vq[2], cmd->free_head, NULL, + timeout_us); - response = readb(resp_addr + + response = readb(cmd->resp_addr + offsetof(struct virtio_scsi_cmd_resp, response)); if (resp_out) { - memread(resp_addr, resp_out, sizeof(*resp_out)); + memread(cmd->resp_addr, resp_out, sizeof(*resp_out)); } - guest_free(alloc, req_addr); - guest_free(alloc, resp_addr); - guest_free(alloc, data_in_addr); - guest_free(alloc, data_out_addr); + guest_free(alloc, cmd->req_addr); + guest_free(alloc, cmd->resp_addr); + guest_free(alloc, cmd->data_in_addr); + guest_free(alloc, cmd->data_out_addr); return response; } +static uint8_t virtio_scsi_do_command(QVirtioSCSIQueues *vs, + const uint8_t *cdb, + const uint8_t *data_in, + size_t data_in_len, + uint8_t *data_out, size_t data_out_len, + struct virtio_scsi_cmd_resp *resp_out) +{ + VirtioSCSICmd cmd; + + virtio_scsi_submit_command(vs, cdb, data_in, data_in_len, + data_out, data_out_len, &cmd); + return virtio_scsi_wait_command(vs, &cmd, resp_out, + QVIRTIO_SCSI_TIMEOUT_US); +} + static QVirtioSCSIQueues *qvirtio_scsi_init(QVirtioDevice *dev) { QVirtioSCSIQueues *vs; -- 2.53.0