From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from PA4PR04CU001.outbound.protection.outlook.com (mail-francecentralazon11023109.outbound.protection.outlook.com [40.107.162.109]) by lore.virtuozzo.com (Postfix) with ESMTPS id CB87A80275 for ; Thu, 3 Sep 2026 12:35:03 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=SSlLqjNqwJmhUn1Fe+I5d2Fs7iD8zxFxoeRs7QBrpfiOFxiIZCj2qxSTIBwn6YgNVYdIWkaJsNIuBceq9GNDeLoHgwCbXOfRBi6XkVwxGJCjJMz/cASJ8+SAg8/k6GsWbMLn+m6BluSKehmabYnRQayw9YdqBkdQzg5VK3Q/e/Wvvp31KwA4b/uZCxa06iySfvyQdat18eYGnUwBbC+nv2/HKenlxBfgc3DekjPONJlA4/BmazHn3K/ExS6l6bevCWcl53ugvVxcsIxQnf1aO48Hr9Thy9K1Oh+CuKv2PhPT41HAt6SuP/H+/PQciz+WcH2v6JIKraWIwUM6F//xkQ== 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=QoxGPjZJpidPybxGovcYMJKw6atMbg6FLmv5ulDISxk=; b=XZ+htXZuEO/WWvqNEMwpTQSw/PjHNgDgmOkj3r77rVeYzttSOjCSwhPZqRR5cJFBzDT8jGcz7ak68+35iK3LRVq67n8pFlroPwk96CQR55WnFiWWNaibKdfmAhHISjnqBaZa9s9QkiUG0kBSbcSoee2HImCnbopqbVCy9lgJCF13bUHayEqKFnjnLly9OPvkKUlXzveK64TmCLycMXN8UJ/MQ3ZqLKPtrDl3y23bM5ScM/G1b9/XfYKw5pKatt2wX3FVFZmfaLX6PQra2Vgrv8L/2imCmEAdp6xEpSP0QbD50OkCpRT8Q2SIZkIxy+zmmBPetTZT2CBdgTFBn7dYbQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 130.117.225.111) smtp.rcpttodomain=virtuozzo.com smtp.mailfrom=virtuozzo.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=virtuozzo.com; dkim=pass (signature was verified) header.d=virtuozzo.com; arc=none (0) 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=QoxGPjZJpidPybxGovcYMJKw6atMbg6FLmv5ulDISxk=; b=n9kAo6ms/f0CEW2cXAnnYjBcrVHUkxzWNRngXsh8I2xkf+l5aIT5qir7VjoEwfC1FjvC+A1UzSXHjy8si3GoYoC3Gzo21Ee3t0JPpB6/kaV5NrLU+70TnMvR4jgWhH+2CrPjMp7zBP4676tF9HRgEtQAKp1ijKWlV/IDU2kGrvcps+Pg0XSaeOJXz1zmPgrJsQ7YzL1Yug8cXY29q6lxwfd5SCaPEqJvZrxG+OPPTzQa44oj6Xvl0QA2BzdA4nf1KLWdcdwthRzq4+2eRb29YDbPDLqQ6qE8qfxQLFm4lgBMOtUjj0xdVBOBYKlWE45HDhBA4hliFCwQHqNfuYhTpw== Received: from DUZPR01CA0043.eurprd01.prod.exchangelabs.com (2603:10a6:10:468::6) by GV1PR08MB8238.eurprd08.prod.outlook.com (2603:10a6:150:5e::18) 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 12:34:58 +0000 Received: from DU2PEPF00028CFC.eurprd03.prod.outlook.com (2603:10a6:10:468:cafe::af) by DUZPR01CA0043.outlook.office365.com (2603:10a6:10:468::6) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.11 via Frontend Transport; Thu, 3 Sep 2026 12:34:58 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 130.117.225.111) smtp.mailfrom=virtuozzo.com; dkim=pass (signature was verified) header.d=virtuozzo.com;dmarc=pass action=none header.from=virtuozzo.com; Received-SPF: Pass (protection.outlook.com: domain of virtuozzo.com designates 130.117.225.111 as permitted sender) receiver=protection.outlook.com; client-ip=130.117.225.111; helo=relay.virtuozzo.com; pr=C Received: from relay.virtuozzo.com (130.117.225.111) by DU2PEPF00028CFC.mail.protection.outlook.com (10.167.242.180) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Thu, 3 Sep 2026 12:34:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=MIME-Version:Message-ID:Date:Subject:From: Content-Type; bh=QoxGPjZJpidPybxGovcYMJKw6atMbg6FLmv5ulDISxk=; b=oP8hnB7kCbU7 +D6GY/GHJ0YXb/xsbS8Xh3LEWg6pLLShSHJND187bUzUfEOPFNrFVi8id2E9k3hzJ/TE3HolOePS1 3LewveeMRyBTYnDyRp9IbTyJ5CcW3Gt5FlEkl0SpLjCHhqWp/QniABLVO9cfA3J9z00UC36Vl4Lov VmaQEIcVAphynW9JlSb9a3tSUhp34OyTAjOtVInpUtIZyqI6IR/HlMJ1/+tq4nz4mFj5uYJZWuNR2 9tyOTGorcRwdXv0NQJc5E0ZTvctjFnNYOenL5/fbvfVvC5BmlO2CJR5pxbNGAiVz+Fnh1m2Za/t92 4bHatn+boeKVIw6Thzw3Ig==; Received: from [130.117.225.5] (helo=vz9-demens-1.aci.vzint.dev) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1x26cF-00AcxS-1P; Thu, 03 Sep 2026 14:34:55 +0200 From: Andrey Zhadchenko To: svt-core@virtuozzo.com Cc: den@openvz.org, andrey.drobyshev@virtuozzo.com Subject: [QEMU HCI-8.0 PATCH 3/5] vhost-blk: add read-only flag Date: Thu, 3 Sep 2026 15:32:02 +0300 Message-ID: <20260903123204.24035-4-andrey.zhadchenko@virtuozzo.com> X-Mailer: git-send-email 2.43.5 In-Reply-To: <20260903123204.24035-1-andrey.zhadchenko@virtuozzo.com> References: <20260903123204.24035-1-andrey.zhadchenko@virtuozzo.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PEPF00028CFC:EE_|GV1PR08MB8238:EE_ X-MS-Office365-Filtering-Correlation-Id: ecb2f11a-eb42-40ab-fcde-08df09b7c433 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|82310400026|36860700016|376014|23010399003|1800799024|5113699003|13003099007|22082099003|18002099003|56012099006|10067099003; X-Microsoft-Antispam-Message-Info: JtCTKGjhM4uI93TmldB4I4Wb1Kr8qiuanren+uPrpJWsy/OhMKuOL8I7NrUlTTTj0b9LfVInoH6MEfwXOPSGGeHqj1QKkSqsP5N7Gsc4T1OMVZxFLTnYNvSSbAWct/J4celcHOgLl+XncRkTGqEHymDvrQp9H6yIQcOk5vKjF0XbjC4esHT0cOxRT9Up8/cTHMeQNcB557m74Jb+nL+YlH9pUjlT8shhpIfpfVZSffjD8qrXwUXGFHel2Wu7sAbRT+B/dfIYnx9D5Pfi3HQc8GLGmES75oPGGjhG4CgV/n/L0wOFCx8PvS3uMPWwVj4DI5C/OzhuhYGzJQR61m32UE6c5MtJV3kfzLE4BAue7pPCoOWJBrdCi4cAQs0IuXIBtpj9YlcNDGgdqh67OaOIRFGbr+fwX1eQSVN0trimIPVXpJrgktdjKDSShRYbdgj4SZgRz2wYeXBx/aAGS3Y98rGfbLGzwXPjGdy4F2mXrGzjMxQeExdPIWUwBvHk60w9DqkUCejYRKgcxrp8psqL1Bjc1+Y3LVdiWrcVuOAxb8EV62bXHAQb0V02/9QImvDWoSRyOiRaelAxly+FyPsWnmKHJtAIkPsbRjemr7fE5EgfwSt6hMCdpGEn4ZKdhWfRjLhAdClkfmniFG5oYT1Ck8ZIyJ7lL7mWCg4DmVtFn7tNDEGgyPq4CfLH14TnE/ZHXHosbFMS4SQxaQEcKCO4UA== X-Forefront-Antispam-Report: CIP:130.117.225.111;CTRY:CH;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:relay.virtuozzo.com;PTR:relay.virtuozzo.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700016)(376014)(23010399003)(1800799024)(5113699003)(13003099007)(22082099003)(18002099003)(56012099006)(10067099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GVof8iOCaYFQp36NmNsnK00CyDHMSBIYk33BsiKHg0b1T0ZvNbeHUNIRhyBh5JwpBoIk8qGcVUQ8dz7fIeSZmE5e4uUkMmbooLILuDbRo8nL66zpwHokDi5wlewstYStHVmqer3dI2aPdB1dn/mIoMIJDMGExMSqHIJW6VrmsEkQF1aW8boIxxtd3H0vho7xBjCDgxbAFJN1tUpmPeRAySozWyBBV994d+sSLt5mGE3l42bd0rPal+w6l2Q3szF3zdTlDVLCjZrd/Pmlkkxif+PkTE0KIHGMQ6ZK1gyTpFlqN5fj1cv0ZROEvC9TGRjzRFD3yKRt4hOUzEkzPDzecvO3WyQ2kA68Fnk5mQCsODaaKRwFJot7KaCRPIdhrMWeOPuDyTsgHuFifJLObcI65WuDwJ1jc0aIawglcc3LC5HboP51VwiiXCzNtCsoo/Ue X-Auto-Response-Suppress: DR, OOF, AutoReply X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2026 12:34:58.5262 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ecb2f11a-eb42-40ab-fcde-08df09b7c433 X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0bc7f26d-0264-416e-a6fc-8352af79c58f;Ip=[130.117.225.111];Helo=[relay.virtuozzo.com] X-MS-Exchange-CrossTenant-AuthSource: DU2PEPF00028CFC.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB8238 and set RO respectively. Also compare BLKROGET with the selected mode and reject r/w if needed. https://virtuozzo.atlassian.net/browse/VSTOR-143437 Signed-off-by: Andrey Zhadchenko --- hw/block/vhost-blk.c | 23 ++++++++++++++++++++++- include/hw/virtio/vhost-blk.h | 1 + 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/hw/block/vhost-blk.c b/hw/block/vhost-blk.c index a3e0010982..47b6e560d4 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 #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; + } + if (vhost_blk_update_size(s, errp) < 0) { goto fail; } @@ -416,6 +432,10 @@ static uint64_t vhost_blk_get_features(VirtIODevice *vdev, virtio_add_feature(&features, VIRTIO_F_VERSION_1); + if (s->conf.readonly) { + virtio_add_feature(&features, VIRTIO_BLK_F_RO); + } + if (s->conf.num_queues > 1) { virtio_add_feature(&features, VIRTIO_BLK_F_MQ); } @@ -464,6 +484,7 @@ static void vhost_blk_update_config(VirtIODevice *vdev, uint8_t *config) static const Property vhost_blk_properties[] = { DEFINE_BLOCK_PROPERTIES_BASE(VHostBlk, conf.conf), DEFINE_PROP_STRING("devpath", VHostBlk, conf.devpath), + DEFINE_PROP_BOOL("read-only", VHostBlk, conf.readonly, false), DEFINE_PROP_UINT16("num-queues", VHostBlk, conf.num_queues, VHOST_BLK_AUTO_NUM_QUEUES), DEFINE_PROP_UINT16("queue-size", VHostBlk, conf.queue_size, 256), diff --git a/include/hw/virtio/vhost-blk.h b/include/hw/virtio/vhost-blk.h index c194b421d9..c6646f5845 100644 --- a/include/hw/virtio/vhost-blk.h +++ b/include/hw/virtio/vhost-blk.h @@ -25,6 +25,7 @@ typedef struct VhostBlkConf { BlockConf conf; char *devpath; + bool readonly; uint16_t num_queues; uint16_t queue_size; uint16_t num_threads; -- 2.43.5