From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from DUZPR83CU001.outbound.protection.outlook.com (mail-northeuropeazon11022092.outbound.protection.outlook.com [52.101.66.92]) by lore.virtuozzo.com (Postfix) with ESMTPS id C7CC7803C3 for ; Fri, 4 Sep 2026 15:33:27 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=zR7XUYEPaaQK8cYlMf9f/J501aKfKNLrRVZZU/H8eHKEig3OZHsjn0O+XKejkZLrtohUkTqzCJwMWCCKrXdKNTcUXjzLasdtG1IfGuJm6EPjA18IpISbGxo6ctYtrjiYl2llc5w5s/McZjB+3l0nMqrFO7txxTGO0NNUXptpCJo44lML1uR5NZj4SkhGqL+oUCX/YHxaaF7dox6uPzS34IXYxY4kR7i3cysoPXtV7HVBEN+OtV7bgOEx7ZPWf094JIevkY9HSwmjcZJTvE2uhkpff24kusczQ+TIlFksnTQitdDPVuBiX3wIzJpgoBDQ+RpTs7IFTOzQuTBl7yjRPw== 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=Qkm99XhnYDqtz1OINT+UdwypDKlEugfzUlO5iQm+DJ4=; b=xOfV1tZ3TgLkiUhbrG5ixyUwiz2zhXgAyiFbFXNFakPAe1DR2jcHoTglSxteoTusF3jewxwN3MxinKCoisYD0F9SHmdPzblLPaeA+WPjiijtI6LxeQsDpC7eVfVncxDEGaCNAS9IY7lCZtAZUAH9dyhqkW6usQ4UqOAj23aKtXRX5XsmwZhC5mrjdmsW/EE60j6dkQX2yiVfbQWfw0wX4Fb1B5yehD6nBR7PPUMkYj7xvNMCxQV1CEqfSxljhLqsyKg15ZfG0wPH6GEdGw5vM8ogmGPsyO5RCjNtPZT6yEmkRRdf+nMGKpMBQg/suNhNLIXEHZoezhT7/CqZ2a2+VA== 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=Qkm99XhnYDqtz1OINT+UdwypDKlEugfzUlO5iQm+DJ4=; b=Fbc+phJa1uZNdqUvE+s6ajRuMVlsANkgQyVMatKUVWNSJSw3TSnCpeNlfLTxh+jgzbjzjSCPS6c4rj8xP0owACii2hDGbrgGji7w6pHU+T7GVaLXvWjG0lOecQY5/8p03kTaG5Nr/ruWvgV+CBfYpHnv9EgdIUrwPZ6/ZQ2sDeHZsHd3eoggL9b83K13PA5wBHDBgxw8Ev3vbDy+wU7tPART72WCjslHLIaJnZtaBOmDDXtBdtGqHCC0TbM6jgJePhVrW4sVgRXlWHXPcZLkxMfHu0lQl1AQtoQDt3/VbCSkKmjsXi4+eJ1yjokYDNKwY+iAKN6RWGStAnfDG3X5Tw== 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 VE1PR08MB5678.eurprd08.prod.outlook.com (2603:10a6:800:1a0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Fri, 4 Sep 2026 15:33:25 +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; Fri, 4 Sep 2026 15:33:25 +0000 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Subject: Re: [QEMU HCI-8.0 PATCH v2 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: <20260904132155.180581-4-andrey.zhadchenko@virtuozzo.com> References: <20260904132155.180581-1-andrey.zhadchenko@virtuozzo.com> <20260904132155.180581-4-andrey.zhadchenko@virtuozzo.com> Date: Fri, 04 Sep 2026 18:33:18 +0300 Message-Id: <178853599893.728973.2201968989564457478.b4-review@b4> X-Mailer: b4 0.16.0 X-ClientProxiedBy: VI1PR09CA0127.eurprd09.prod.outlook.com (2603:10a6:803:12c::11) To VI0PR08MB10656.eurprd08.prod.outlook.com (2603:10a6:800:20a::12) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VI0PR08MB10656:EE_|VE1PR08MB5678:EE_ X-MS-Office365-Filtering-Correlation-Id: b5bd96cc-457d-4d1b-03e8-08df0a99db7b 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|366016|376014|23010399003|52116014|5113699003|18002099003|22082099003|56012099006|10067099003|4143699003|38350700014; X-Microsoft-Antispam-Message-Info: tnfXqn6nru1tjpo99/i+4NucTL3pos37xptR3uke62SSUDUlWPFFTW8lgh1zmB1wGTnHdeOz7FlRLXI5UBQuMlrPnw0Bvl5RxFanHlspPdTiximNeLP6Pnhq57MBerK9mbwqXKqAymBBAim07wDrpRxQ7903qhhGeNvtULFrn7bKigNagFfeOVkopEF9GL9MX28N7QPYcJfBuiuOHU8kI1SPjPn7pGVgVxipMBpPKGBWiJn8Fzme8WRwPxeO3gcF7wo6YpgKxEflDTvUpELFBLbCXRQRyrOr2wvc20N7+WLlzElgv68oe2ooRWzBtkHK4FQIsSuhxSNYi10Duxh8WvpFsCLNTEpO/XdUi2qXdKBAAXF4QC6imkqgjNgzrwLHk/zXSlBhhB4qzyciMyhoEhzXStzQ9Og705K+S+pEQwK0EwMUmAz340InyWXctaxS/63eUwHKIyjC8EcSP/5Bj9lTQrE2V6vfzypMdQDN/6eQygK0SPgdwYpXylOhzTTdYFwjVCh4xTVGsf72HBTBXrAXaGR4P3pZHsXZmcuGJcoh+1YHVNbsOWIS48ykGbw77K4r4j9Gkw6f1xmBke1axNNbRwOgiQfB3MMAirPx41fMpLKBkWKAaD7tq7UlfRkEkry3jJ3Vhmtq+n9cxrc0EINHTqXQpWFIsRTNA6jUaoZZokpC5wchp+MxfFPBwBXru3X2t4mzkQiA+5+c9Ee79B5Ym3NYQzDaFe191UXU02Y= 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)(366016)(376014)(23010399003)(52116014)(5113699003)(18002099003)(22082099003)(56012099006)(10067099003)(4143699003)(38350700014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bytUK2pZVHNpTG0walgybnRsU3h0RmdlbkszSFJhdHJWRG9zcUtQclNuVW11?= =?utf-8?B?YWpjM0hKWWtrcjZmYU5IVzZwakVJd045b0xYUlF3WEgwanl3TFN3QmxzbDdk?= =?utf-8?B?Mk1nbnpQTW1CWXZhdDFjUjM3b0orZEx5REpvaE92d1phVXFDOWdOanpOei9Q?= =?utf-8?B?djBoUnFaTGxBVVpxdnhZd3hyQ0tTSTlZK2l6NGk5azhLaEFjZ2tWYTA2ZkI1?= =?utf-8?B?ZktMVmNPTEZKSjlZR1dNQ013WTlqSXEzTmwvZzhYaXJOOGY2NjhZMmg0dlJK?= =?utf-8?B?cnlNTkVKeTFQUDZ2QmhTR0NBNEhhSjRBL3JYbGlkaHd5Ty84a0lRNENXTkFT?= =?utf-8?B?Vk5WYWthYisyNG1YVTNkVG1IdkgrKzRsMG1JQW9SZmU2U0h4UFl4a2lya0lC?= =?utf-8?B?M2VWOFFGZllEN01WSDd0Sjc4M0dZL090QUt4VS8wWTE3SXRtcGdLMEVOZ2Zi?= =?utf-8?B?enhTdkVCMmJyekR0bmJXeU9GSXpLZGFCdWFueGJBQnEwWG83ZmM0aUVxRjhy?= =?utf-8?B?R0tUaDVPTUNRQlcrN3hoTCtwc2U1QVFGODVjK0VVTzRYeXFqdUl6Rml0Nzho?= =?utf-8?B?UEh4ZVIxWDRBelA3dmJBT1pWNEJoZ2FJZEVKWCttTUo0NW1NNUkrTHVkeThM?= =?utf-8?B?Nlg2YWZ6RXJkTlU0ZTlsQ1NKQ1M3cE5oSXJyRldkcW0xYlA5a0FnNWx1Mnht?= =?utf-8?B?T29ZRnJqOVRLQmdydFJKL1U1WVVzOFZ4anRXVkFjZkxkYXdpUmF5d1lJeVFD?= =?utf-8?B?NGwwMmEraks1bzI0NWtnVmtIOTJjREt4ZHdFTTRNOWtRU0hrUGFXeE5TK0pz?= =?utf-8?B?N1F2U3J5WEtZaVVLeXlnTDZ1TzJ5VW9lOWFvKytUb1UzSWt0Y2YwTE5LU2lM?= =?utf-8?B?b2RwZkpCdkZGd0JiNm9qcm56dzZVRzlhWDhtemx0bDdSSXdvc1d6ZEczZHRW?= =?utf-8?B?Z09sT05naHhnWHFiVHFmQjhJTGtheVZPN09td2Y3SjlMa1Ntd1FXK3hiYm0x?= =?utf-8?B?Rmg5dmZpMFc3ZCtiT1BQOGluYU1oNU9QOE4xcFd4RWpvS1IwVG9XZm5DZ2h3?= =?utf-8?B?VmxHUjBMSHJzMDBqakhpMnR1bGpnUE1xc2cwWEhPS2pEL1VId3h4SmQvSmNQ?= =?utf-8?B?dEt1WGx5dmFuU0o1c0l0MW9CckUrYVF6N0ozMWk5VnpUdXdYY1V1blZrM2Fo?= =?utf-8?B?S3N3UzF5a1pXc2hFSjFJcjMvYnNoTUNLeHhTd0x3T2t4OFpqclhrcGNUWUdH?= =?utf-8?B?SXUvazNRbTB5V3U4WGxHTjhxQzFwenNsN2t4bjVMMGhSMThrVURXOVZ0Rk9T?= =?utf-8?B?ZWV2bVNLa0VEZHhwb1dSWG9JWUJ2NjVidzgzaXEyVExyTFBhcmtxMVN1QXly?= =?utf-8?B?ZHNlK0Q1aEtPMnRpbEJuWDlVQTR4bGRwNGQ2eWpFQVY5VnZ0TUFLUnV5bjRm?= =?utf-8?B?N0JUZTRFOGRLSDkwNVlMYTkvZnFGVGd4QjFXUFkrOWd6MFVoUEdXcEszS3hi?= =?utf-8?B?YmZ4Y1NpS2pxWXlUNFNiOXEvVTB4ZXU3QUtTSCtMcnNHcW13alBTbUlUUDFH?= =?utf-8?B?QXhCOUpZakVnekdaaTZheUMzNDRPWmlJY0tsUGt1MU5RWmlCUXBPSmVraHRP?= =?utf-8?B?eDlLdnEwNjZuK3d0aWNnRDlEcVQ3WWNNU1M5QjNGR3FSUDZaR1Boa1lWMDJa?= =?utf-8?B?b2J5QVZLOXN3cTBwUjhYWTYyNGo2MlRJMGsxOFlvRTE2b2RqMGtxNHR5VWhm?= =?utf-8?B?bE0wUG96czJ5UzA1MnVSWTByQy83SWY1UkFpRHpSQXR4VXhWb25JWU1TRk01?= =?utf-8?B?Q29LMEFsS2QyYWh1ME9FQzgzNXRHZThSOVBOcWN5RzJkNFNjeXp6SVFGZURL?= =?utf-8?B?ZGJGUFlndG85dk1PaUM3ZDZlUk93aTBHeSsxblAyUlkwdVF0alVrOFJYQ3hw?= =?utf-8?B?UmxQSWxFRDNPa3cwMFJoV2ZqclJreXM3Q1Z1T1J4cENlVGwyNk9kK0hXVjlB?= =?utf-8?B?b0h4MmpNb0RIczNSQy93WE96a1E0TXN3WmtNTjE2UC9oSGxMOVJKREhiQ3hr?= =?utf-8?B?UDdIMWtNcW0xS1dzdnhwUlZBcll1bWZ5TExrM3RITlBxSGwzUTBMbVBZTW5C?= =?utf-8?B?RVZ4QnNwMDNyQlozeXRjcVpGRWJMWGhTayticktWWFlNc2I3Tmp2OUxvMWZH?= =?utf-8?B?bm1wdGorVkc1QWM3RWhLTmE3UDN4MkVnUnlpWE4wampFVWNFYUF0emI1ajkr?= =?utf-8?B?K3YyVHlVK1pKT2F4ZTQ2UFZVeDFjN2JEdEFNRW4relQ3VFNSa2lQMStwS0pH?= =?utf-8?B?RmlHV2Z4MDNMTWp6QWZXL0FsUStBVFJQMnB1THRiUnByTGh2Qlo3MUcvd3pn?= =?utf-8?Q?Ba9PSWB4kjsGofA4=3D?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: b5bd96cc-457d-4d1b-03e8-08df0a99db7b X-MS-Exchange-CrossTenant-AuthSource: VI0PR08MB10656.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2026 15:33:23.9933 (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: zpzL400M0E4sxCWhEemof0HsAhG3y6QVVR7yLBdwmYf0cIyOp0rk3gQkGk0FYvwgR0oITF7LnxzM8ZDKa+R2MtHsR2MfuyYxxRiYBifRC3Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB5678 > and set RO respectively. Also compare BLKROGET with the selected Please have commit message start their own sentences. > 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 24f4fbe2b68..04a7013e521 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 Header belongs to patch 2. > #include "system/runstate.h" > > static int vhost_blk_start(VirtIODevice *vdev) > @@ -232,8 +233,9 @@ static bool vhost_blk_open_backend(VHostBlk *s, Error **errp) > BlockConf *conf = &s->conf.conf; > struct stat st; > bool changed; > + 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; > @@ -251,6 +253,23 @@ static bool vhost_blk_open_backend(VHostBlk *s, Error **errp) > goto fail; > } > > + if (!s->conf.readonly) { > + int 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, "vhost-blk: '%s' is not writable", > + s->conf.devpath); > + goto fail; > + } > + } > + > if (vhost_blk_update_size(s, &changed, errp) < 0) { > goto fail; > } > @@ -406,6 +425,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); > } > @@ -453,6 +476,7 @@ static void vhost_blk_update_config(VirtIODevice *vdev, uint8_t *config) > > static const Property vhost_blk_properties[] = { > DEFINE_PROP_STRING("devpath", VHostBlk, conf.devpath), > + DEFINE_PROP_BOOL("read-only", VHostBlk, conf.readonly, false), Not for this patch, but related: AFAIU currently "" in domain XML is applied by libvirt to the block node. Correct? If so - we also need to patch libvirt making sure it applies to the device. Andrey -- Andrey Drobyshev