From nobody Mon Sep 8 17:06:06 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=cyberus-technology.de); dmarc=pass(p=none dis=none) header.from=cyberus-technology.de ARC-Seal: i=2; a=rsa-sha256; t=1756988497; cv=pass; d=zohomail.com; s=zohoarc; b=NT1FXzLRtpwOfOzFWetbA8IhmCC2v4YUWOaDpKMXDhV4xieMHW40w/W2r0f5XU0E7sT5ynAR30B27JaP6B8apdRnwmTAgpZ2PgFSMAEpVRGv33b2Rea2XC+46mTD2YlytsmPdGn+hTFkCd0QulDxpPaqKqto4ei1R/DWyu54mPA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756988497; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=d/pBScKQ55oxh6l5KkZ4TKqqBZ8f7cE41GhBkR2uDzA=; b=l4KyFXMRsa6QRmUxg6lqZECAiAc+NR7kh4miWsnw4BuwAVo8uWJhl3t+dETG8IVG70q32/1dgv1+LgiepHrqY3/LJtNKvYAMF+JrcJN2uU8qklrGxKQ8fphvdgy1ICGgUMUJBQ79z1qaSBrCl08LX1/pvL5l2unBudlgQnYYPoY= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=pass (i=1 dmarc=pass fromdomain=cyberus-technology.de); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1756988497583306.7083517165498; Thu, 4 Sep 2025 05:21:37 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id F105644216; Thu, 4 Sep 2025 08:21:36 -0400 (EDT) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id EDBD444300; Thu, 4 Sep 2025 08:12:13 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 8655444218; Thu, 4 Sep 2025 08:10:54 -0400 (EDT) Received: from FR6P281CU001.outbound.protection.outlook.com (mail-germanywestcentralazon11020106.outbound.protection.outlook.com [52.101.171.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id A068F4401B for ; Thu, 4 Sep 2025 08:10:53 -0400 (EDT) Received: from BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:46::5) by BE1P281MB2898.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:6e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.27; Thu, 4 Sep 2025 12:10:48 +0000 Received: from BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM ([fe80::7272:f32d:eb8d:e401]) by BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM ([fe80::7272:f32d:eb8d:e401%3]) with mapi id 15.20.9094.017; Thu, 4 Sep 2025 12:10:48 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=ARC_SIGNED,ARC_VALID, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bkyBQ3p5obXUGXhsgE9hu2Tj7uATaRuhA5jWZ5TCO/Rl44l/TE4r5TUZxkDvjRnU4ZzD+lXAmXmP7xtOeKUlGEkcqHcfX80I5E/fbj+8Raz65UoT5k0bbJRhJZjhVL6LVydLKhLCjohHTplkqWNr4xfIEyBdZ6U1O+0MZc3ZKIT2gmFqgVY/bQq406xPcA3WTEL5TGnv3ek804Ar/XJFyMPoHF6rlgRDPi4o14W7yLlDYMalFDKvl6iJfXCT1cgc+0KIfhTE6j1y2II5I2NSli+dp1NOYTz4miqSRTkOdS6Eib5GX7/Gkc+heYNgcspLpk96DWKKpC4PX6hY/anJPw== 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=d/pBScKQ55oxh6l5KkZ4TKqqBZ8f7cE41GhBkR2uDzA=; b=lov6Tk0ofTxOW9QZpXBSsp/SmAgs6t0nEmLLu/yOQ8YUQ7ygqncXY6jU7g+QqfLOK1zZtDKLp+4smnsmsZCDhDI3ROz7RrCPjYlhPHD4PfeaWotDVq7OQ1LyV30JmJQ3U4bukyr4Waz9YkpBXPWTMhA8BobPl79XjhEERH5EmJgtKxq4E0DBzkCxu3APEIg2+ueh9/WRp8AVwzm6APcKwPjeigBgUm3xGXcqY2ZwiXlpJav/vW/Ei7OTJOP5X6yGy0jO8YuhUVeYqp3CySuzhx2iq7Ipk6QSi3pzQs/6PEG5zTw7XJLmMTTGKBbB5Zsx4GHW7hNbjSKpeWUp8wMh2w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cyberus-technology.de; dmarc=pass action=none header.from=cyberus-technology.de; dkim=pass header.d=cyberus-technology.de; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cyberus-technology.de; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d/pBScKQ55oxh6l5KkZ4TKqqBZ8f7cE41GhBkR2uDzA=; b=IzXK0D/AFLr7v2/QksJbNSPdStXiKnNT/xSIT/b8u8wDQWbXErbbS49g3sm7iLpTeaPfEZb95H/LvI8JoI3mbZ3RCBGmt+wFtm75EP5BHkfv/vf/NIE1vC57x+cYVLLh94tYEKOFWHOjVFnCUzBkJLTopxZv4hujD5aunWxcKGT+OmISCwTD/GDoo5YgTyoVX4wZQlR9/+fO4UOaMbRSU52aRnSHn/IKsTcF02B8PdXFRTD5hlrIHA78Lhanzz5cuw/WuWwmTxDVanuAp+Ts7tdi1urDl2plqgbZKsfRKUeegc9t1ET9WnkH9QLZXHqmjFIz2cmKPR7KWB6ZAoxAmA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cyberus-technology.de; From: Stefan Kober To: devel@lists.libvirt.org Subject: [PATCH v3 08/13] ch: implement disk attach in public API Date: Thu, 4 Sep 2025 14:10:30 +0200 Message-ID: <20250904121035.1349575-9-stefan.kober@cyberus-technology.de> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250904121035.1349575-1-stefan.kober@cyberus-technology.de> References: <20250904121035.1349575-1-stefan.kober@cyberus-technology.de> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: FR4P281CA0282.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:e6::7) To BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:46::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BEZP281MB1973:EE_|BE1P281MB2898:EE_ X-MS-Office365-Filtering-Correlation-Id: ff689deb-7d04-450a-3e8f-08ddebac14b7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?rD1tQM2Sk8xWGjVQaLXitZ+5xPVpJl/gDn8+HPtT/hdojeslCiZpicW5cjuT?= =?us-ascii?Q?9b1xWd67mHDE1+L7AKr06bq8TkE4H5aKC9DDdWTbqgLD5XX1v4wDUe7dZxHH?= =?us-ascii?Q?8lFP9TsdGlQ475RuJVPorrE7Y4D3Bu1EQ64DfjmbkCX5F97idb9gqNwR6A0M?= =?us-ascii?Q?XvTa+uGe6s8JVMIw+eAG2+7dTZ9u2jK/Ob3BTRhWU43PUjFfgEFlUq2ax8o2?= =?us-ascii?Q?o2mLOFj6BGRC2V8i1y5Ae7mLv/ZBxdgqNlK+q7l+6gD/zvZNXhgcNCxfNaaC?= =?us-ascii?Q?shETARQim2pnQ6RcB8iLDBCC6acWHDUfmkEIImmcmzfbqMk7FTPHIOs7F5T6?= =?us-ascii?Q?G5/3S0FDkDpw6yr6GS3rcFqi1pQW5O07k/mz2pp9sQtFVDQXCW8E6A+WMqqW?= =?us-ascii?Q?KFiZb1WqQwoekxdOD/N4d7ua1dgF41Sue9phfxJRVxhSucJTLDI8qwp036mh?= =?us-ascii?Q?SiB5++2mPdvmekcHcyTPGlCVSgQnIlMHh5oouBE3jG+uXM3Yt4GcNK7nCDhO?= =?us-ascii?Q?QnkFV90qpEghEBzJltNWwoNCxUiUbLZx8ElkkorGea2fR9jXvvzOMkPWP/2s?= =?us-ascii?Q?epaNoFKuUpqLny8+tngSIfsGP64dtDNotKWDoaR62JgyOeiRorOZmdYIgxo7?= =?us-ascii?Q?zY6SUNGP23ZXWPUZ0jdCDgdDGBvXIFalo6X3gwr4Q1G8ADdYWifF3LMkPCvV?= =?us-ascii?Q?wtmu2xwx+PHZBNydw/2ziTojCP+uZ6xWu+tiG0RmnkJdlqSYG/0WF++/UIk1?= =?us-ascii?Q?SUmucC4a8lUJ30TlrSo2xxwQI7rEoxM3H7Wrr3u4/btkGWpqVX68aHX2o2E+?= =?us-ascii?Q?FupUBOyPj++JFfUPgbzZwbee/tsHvRYbnCg+CGn78t13ej3y0PBcWfXxXUJ9?= =?us-ascii?Q?1Lu6Y/Ztkdy84wZcZIR2mA0m2OXnpN6DqpJ5ZtGdvz8qF8Kb5UFlEIhbPcOV?= =?us-ascii?Q?bf8Ajd3ZHC3Pp3OdCV4ZyhPJBSf+I8q4bMTbxcIV4iJw0kqgvtUZQBzOiyDl?= =?us-ascii?Q?lzGDNTUU4mltJxD0bXjAUO1rV2TxQZIkEhYFCBLwgNLfJJjX3/1ZZVIYSTK4?= =?us-ascii?Q?5HIgAr8iHeLzguw1rLNAY5VsrdsMWP3dJ1U+jaN835UkVCAgCIW/kfWJunTy?= =?us-ascii?Q?m67iV+7ZqitVElIUXxbR3ayHqhyVb14gpZiTlU5h9IU6EZN3NBBIuxggGO8I?= =?us-ascii?Q?oykanQhZyhmiFmSqxJn7exiEa4cWyWkVaOW5Hzjx+kaeaAVYspV0OQlxAG5N?= =?us-ascii?Q?PAJcU/klqdzrljVwzjDQl4FHkGBfnLLGFHVlOTT2TmcL9GZmwWYck8HeVXrk?= =?us-ascii?Q?b10uqoUz9ZXAavcZeFij4oTfl5dU6+BUjmqWKt/n3B/AzkUyaNuxLVDmbPvZ?= =?us-ascii?Q?yBvTZyzmz4HdOVjwrG4/K84I2+8zxbka+5s19mB5MBqMiO3kQz8gAbr2zpxL?= =?us-ascii?Q?DbSMNm7vsTw=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(376014)(10070799003)(366016)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GMZcavZj+YJsg1Z3n2zRfWVIHUtoEnIScPLuidAUHr/8Q6uyCCMfLiUvdZVA?= =?us-ascii?Q?DjXfmZjPKrbLyOpGN2hwlDJ+O9CA0zzCpdTA0oaxq4nDtA+9KDNZ2P/GPL79?= =?us-ascii?Q?N+G6ciSXprvlApTk45srRvsEppN9eq28o/VqYbM/4AQQtJ08v+2+zW1wDwPp?= =?us-ascii?Q?ys7mK6hc8adZ3RqiuZw6SAxmE7ZCkdWs33kYkeQMhpM6GB1612KoLYVscusf?= =?us-ascii?Q?3LKFP+nczWgY44JWaxkcZulQG/0t1xJiJyuwivN+marxRpTRpnhypCKMhor5?= =?us-ascii?Q?s7rs03ZaUubc1SxiTga2sYc4OnpDsrNs8SrHcG/mKVEpFbNpWxTlb8eiaaVY?= =?us-ascii?Q?MA/lxNK8ReWZouQ0hMs5cldZ+D5iIJjUmiHFYU2mntY/RLeh5ct2HyZx0rRK?= =?us-ascii?Q?snihoJsal13vYjWnHMnaoxaF4+oKuO8o8uTwZBU1oMznPIgHK24upwhMQ9og?= =?us-ascii?Q?D/ZzdR1Wagm5r+zN8Mu7P3Py1HWol8gKpPWth4Ykc0rYzXOOHNCth/ojRDgz?= =?us-ascii?Q?itx+I5ZAB+Jon6N01gkfNyGQCsZLy1VBvGyQuF0b7KayXHIpaabTjkiFz7H2?= =?us-ascii?Q?DoPlH/zs5PQtBloLic9auNvk6LfytrA5ZutYKFY0KYvW5+/4AqBiTVX5KkDu?= =?us-ascii?Q?5EX/R1huHnDp+QT6VRihFqGtNsz+rkiki2Z0i+TeSt2LNXNiOSRPt+Y6uPrZ?= =?us-ascii?Q?4LqDAaZ2TJsaBNQZbQgKnTlWOoos8Nq0aKxo12FZiYxA9D1u5ip6aeKgXbfh?= =?us-ascii?Q?6/tWZLCXlzlDEPwfXujQCBOd998CEN/9cvyyowcyp6e/pxFjMrxGnlS4wiVd?= =?us-ascii?Q?jvOUIDSEIj3zZTSMTce13+yv7lFaYEE5LrMblnTNGOsj0O1RNJO1Na6lzXlZ?= =?us-ascii?Q?6ST86r6ve3OjwlTza4VSevsRZwhKEetomaMYEMV9isXyBQ65uxJtUVLdFFG8?= =?us-ascii?Q?mBCvLtYlve3Du3CU2fwLEQJ1jFVlMyeJG4+hcYQQguz28aYewMhjpKBBdGJg?= =?us-ascii?Q?o2viOJHvIe3iekyIWy5GKqR89alqq/zipSSLv6sE3ClNeCgkB5BbDrXhzSUx?= =?us-ascii?Q?iYfL2hZcTbkFzM21ThtBFwTrqy9IoxojnaCUJsvqqAJV0JKuQULzGF/uBVGI?= =?us-ascii?Q?voxWwld64s4eCWs7Sty++2LqqkBpUB0SfggLLz8hNm4ULLTwLaZXYB3XclPY?= =?us-ascii?Q?sJxPco3csXRtSrQIJINcuB9g150fgR/CbJLY66GNSrvtcGEKzR/dUhkf6XaZ?= =?us-ascii?Q?JYWSS+Bls+kt4TmcGh1zbIlI242NX1yIYhB4xzD93U8XXmRY6pRU3xVmNOaf?= =?us-ascii?Q?avqlJQjalz+P6W1xti+U1uC10lrLL9rwldI7PzGtBkDyd3POoGrxoGzHPTLe?= =?us-ascii?Q?nYQs4Nzuaw86H88e1eX0hMM2NdPCGm0U5BJOm9GKQAdZH027X7H2GsIlfZhO?= =?us-ascii?Q?VeE2cU1ttwubemPqQUw8zd/2W8Z3b3+ka1J8K/44uxYe8ApPK3dVIfDJum95?= =?us-ascii?Q?IBAlZvzkg421+16HzDgv7XPYPPgpcama7ksG6J+EjjxdTh8CBPPMREyv+pnj?= =?us-ascii?Q?PA0JAR0ZLm75MaUulieoUq+d1qHFZ+NNEtZKthHx8D6eM3cGX0oxou6338P+?= =?us-ascii?Q?EP70lhhbv4oCVu50r42s+UENVhfMRyesyzexnJyYGGpO?= X-OriginatorOrg: cyberus-technology.de X-MS-Exchange-CrossTenant-Network-Message-Id: ff689deb-7d04-450a-3e8f-08ddebac14b7 X-MS-Exchange-CrossTenant-AuthSource: BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2025 12:10:47.5166 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f4e0f4e0-9d68-4bd6-a95b-0cba36dbac2e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Qtyd2A3uPgZs1rIpMiPL+pLMdviPmusAdFL34B1TUd8COzFwDjWC2KEc+qU/ThC3mAZ2QFXcI3N1blSeRcaB9ElwpR9Nqtb7ORd/n5roHTwTr2NHReR88AbWS6+bZi/H X-MS-Exchange-Transport-CrossTenantHeadersStamped: BE1P281MB2898 Message-ID-Hash: GFL5AWWRMGGO4GNIRVW6PQOLWZ4KJYE5 X-Message-ID-Hash: GFL5AWWRMGGO4GNIRVW6PQOLWZ4KJYE5 X-MailFrom: stefan.kober@cyberus-technology.de X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Stefan Kober X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @cyberus-technology.de) X-ZM-MESSAGEID: 1756988499118124101 Content-Type: text/plain; charset="utf-8" On-behalf-of: SAP stefan.kober@sap.com Signed-off-by: Stefan Kober --- src/ch/ch_driver.c | 44 +++++++++++++++++++++++++++++++++++++++++ src/ch/ch_hotplug.c | 48 ++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 87 insertions(+), 5 deletions(-) diff --git a/src/ch/ch_driver.c b/src/ch/ch_driver.c index cf6874f22e..4f4783efb1 100644 --- a/src/ch/ch_driver.c +++ b/src/ch/ch_driver.c @@ -25,6 +25,7 @@ #include "ch_conf.h" #include "ch_domain.h" #include "ch_driver.h" +#include "ch_hotplug.h" #include "ch_monitor.h" #include "ch_process.h" #include "domain_cgroup.h" @@ -2344,6 +2345,47 @@ chDomainInterfaceAddresses(virDomain *dom, return ret; } =20 +static int +chDomainAttachDeviceFlags(virDomainPtr dom, + const char *xml, + unsigned int flags) +{ + virCHDriver *driver =3D dom->conn->privateData; + virDomainObj *vm =3D NULL; + int ret =3D -1; + + if (!(vm =3D virCHDomainObjFromDomain(dom))) + goto cleanup; + + if (virDomainAttachDeviceFlagsEnsureACL(dom->conn, vm->def, flags) < 0) + goto cleanup; + + if (virDomainObjBeginJob(vm, VIR_JOB_MODIFY) < 0) + goto cleanup; + + if (virDomainObjUpdateModificationImpact(vm, &flags) < 0) + goto endjob; + + if (chDomainAttachDeviceLiveAndUpdateConfig(vm, driver, xml, flags) < = 0) { + goto endjob; + } + + ret =3D 0; + + endjob: + virDomainObjEndJob(vm); + + cleanup: + virDomainObjEndAPI(&vm); + return ret; +} + +static int +chDomainAttachDevice(virDomainPtr dom, + const char *xml) +{ + return chDomainAttachDeviceFlags(dom, xml, VIR_DOMAIN_AFFECT_LIVE); +} =20 /* Function Tables */ static virHypervisorDriver chHypervisorDriver =3D { @@ -2406,6 +2448,8 @@ static virHypervisorDriver chHypervisorDriver =3D { .connectDomainEventRegisterAny =3D chConnectDomainEventRegisterAny, = /* 10.10.0 */ .connectDomainEventDeregisterAny =3D chConnectDomainEventDeregisterAny= , /* 10.10.0 */ .domainInterfaceAddresses =3D chDomainInterfaceAddresses, /* 11.0.0 */ + .domainAttachDevice =3D chDomainAttachDevice, /* 11.8.0 */ + .domainAttachDeviceFlags =3D chDomainAttachDeviceFlags, /* 11.8.0 */ }; =20 static virConnectDriver chConnectDriver =3D { diff --git a/src/ch/ch_hotplug.c b/src/ch/ch_hotplug.c index 7de688dc44..524355b93c 100644 --- a/src/ch/ch_hotplug.c +++ b/src/ch/ch_hotplug.c @@ -50,7 +50,6 @@ chDomainAddDisk(virCHMonitor *mon, virDomainObj *vm, virD= omainDiskDef *disk) return 0; } =20 -G_GNUC_UNUSED static int chDomainAttachDeviceLive(virDomainObj *vm, virDomainDeviceDef *dev) @@ -108,13 +107,52 @@ chDomainAttachDeviceLive(virDomainObj *vm, } =20 int -chDomainAttachDeviceLiveAndUpdateConfig(virDomainObj *vm G_GNUC_UNUSED, - virCHDriver *driver G_GNUC_UNUSED, - const char *xml G_GNUC_UNUSED, +chDomainAttachDeviceLiveAndUpdateConfig(virDomainObj *vm, + virCHDriver *driver, + const char *xml, unsigned int flags) { + unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE | + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; + g_autoptr(virDomainDeviceDef) devLive =3D NULL; + g_autoptr(virDomainDef) vmdef =3D NULL; + g_autoptr(virCHDriverConfig) cfg =3D NULL; + g_autoptr(virDomainDeviceDef) devConf =3D NULL; + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); =20 - return -1; + cfg =3D virCHDriverGetConfig(driver); + + if (flags & VIR_DOMAIN_AFFECT_CONFIG) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("Persistent domain state changes are not supporte= d")); + return -1; + } + + if (flags & VIR_DOMAIN_AFFECT_LIVE) { + if (!(devLive =3D virDomainDeviceDefParse(xml, vm->def, + driver->xmlopt, NULL, + parse_flags))) { + return -1; + } + + if (virDomainDeviceValidateAliasForHotplug(vm, devLive, + VIR_DOMAIN_AFFECT_LIVE)= < 0) + return -1; + + if (virDomainDefCompatibleDevice(vm->def, devLive, NULL, + VIR_DOMAIN_DEVICE_ACTION_ATTACH, + true) < 0) { + return -1; + } + + if (chDomainAttachDeviceLive(vm, devLive) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Failed to add device")); + return -1; + } + } + + return 0; } --=20 2.50.1