From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11021115.outbound.protection.outlook.com [52.101.65.115]) by lore.virtuozzo.com (Postfix) with ESMTPS id 8B5BD80266 for ; Thu, 3 Sep 2026 14:56:13 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=D/5rJRvTbs89qSAk+0YkbgH7JZvZxl34MzZoQvD4WXbPF/3SSwFC8d87UAqVCivdWxVAFkEZOa1Q0D+kvxAAxGsVyxD95ZbcW066DHVtmNYg8JoV1OcdJlAUunImap+xLO5d2vdEjxCd4ig19KxckqXdD81v12GTOF8GrZfSy6LQ8DMUFQ9Ak4q0iUHJX5fkcU9KD00tg25U99saXUhwjjQrW4d/CTF02BdWli9XXXP+gSvbv21tL3fQu3Ob1/plVA946qydVIlpPIbx2709ew08tEO33cEe64/Br/t/TkdLqLvSHw+Add41r17jvWGJwZFqKow5uRrU5oxF3hdWFQ== 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=7J21E7+zFFxDIpRSN661U1SE8bHwCLMgppWEvXdFzG8=; b=k9Y/fO1VF5YmYGfa3TZGTg4qxSaxv86B+agB0+ead2BVcqmjVyVlsnpcW5DxtuyQ+O/FGOrz3GPLNN9ruLq1ndvE/F0wPiL/Luez44MetgwynU2++AyWV1hw8zVxAAEHuM83X+5UA+B7BY4SYdsFZBsZ1bw3u9OqRVjqX8Wl00EXhuJqdAGNSRfkneCcYU6cD/lP6in0KJsjbpDUalFP6xx6GbgCw4Wl4zS8aT8JQOfJnXSnVb1JV0gxvsDbaV3rPdX/u7NhA3G05u8sLUOwy7ewEX/SFuFdZePo3emAQdv/G9qh58HXFiqiAKpkhjArDVgoa5RRSSrccAS+/Dh0bA== 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=7J21E7+zFFxDIpRSN661U1SE8bHwCLMgppWEvXdFzG8=; b=uMGegGPC4P0m97V2u0ECSu9jERRtkeYoFddv0UF/Zkt90aTpXaP7MkC18rVyUC04+ICkiVlgwt4XI1Ve31jg2UyCb17ra0i8y99NHlRplKLuOvNiQHqULa8PlgJbVubJdyaYs5a8gEKkZTCn/R1RFkCWOEBBhQ/kUI72epEWMd6yHyeISw31UBCBOUjyWszxaRo1lrJ4Frs20/uoy5POiNgdpKd7rEZKHI0nFNSHwmyHeCgdy4aCRB+zD9zx1Iw65nebCbgaaIHI/MKdIxsjd1eSnv6whrghc895z9Y5D55Ryb+LFXH5pY/H4Mgjc6iwZfEXYQUD3fFW2XFzqDDXeg== 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 PA4PR08MB6128.eurprd08.prod.outlook.com (2603:10a6:102:f2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 3 Sep 2026 14:56:11 +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; Thu, 3 Sep 2026 14:56:11 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: Re: [QEMU HCI-8.0 PATCH 3/5] vhost-blk: add read-only flag From: Andrey Drobyshev To: Andrey Zhadchenko Cc: svt-core@virtuozzo.com, den@openvz.org, andrey.drobyshev@virtuozzo.com In-Reply-To: <20260903123204.24035-4-andrey.zhadchenko@virtuozzo.com> References: <20260903123204.24035-1-andrey.zhadchenko@virtuozzo.com> <20260903123204.24035-4-andrey.zhadchenko@virtuozzo.com> Date: Thu, 03 Sep 2026 17:56:04 +0300 Message-Id: <178844736480.581266.17142871141380337557.b4-review@b4> X-Mailer: b4 0.16.0 X-ClientProxiedBy: FR5P281CA0017.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f1::9) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|PA4PR08MB6128:EE_ X-MS-Office365-Filtering-Correlation-Id: 29c5da0a-92c4-4f6b-d4aa-08df09cb7d6f 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|52116014|366016|1800799024|376014|23010399003|22082099003|18002099003|5113699003|4143699003|56012099006|10067099003|38350700014; X-Microsoft-Antispam-Message-Info: F2IBwWq4Bv6SyK+AyUVmSx0eI688RSD3DIHr9Im+xIi01Thd9beNdANUwPpVZ9jcjy45kKo9GTIk3lgdj+QOX4QH0bakqfTNXG3+pJdBS/2/F7b+lg04sgdnxZgU3ifh/FF0Y+umm+PmvI4bl4xtPCklmlnd2VB5KIvlTKR0fPcGMaxC/hdwXrWCZ6ySA5TaCj3qSLLlGgQjQ6/K0MIypCHardYUtNic0lzkGrNU24PG1dezS18W3sHMUF0BGvYUYz0GZ/bUOq43WKA3eRclqiab45cfNLmHy9oYXI9ONvDAzgmPMhc1bgPAD8s/ZEbxB6Zw8AmtxdzAasv+32xIAnYq0caVYvBSbJ28zj3U1RUzb7dazYpK0Iv31Fw7X0QaQtwGvVkbTPv9ghRgOFaY4qeSXR58aofCWpd5evHKjDqCR8yKfHz0aSedLNaRnW7chY9fn66hGTnHBlb1THofKS5bi2FLbci8y3oOhIALVN2mKbS4+hgw4U5X5InuCmguLFmtQ8yeVfveg6pCzA9O/HxUZGnzQEZiw4pIcQWjA8NWdPC5q2oZ7/aTIzBTvnxYTSkK0J8HEh5/EU53YQN/wscByjesKGYA3DjN4VNneL36Fp5BislesgAdwIN0IsniBJvv+J6n3M8eKFJW390FvafFBFt23pqJ60Gf70GgJMc0znEdeappUAeNWpzlhzfsESdTgg93TIXOTPHyyhqPudM8RJKQQwq55eoT2U/W9Z8= 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)(52116014)(366016)(1800799024)(376014)(23010399003)(22082099003)(18002099003)(5113699003)(4143699003)(56012099006)(10067099003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VDRSNU5ZMUZKaE5nditTVEFGbmhqNU9GanNNT3BUcWQrZGh4YS8vQXlrUWU4?= =?utf-8?B?dUN3WkFMK2haVU9mK3o5NkMwb3ArSTlDT01ENng3SFo1NVFIQW5Rb1N2ZzY4?= =?utf-8?B?aHdvWGkwZG5KZklqM20rTTlIUGZXM1NMTkNOQVozUml2WWRwbTl6RDhGZkhZ?= =?utf-8?B?b2JFQ01JZUFpT2hTeVYra011UFhmSXYrL1kzWXdqSnZWQU0vVURUWVpOcDc1?= =?utf-8?B?ejArWEl2aHJCSExTaXZRTVJDc1J5NlQ5MWFKUHRuUWw2RitaVXErbnoraFh4?= =?utf-8?B?am9aSExYWGJ1UGtxQmxERXkrb0lHYk8yYlFMUjRwRUtVZ3o5SmlFTFlnTkJn?= =?utf-8?B?SG5wdnI4UmR2MmhwKzJmd1lqd3ZJZ2VzcUdQbExSb0dyNDFNVTE4bDBHWG9H?= =?utf-8?B?MVBBcDZiTUFRYk1Kb29tMHQ4cWtqbEN3ZVZnREdSc2hLUHZGeG4raFhoQUkw?= =?utf-8?B?M1B4bm9UdDNKOGIzdmFsbXRVcUdYam9QeW1BSGxILzkzM2hjVWVQQW5nbVJr?= =?utf-8?B?ZVB6RTJ3RFI2ejEyZzFiVVFGbTlLdGMxRDEwaHQ5Um03Tm5MSys2Um4vRlhC?= =?utf-8?B?S3dQNXZIcFc2WTFnRmJhYjF1Nkwzb284VTJ5N1I0SS9HUUFlaXlVOVN2U1kw?= =?utf-8?B?cm50bVBWUTF1Q2pxUlZ0TDJGYlBvYmUxelo4TEovVHk1eWxTb1BhaTlmSmQr?= =?utf-8?B?SDc3WXFpZ1QySzZLb2NjQUlRTU4yMUN6L08vaTBqQVlqQXdjSTUxdG1QbURp?= =?utf-8?B?a0N1eDF5cUdrZ3llQ3B0aHFaMHYvbm1Ldk9Zc0RnMXh6dnpoQTNiRDhyR1Bo?= =?utf-8?B?a09vSFd4QTl6N3NKTG5CTnlkWGRKRnNsMUtMTWZvUXlXRTJGeEZBOWJiRWM0?= =?utf-8?B?eUMyL3RYazJIdXZZU01YZnkwTC93ZnRXV3gxN0VYVWd5VnR3UFB2MEpROXQ0?= =?utf-8?B?M3QwSVBMdEF6WDNBNENkd1ZEaVVveGxQOGo4dWdLMjhpWnZjZ1NwQ3BlWXRI?= =?utf-8?B?bVpJaEs5dE0vSE1WNU4rWjZ5UjFuR05rS0U5Vkw5OVBXZS9lV09IRWw1bk9r?= =?utf-8?B?RlhiYmtIVlNvSTVyZVM4NnlDUXBlb2ZoaHhaUFNTd0duSWpXSFNENUtKQVJs?= =?utf-8?B?WjIwWUM5eUlsY1FhTUlYQ2ZiUUlXdG9UcmNKNmVUd3dkMTA0ZEhjblBIZWRl?= =?utf-8?B?MnltenhUclc4b2o0enZSYlRDdXpieDUwbisreU13bStNZzBleFlFOERaY3Ft?= =?utf-8?B?NXVqRnB6ellDSzBQT1lERHRHdms1c1ozcld3TE82NjhjQno3SkxINWR3SUlW?= =?utf-8?B?b2hyT25JMDM3Nk5jeVh6emo4bTBpV0VJSUludHBPK1QzUkRpM0k2cUZKMXNo?= =?utf-8?B?NWEvZ2lNc3h3V0hrY0ZlNzBYMHczU1ArY1k1dkxXcllmcGk0SUNDR2w0U2Mw?= =?utf-8?B?NzlxZUJYSm15OXUzMGNZeVA1UlZUaEZ0bE1Yd3NyTEwyL2hLay85VzVvOURJ?= =?utf-8?B?SmhJUm5DRVZKS1dyV0hHYTkyZ1VEaDVVek5aUlA1TE1URmR6REpXUSt3RU5M?= =?utf-8?B?VHJHWU5NNkNSaUhBOTZoSGp2c2FIUEw5TDk5SlM3L1JIa09SOTVwYkErVzhI?= =?utf-8?B?VGt6MitFS0g5K2xrVE9UN1FQL29ndGRYVnE2d0JOa2dud0xSQjdwZmxYUDVJ?= =?utf-8?B?MVFycjdIUzI1UUM4TXBaa3JoNHdzOXM1TzZ2aVRxV0NTYXkwZEg1dURyWmRj?= =?utf-8?B?RzM3OVJMU1B2RGJYSFZXMnloelFJN09aK05NU2c2ci9IaGQ0ZHNIdlY3VGlu?= =?utf-8?B?Qllua2ljZEJ0ejRVS0JYN3pNZzN4MmxyTEpFUWdUUmxrTXhZVzVZMVo4eTFE?= =?utf-8?B?QXAwOHhSc091WFRLY1NoelFtSUhXVmRZL1FuNEFVUXBkOWJFYzZmY1BnV1ox?= =?utf-8?B?Z3ByUVF6NW1Ud2J6Sy95K0ZYdUdpci9QUVhqS1lSa0RmUmZLclJNdWNqMjZY?= =?utf-8?B?cFlGL01vcUhNNGRJNGg2RVdUMFVUVnBFeFZZMlpJUGRUZFVJSUgvRW4vQUMv?= =?utf-8?B?NXVkOEUvcmMwY2JYa1pkazJOWlY1bUlUR1d5a3ZVMCtRQWhFMWx1ODZGWkFL?= =?utf-8?B?ak51eXQ1RUIyc0l4dStKRkJEVUFGb01wVHVkb2hUSTRRVmQ5c09aL3Z0Qlc1?= =?utf-8?B?WkRVVjVsYlU0Ym9uN0Fsb2pMUDBRMjJWUTFEUkRtOU1oTzErNmRIOWVWUkl2?= =?utf-8?B?dnBEV1lwYzcvbkNrVm91WWhmTktlMWFnMFk4REV0c05ZUy8zR05iZlpSaHk4?= =?utf-8?B?Ukg1MFlwVUkrdzlRWFAvL055ZTdld2Rrak85VGVVd1RTRFh2WlcycE52YmFF?= =?utf-8?Q?6ieuFAn6xhS05EfI=3D?= X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29c5da0a-92c4-4f6b-d4aa-08df09cb7d6f X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2026 14:56:09.9031 (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: 90e+jFsjOikW3QhbtaN17/0m7e4X+QF28BPBPVJfIY2gqlF0XsHNyXBrxZhh+wQzAkgvlNE+Z9OS6660BYpQX0PBxhNrzwEpkMbw65vJFQk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6128 > and set RO respectively. Also compare BLKROGET with the selected Nit: make commit message start with their own sentence. > mode and reject r/w if needed. > > 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 a3e0010982f..47b6e560d47 100644 > --- a/hw/block/vhost-blk.c > +++ b/hw/block/vhost-blk.c > @@ -24,6 +24,7 @@ > #include "system/system.h" > #include "linux-headers/linux/vhost.h" > #include > +#include Previous patch removes the header, now we add it back. Let's just not touch it. > #include "system/runstate.h" > > static int vhost_blk_start(VirtIODevice *vdev) > @@ -233,8 +234,10 @@ static bool vhost_blk_open_backend(VHostBlk *s, Error **errp) > { > BlockConf *conf = &s->conf.conf; > struct stat st; > + int readonly; > + int open_flags = s->conf.readonly ? O_RDONLY : O_RDWR; > > - s->backend_fd = qemu_open(s->conf.devpath, O_RDWR, errp); > + s->backend_fd = qemu_open(s->conf.devpath, open_flags, errp); > if (s->backend_fd < 0) { > error_prepend(errp, "vhost-blk: unable to open backend: "); > return false; > @@ -252,6 +255,19 @@ static bool vhost_blk_open_backend(VHostBlk *s, Error **errp) > goto fail; > } > > + if (ioctl(s->backend_fd, BLKROGET, &readonly) < 0) { > + error_setg_errno(errp, errno, > + "vhost-blk: unable to get read-only status of '%s'", > + s->conf.devpath); > + goto fail; > + } > + > + if (readonly && !s->conf.readonly) { > + error_setg(errp, "vhost-blk: '%s' is read-only", > + s->conf.devpath); > + goto fail; > + } > + How about doing it similarly to file-posix: if (!s->conf.readonly) { if (ioctl(s->backend_fd, BLKROGET, &readonly) < 0) { error_setg_errno(errp, errno, "vhost-blk: unable to get read-only status of " "'%s'", s->conf.devpath); goto fail; } if (readonly) { error_setg_errno(errp, EROFS, "The device is not writable"); goto fail; } } In addition: conf.readonly value comes from libvirt. conf.devpath is also provided by libvirt. Shouldn't we check BLKROGET early on and fail in libvirt instead of waiting till here? I'd prefer having both checks. Leave the check here, but fail early on in libvirt. Andrey -- Andrey Drobyshev