From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DB3PR0202CU003.outbound.protection.outlook.com (mail-northeuropeazon11020083.outbound.protection.outlook.com [52.101.84.83]) by lore.virtuozzo.com (Postfix) with ESMTPS id F0FAA80170 for ; Tue, 8 Sep 2026 11:11:46 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=jrXOB+oE7BxJAmRQGcguKt3taGsVgjbV13qpI16g3xFjuP7rYr1MALkJnR15N350FUc9fHp8l3XO/4nC9wHh5JBXcKOp9oIccwPjWyEHwccpM64q1avAgCguuvswJHtagDgwklZH8eNz79uVOlNx3vJj0h3kQKCZe8n77bPrl4lbpSltWhzY150rRF98lZ9HH+nCTBiCWjJFBvF6yG0TyQ8mi7o1SEuiGZykwSKhQm1ADEspcn0Qr+Zj9vOnIx8vqo874vA2aLT+t4KevjiCOUngV6BMujT6+vj4RFC8+WsMVTO0S4V9BilPVWfbxAea3el/v2iIW6yF0G2vIBppkQ== 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=lbjPlC74bTz9JZEImhg/JMI6qDQ+O3WzURd1BpQXkX4=; b=COVCQCy9lVO4aN5otojYRw/Bdq2y0TBAxTC78MIaf+lSpsisqwX7MhjHdIHtN3MGQoEhHyhVHhWsuAITJskYCorIpKf8+dOwcQc6D2cvU/JQ4z2e4+fYIfTzc3NlHzyp9jIZmHWigtN6k3YDHYQhkj7U/QEdG2Q+Ju9q2V8BQO2TbOn6Sih/gKyU0pWpmualL23Q50YTbd67jLBo1rSuoSepBUgYx92jJ76ZuDBQ6YLnIrT9+zDE/crcdAPQLzTN+1AxPdgbqp2pfPc8ncx+R2puNDmVw/1UUz9IzEsgDagWhbAeJR0HLjXG3QaGk+y8I2GFlOVhz2dr5LVoKtrUoQ== 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=lbjPlC74bTz9JZEImhg/JMI6qDQ+O3WzURd1BpQXkX4=; b=XAaUGutkNN50kvSeI7usexTqVUSUSWNSJQ3u9fAVncooR8CRcijjgy5X08LntMdTJAVL/20zbiKTRiKZX2oZD7jqbxyN9osMnRo7CVeZmwZ9TQYhoOwD2AywNStLEtT2BdvZHbntdUtUJzN3rKus8QYz5Dsr+A/nAxU3f8Na24hc+P0xMldz3E1/B3FsZ3vVoxGxkc9HYSJ2MJjTYf3QzDIxdsDq3lm6/77wQhUjgaCKNhTg+hJE9QUo6YIqpJ+B8oXCI7/oI1LRApW8dokyZbb3xFZGho3L2T4FfFeKDKF/NkbFri91LrXgj7vMDBNLj3IoFfXxtVse6MjNlSTM1A== 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 AM8PR08MB5777.eurprd08.prod.outlook.com (2603:10a6:20b:1c5::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.406.6; Tue, 8 Sep 2026 11:11:45 +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.0406.005; Tue, 8 Sep 2026 11:11:44 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: Re: [QEMU HCI-8.0 PATCH v3 2/5] vhost-blk: change backend setup From: Andrey Drobyshev To: Andrey Zhadchenko Cc: svt-core@virtuozzo.com, den@openvz.org, andrey.drobyshev@virtuozzo.com In-Reply-To: <20260908010455.249679-3-andrey.zhadchenko@virtuozzo.com> References: <20260908010455.249679-1-andrey.zhadchenko@virtuozzo.com> <20260908010455.249679-3-andrey.zhadchenko@virtuozzo.com> Date: Tue, 08 Sep 2026 14:11:39 +0300 Message-Id: <178886589978.877345.11165098103596016397.b4-review@b4> X-Mailer: b4 0.16.0 X-ClientProxiedBy: VIVP296CA0065.AUTP296.PROD.OUTLOOK.COM (2603:10a6:800:35a::17) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|AM8PR08MB5777:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f3e4d59-e2b7-4d15-9616-08df0d99f750 List-Id: svt-core@virtuozzo.com X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr X-MS-Exchange-Transport-Rules-Loop: 1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|23010399003|366016|376014|52116014|10067099003|56012099006|4143699003|5113699003|18002099003|22082099003|38350700014; X-Microsoft-Antispam-Message-Info: AzZOd2DNBCo48yF+42lRy9ZRleCRDXAE87nMtgsRzWzAeCvRJ0geI+2MstBg1rAp0UX6uD/473qQba6kbW7k6fkTAdktWOmb4BABgl+d///5ZZpKF0IvGUHPpawUVTT8lFMlvuhNFEOVAvJuU+80y8uWi3EVupuGU0f3Y75q9W4QFLnbsO9oBx+7iEDJd/lj0mC1KkRJc9VHdSpjN7IzHbtMUanc90TAs6AqTUpFA5d/jqve8Bi239Q1w6fhnJSWaojGHhKjLtOR1ayjs3NXWh/DuZn8omyCCllys5BzcZMaRDOWusarlsNKr+nFlAuGvfC7l+IvEemYXW4u0IAj+X5KlNaB28XCFpuf6Urxv+srjHy+2hMFqIv6iOCuUEvHC8xfFHQzFOv3WKFmrL3fIV/A/IcfJWv9joHPXo915cChHqE4GnIhpAkAwJ+B8ZF9jvAP+CZPPe7vm0MLKN1RpqdWv2hN4+dUfcVEL0jBLRp/jdveW5b3FkP7OHOZO0tZDE/T4Bh1/g3vYRLgUhzZVylE+fFgyOet9+Qfxw6SKtR7F0FCGHWas07N7uLIzYlcco/3sqCBeM34aw6pkS+C8+E4W8QLH9bVNa0DTe6qTlrhtt9eZpZp6SIrX0ztFBO5SrA6Lnls3HCzjlk9S6rdsOhMpM+LCmojz+CmB+L//2BZ1MQE90XKpNGcFqIBUlj1KRCwIP5G6rS9wITQZXASPY3U3UqXOD7CllM8k4yBZHU= 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)(23010399003)(366016)(376014)(52116014)(10067099003)(56012099006)(4143699003)(5113699003)(18002099003)(22082099003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MGR0aStBRzV3dGlEekFRaHFEWUgzWWEra1V5MnFSMmJKdEYwODdaK0NDV1JS?= =?utf-8?B?OTNwL01iTm9HTUdXTy9xd1dtYjB2YytXS2hqSWppYXZoY1RyWUV5akt4dDNB?= =?utf-8?B?RDBwQ085WStKUmoyN1R0VW11bVlyTlNEZFNxa2JzQW5QUUhUM0pleHpzVVBM?= =?utf-8?B?bG1XWVJtOUVtSWY0dUVqTzF6MTNsbE40TUNpQzFCcVB3WjlRTzZ4aUtyL2V1?= =?utf-8?B?bVdqUWtvUE5MTGNSL2xrRTdMT015TUkzczFNaC9YU3hWekh1My9Gb1hJTmJp?= =?utf-8?B?V2VTYmovRVVUNEk3b2s3U21XaG1NMWRxbCtvMzZJVU14Tzd4WGl4VVNJK3h2?= =?utf-8?B?aGZkVm1DN2k1YW9LM2xMRTF5VVQzMjdLYzQ1eU1BaEt3YUN0cGNQN0xncDhz?= =?utf-8?B?cklJdStuYW5mV3JSUGxkZ0dkamdoYkI0ZkpnV3IzaiszTWRFYWJIVVBaVG1h?= =?utf-8?B?NG0xa0Nyang1UDhLa0wyNEF3TEIyUSszeHFkdDZFck4xa2Yvak95TEh2bHFp?= =?utf-8?B?WlkrNlBQc3A5cXc0RC9TNlQxWFdBRTZVaGdSTXNSMnYzdDY3eER0ZFNnSk5U?= =?utf-8?B?Uk4vSGhSRzN1MUxiUWtiRW1LNHBGUHZkNEZFbVVLU2d4M2J5OExIc1dHRDFD?= =?utf-8?B?bWp5VWFPVk4zT1pwWHBxZXZIdUM1czYrbjd5UkdDMndOQktUZ1REaTRBcE4y?= =?utf-8?B?ZkVrL2tRUTczbEZTODVYbUhKNEo2TzdMeXd5TEpRUjdXT3VBTUlMRkJVTHRV?= =?utf-8?B?ZEdOKytYZWNJY0pVMXRpVkpiaXYrNFJHWVNwNThPU3ZVQ2dEYi9SY2k3RGg4?= =?utf-8?B?ZWpVRDJzRDFtVHJ5RlBzUWJxVCtTVTNRQ0Y3SjNiWnZscWxqQzUxL1FRends?= =?utf-8?B?TzJwZzExUXpaekhmMEdsaTZhM1hPb2wwMGt3VUZ6ZHRrY0hHQkdWbEhSeFR5?= =?utf-8?B?a1k1VXVPV0J0SG1KSWJ2d2FoR1R0QW1QMzcxYmh3bHhPQTNROTlwTGxBWitk?= =?utf-8?B?QmRRWVZBMHZJRkwyY3JTZkk0VG5IdFJabk5EL1dCMmM2VnNQcHVDMU1DaFh3?= =?utf-8?B?KzVZS1NoN0xQdFNjUVUxUHFsbEFIL1ZSZ1NSTUZQS2xDZkZIaGRVbGpTbGZM?= =?utf-8?B?ZzJvaTF6eHkvaExzSmp1eWtoV0NvWWpGZjJLWXM2YUhJN01YMXlob0JSOFdG?= =?utf-8?B?RlpSbGN5K1Ftem1XWWdIWFYvRU5EcjJxUW0xTGFzRjVlTzY4azJwamwyQXVK?= =?utf-8?B?OVdmQjRDLzVPVzRGNTlmamZ0WGlPdVdWeWJoTHY5aGpYZWx2Q21ZeTBUMk9K?= =?utf-8?B?MVYvWUgvVkdmRWt3UTl4dmtLcmpGTW9UUmEzSWJnalJRU1FEYVRxdloxMXRX?= =?utf-8?B?d1UyNUx0NmdNZlRqclZPdExaNW9lN1FxQWEvV1g3WDVRYThBaTlKMXB6Q1F3?= =?utf-8?B?WkQ0M3Y5blNCVmZadU81cFR3NjlNdVNacE1jV2VUMmdPeEJLRmF4NElYM3JZ?= =?utf-8?B?T2pkNTNIWksyWDkzcHpWeTN5Ymw1M0FSOFIzYWJnTUQ5Z1ZaZzRKVzl4aytn?= =?utf-8?B?b2xubXMzdHNrbCtObWIwRE04ZE0vcVp2bWhnSzJ6OHpMSThpdUE0bjIzdTJJ?= =?utf-8?B?NXo5bkZpSkNuVXlKUkdwU2xNWEFpNk1QTitQV1kybmY1MWIzRm9zd3lkdXBa?= =?utf-8?B?ZWpoSEJ1WitPSTVTMGFLMG1vNTVsQzlKaXVWOWc0d0VhSjJ6cU5pb0VEVHNl?= =?utf-8?B?bzduWlc1R0Y3OTY2TmVFanlBRHZZN2t2Y0pHb1M3Y24yempTQ2VlTHZoRVZZ?= =?utf-8?B?c3ArZEduTHJBcTVPNUF5VTk3T3doQjJYbTFwOGh5NUJLM1BuMEhIMGI2R2lB?= =?utf-8?B?UVBjd0lSOUwxNHUyZkdVYTNxblhsZTBDVkVnczRPNUlITUI0Q3YyVkozYXVQ?= =?utf-8?B?MzExWUE5WVQwemMrWkw2YUpKd3I5ODk1c2pJZ25uZE9JaVF3L0lWVXJPbVc5?= =?utf-8?B?Z1VvVS9tTExNYWVmZTljcHNacDBXeXBET3d1bVZnS1Z2b2Rnc3JEelRvMGZo?= =?utf-8?B?L2FCU05XSGVuTUZOWThmaXJWbjkrZUJvTGpuL1cwbFV4WElMYjNHN0FhY1hD?= =?utf-8?B?R2lXT08xbmFCOHhZb1ZxbitZREJZcTRXRWVmdm96ZFdiTEwrcERlOHlJbGNP?= =?utf-8?B?TUkvSmNFUkhFdzZKYWxzUXVHSlIwK1NYRWI4Y2MraGpIUlFxZWhEYVhQTDV2?= =?utf-8?B?Y2YzemM5anY3UWdja2hXakNKYjc5OHB3MUpVR1VUVUs1Wm5TNXFvQXAxa1Y4?= =?utf-8?B?aDhwbXUwaW5GdzIxcGlGL0YxQTVVTG5uQi9BZUUrRjdRSnZzdWRJaEtyOWJs?= =?utf-8?Q?pdS30O6t8AQhzKIM=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f3e4d59-e2b7-4d15-9616-08df0d99f750 X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2026 11:11:44.1512 (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: lvxolkkXRDALxrub41CvDW8jJtxmMz9/SjIqhadNMyRsIEemtHgewPQv2bNep+KfIjCHGEUp0LdwiipfQAdSef0ffMF3h47zD8WUevtkER4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8PR08MB5777 > Previously we used very ugly and incapsulation-breaking assignment > fd = blk_bs(s->conf.conf.blk)->file->bs->opaque; > It is wrong in a many ways, so let's rework this. > > Patch changes default `drive` to new `devpath` option so device fd > is managed by vhost-blk itself. Unfortunately this way we need a > bit more preparational work: finding out disk length, etc. Don't > be too broad and just do the minimal work. > Also drop generic block device properties along with the block > node: the kernel module does all IO in terms of 512 sectors, so > simply report 512 byte logical/physical block size to the guest. > Existing vhost-blk setups will break, but it is expected. > > We also lose resize, as this is tied to the block node, which is > now have no place in the setup. We will add this in the next > patches as well as RO mode. > > https://virtuozzo.atlassian.net/browse/VSTOR-143437 > Signed-off-by: Andrey Zhadchenko > > diff --git a/hw/block/vhost-blk.c b/hw/block/vhost-blk.c > index 20c2f416916..d6681235e5d 100644 > --- a/hw/block/vhost-blk.c > +++ b/hw/block/vhost-blk.c > @@ -25,22 +25,17 @@ > #include "linux-headers/linux/vhost.h" > #include > #include > -#include "include/block/block_int-common.h" > #include "system/runstate.h" > > static int vhost_blk_start(VirtIODevice *vdev) > { > VHostBlk *s = VHOST_BLK(vdev); > struct vhost_vring_file backend; > - int ret, i, nworkers, *fd; > + int ret, i, nworkers; > BusState *qbus = BUS(qdev_get_parent_bus(DEVICE(vdev))); > VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus); > char serial[VIRTIO_BLK_ID_BYTES] = {0}; > > - bdrv_graph_rdlock_main_loop(); > - fd = blk_bs(s->conf.conf.blk)->file->bs->opaque; > - bdrv_graph_rdunlock_main_loop(); > - > if (!k->set_guest_notifiers) { > error_report("vhost-blk: binding does not support guest notifiers"); > return -ENOSYS; > @@ -92,7 +87,7 @@ static int vhost_blk_start(VirtIODevice *vdev) > > memset(&backend, 0, sizeof(backend)); > backend.index = 0; > - backend.fd = *fd; > + backend.fd = s->backend_fd; > if (ioctl(s->vhostfd, VHOST_BLK_SET_BACKEND, &backend)) { > error_report("vhost-blk: unable to set backend"); > ret = -errno; > @@ -208,29 +203,69 @@ static void vhost_blk_vm_state(void *opaque, bool running, RunState state) > } > } > > -static void vhost_blk_resize_cb(void *opaque) > +static bool vhost_blk_update_size(VHostBlk *s, Error **errp) > { > - VirtIODevice *vdev = opaque; > + BlockConf *conf = &s->conf.conf; > + uint64_t length; > + bool changed; > + > + if (ioctl(s->backend_fd, BLKGETSIZE64, &length) < 0) { > + error_setg_errno(errp, errno, > + "vhost-blk: unable to determine size of '%s'", > + s->conf.devpath); > + return false; > + } > > - assert(qemu_get_current_aio_context() == qemu_get_aio_context()); > - virtio_notify_config(vdev); > + changed = s->length != length; > + s->length = length; > + conf->heads = 16; > + conf->secs = 63; > + conf->cyls = s->length / BDRV_SECTOR_SIZE / > + (conf->heads * conf->secs); > + conf->cyls = MIN(MAX(conf->cyls, 2U), 16383U); This hunk haven't changed since v2, but I've only noticed now. Where do these constants come from? This code is extremely obscure as-is, no explanation, no comment. Are we applying the same logic here as in hw/block/hd-geometry.c ? If so, let's just factor out some helper from there and reuse it. If it's inconvenient - at least comment where do these values come from. Another thing: these geometry values don't change over time, why we set them on every call to update_size()? Maybe just put them into open_backend(), together with setting logical/physical block sizes. Andrey -- Andrey Drobyshev