From nobody Mon Sep 16 19:24:43 2024 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=fail; 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=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1720098027211393.36799961891916; Thu, 4 Jul 2024 06:00:27 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id EB8461567; Thu, 4 Jul 2024 09:00:25 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 05A42142D; Thu, 4 Jul 2024 09:00:03 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id BC50712E0; Thu, 4 Jul 2024 09:00:00 -0400 (EDT) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id E7303128C for ; Thu, 4 Jul 2024 08:59:59 -0400 (EDT) Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 4641Z338028815 for ; Thu, 4 Jul 2024 05:59:59 -0700 Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 405j70h44m-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 04 Jul 2024 05:59:58 -0700 (PDT) Received: from CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) by CYXPR02MB10298.namprd02.prod.outlook.com (2603:10b6:930:e3::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7719.33; Thu, 4 Jul 2024 12:59:56 +0000 Received: from CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51]) by CH2PR02MB6760.namprd02.prod.outlook.com ([fe80::fd77:ea65:a159:ef51%4]) with mapi id 15.20.7741.029; Thu, 4 Jul 2024 12:59:56 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=proofpoint20171006; bh=YAuZTtymVbcXU GoqHWI7jmCfty6fIWY2MV8mqCshnl0=; b=SM2CD+k8t8VcsNADt1qEk1BOFQS37 ipm8bqqpg4lax6Ja6a9CDgJNQJi4FM9jRRRnipkjHvrMqL5DzRYbiyxFnH/OwA3f iYWuygTXq7BFlPDIxy1TovLVfnvBEqhdJvGjQ39xsQPv8N1B86sbJetl2i2zz5oV xiBD+wkkVn00Zf8VPqIjUiDvWh6KA9u767Igqh2859nzTSSVZhyzBYxJx9g7qU0S Gh2BniwtCDHGXL4U9wsTnVjXn24MVHQZ8oFAnpczXjEpt6npODMMYXKYdh/Y88KD ol75GjFWgkQGddHltnQD0ZVD0xKcGYZ4+BEz9w+AlsBU8nMqD9eJ1Qprw== ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nmv/SBf/Qt2EXNnuAwIq54xCqAMdN7RSSqwN8kBM02AdJJu027Eg07agKWC2xQiuGBTf0uCMmzY4mPxN8bElcY00/GeuSF97shqHwgVgFOSom54MWSevSX4kflqHF53qLmdocuZcYpIYIwKSpGOxMdARShf2y+2WpQmqLLR+NdtJpg/ar41/lQiMgSghZswLjnvmWEVObCFFL3BW0r1aJyELBRfSdqgp9H+B4kMMsMn+oeGBPKyn5FyPHxiqlQ5lf5ZbCAKwjOlRLtYIbJFTzysmQWes+oy0SEuXb09R3obpgRMKY+2kvGKSF4GzrcMC5V7Y5XwgYfg9oalzDxxWOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=YAuZTtymVbcXUGoqHWI7jmCfty6fIWY2MV8mqCshnl0=; b=ZQ1c/wb4NSNhf5BBLnpdtjzxH41fj4FNAmnqV9+cJw6Vqy1mppSgHON0OqMwxCyhf8xcZyH6rjwXsM6T+Rolc9rnjWZPCHzUFiNCnTTgR75zlaOSpcnIpns3bh9pgPdbjCXLw4jZS3FmijWkTZNiH/IkDbFzrNpwlaJkCJln7QZnTNfBurMWrJ/TZwG8+xRqQevX1an+B66HS8oVGsK8AAIOq8+/8kNSHWjBntGdbt3q+tT23/mFWK412ilL3BVJpI9Ec2oz5B4EnM9JSEuUa85zoJn0jyrhoQaStDy8a77v9Qup9Mxt9jyNqX3AbhC3iCSzmA6IjoR6kkCXgbhLew== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YAuZTtymVbcXUGoqHWI7jmCfty6fIWY2MV8mqCshnl0=; b=DPCT9ErdmFNMvIbGvuLmv3bX3Mlue776a4mUKIKazPb4cEIxkQ2NmFsFKq+mmek3WIp7V1v+8jwcMMnHO7f8NdG+8xSNtDfuRxOeZ/COn5R+0aEmFD4IwV7U/3yygGoApt+qz7Dv178qN/xFHijsr1W6MZhM0MZ/RTvZBm9whNGf97pB29O7Av6xRMR1cPEqgXrGoKUznmifrTsNJx7hZT87908GG/fAMgl8RaoWCjdpAIa3lHoydfu6FUOFeJxz+fGZK0jVmJkdUfo63Fyzi2Slm5P91IWABHBVsRc2jm2760Rt4FKrmiD+v1JoeUe2yrBFHfN/3m8hVr2QjS9LjQ== From: John Levon To: devel@lists.libvirt.org Subject: [PATCH] test_driver: support VIR_DOMAIN_AFFECT_LIVE in testUpdateDeviceFlags() Date: Thu, 4 Jul 2024 13:59:46 +0100 Message-Id: <20240704125946.474261-1-john.levon@nutanix.com> X-Mailer: git-send-email 2.34.1 X-ClientProxiedBy: AS4P191CA0005.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:5d5::15) To CH2PR02MB6760.namprd02.prod.outlook.com (2603:10b6:610:7f::9) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR02MB6760:EE_|CYXPR02MB10298:EE_ X-MS-Office365-Filtering-Correlation-Id: d48f4b61-e8e9-48c4-fd58-08dc9c293409 x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?QczS4gMsosUR81ze6u80mKWqa26Mq5oQYAuE5ANJsbUMKe+oDnY+O6me+nCr?= =?us-ascii?Q?JCRnfXv25GV/FLIsVGoa4ZCUW9NFvvX6FcEwWU36TCyd9p4xuRU2pnn/sAoP?= =?us-ascii?Q?1PCEue69UPkjj3F+u9rVDErqVFQbHsm9Da9g25Qc0KOafNCelMa9OrhofsYJ?= =?us-ascii?Q?CbQbwQ0lJVFERLRUqCAusFE8KBRWLtqfHjXLWru+9TFMXdg9hsRC/gQb1BuP?= =?us-ascii?Q?VvMYj6xdjivFrPAlRu3ZrYLwBnoJTG51MrWXj+t6sElTKXWBbFHTJ0AgU94h?= =?us-ascii?Q?cCz//tqys7bGS3lSW6kD9toGgIkHR1w/i+Q+/D9CTqwOV9pSZvzWQ1xYwPwx?= =?us-ascii?Q?j2nHix11jqNnwM01SpSIHIZC1qSAYA83qk2QbXt96A95IkY9CiQXYxEHjvvD?= =?us-ascii?Q?ePBaJGMUJflya9diFBgcQ/id4aYtEBkKiFcnkWXmmTGd99VLZRUmc8VGT86c?= =?us-ascii?Q?FBuxTQmLhvzA9mE4WmvqkKfhFujJfB1cq23z1XPtj17J521hjiFJnd2k8xT1?= =?us-ascii?Q?IRC3xfaaey2f/Jf/6yS3aiUbuIka6sWGq0FN5P4mV1iNOikPz6LVQPjiar+X?= =?us-ascii?Q?309FGyIx+cqDXIfjCCv8feqUSwTAbuY/cwh9+dPUuw81eoNC35qorSRMim4j?= =?us-ascii?Q?paPuz7jDSljjIPanX4XUOtIUuslKGsWoxFoNLWAnjgPI05W7jvXqKyBFtvwO?= =?us-ascii?Q?vMsCG2KUZE5vnRf6Crdg9/OjqVYavvSHCR5o9Zj2mb/Yy06eHTf8vD+oh30o?= =?us-ascii?Q?1gh/FMYAxz60TlQUm+b9W+cNnaXDbceGZtZnylt00vSAozeVAAKAYO7jLll3?= =?us-ascii?Q?ECV7B9iaXJZ5FGRR+lnIAzVISVSUen95KHvigvp8TQY7/yZsg9Zc1Ktl1T/f?= =?us-ascii?Q?4q0uY1jnlPNVHl2BxQh8b6WtOMAmf4epP1vjAQzb+P3U66sJd5DHgj7F//3j?= =?us-ascii?Q?p+6+4Si3GijBotAk5JdZapgpsxSKA2RxPG2rjqi7hoRqeRr8JTKtJuwQv4rT?= =?us-ascii?Q?NXJ45haZdEKeLbw81ssD2/xMRmuAyof+ipLIlh2+6G9c6HhSp2/hlcDR5Id6?= =?us-ascii?Q?k5qq6S6p2R/Oi8kYCev78n4XNPAJ/bFbzp31/OfwakwjzWsd8T21k+ro1F6v?= =?us-ascii?Q?ruXJ2Jns6MX8X1e+4oG+4LhZjRTrODD7IFPbDZonUWWtVxONNZiY9EWw+nA/?= =?us-ascii?Q?tV2r20HMZutF86oM+eSmsBowaDRvfT1RAxchwhcD3b9OWfE2hiGKLFcaV8qL?= =?us-ascii?Q?sJ9LteZhgvFgAF6c+Epu+W9Ivwh1ZqiMaaGINdEMStSIOH/+lsjzjyJZZaA4?= =?us-ascii?Q?y1BaCTGzGAZCSxZ5y6Xs9iePEoSfM+lQdxpajZd9Wc1cqw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR02MB6760.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5RUaymAKBCRJJvW4TnsHqJjf9nGAnYy4Eb6AVRskc1QJcbJiw+hc8JIDYyJN?= =?us-ascii?Q?rQUF08HF3Pe+vgvzmq1iNTRDqby+ZwLv1jCoaU3Wb7Ad7A3VvTeDxxTTmnzA?= =?us-ascii?Q?CM9ti3INNEThBsKZYYmiBPlvqHeEwQb+HS4/iL0bXN7EkqGBe432yYLxywOR?= =?us-ascii?Q?GCW5HyidYupgeINCiEFoO5Doyc/UhZbb58JbuVSRNjqlzjwHGwoAayPZRO4K?= =?us-ascii?Q?Fjnn5cVUs93vpjUba0Fx5/DaTqZW9b3JBJNBU/wGVHzYmZvm10wW6XAww3X0?= =?us-ascii?Q?V2wkQxYlDNbUwiyw7VswKEO2ZMM/rKDPi7EWBqcB3BV49OnAxRukmgBWetUl?= =?us-ascii?Q?cl3UzyUmF8mQtBobkOSkksJOuexekS2oj2gp7yK3RK6tSWhhma5UpJBQY9wq?= =?us-ascii?Q?OouRSo7mluwm+P9UNhiuRfYccL0HqOYrdlCyFU0jMarVpEX6Zzwd5YCICXwj?= =?us-ascii?Q?6dYY7frmMEAN7+Qqlkp5iHD6Wm0nRDfSY6FC+o74DYFJk/gBwifct1KYwfz0?= =?us-ascii?Q?UlrguPMiHGBuHO7WlgD42f+XVFR/+7kCcZ8zKYGaz41SZ9OGXGFPunl5T+ji?= =?us-ascii?Q?crz65CXsxjTQzPkrMECBZ2G9kKI9LpCTa7OqJkW5itjh2lvgY4EyJ8/08WU/?= =?us-ascii?Q?VS0vRYz2vCf1S+ticaMbUM/aFpcKlfb6tklORSONTxEfLHuqbSWknUGQ06bz?= =?us-ascii?Q?9DQR+TwbBUpuXWroOwEJorg39KvrGlYNEJVlFJmz0vC4DN5XcGxVjATya7IV?= =?us-ascii?Q?AT/NlxM7lu/170wUsnz4O6hshREgV8bgxkLluyexzxcENjEuHvrhc7nCa8Il?= =?us-ascii?Q?/kS7YqAuCBhwEOnp0MxjGhuL81mz6ZClRHqnWg9Xd2Ex/hDaXy5sebucvHoW?= =?us-ascii?Q?GCYZt6SrHu8ZkiMIewZtINdv4ZA0QdJnqTuOC4WbN5+kIQ6HrZzNxOl9EQBO?= =?us-ascii?Q?Cw2u1FrgdWDHmZYflBUlFbdobBrywz5TNSWKfpU4THtKMwP2wBQKs9XyoFmS?= =?us-ascii?Q?YB5pcdfU9+GzlziO+DgI2oES65wAGU3cLeg5M35ZV6g0hT8mZFH4iKCceq12?= =?us-ascii?Q?jUn+2Eek8uk2JmoYfoaAUwdliRh4rCY+IgE95s23D0Ve8dBbeRgEpC2yAqYo?= =?us-ascii?Q?khVbQI2SyFML2kbPB4ijt6FeoD/hX03c+TRga+4Hp8o/tCEaWFBO/3oyF+Xx?= =?us-ascii?Q?FZm8Mk1YI61thmBos7q7dB5Reeh+kbyFRw1ex58aTsFqi4CNh/CLka6bLFuN?= =?us-ascii?Q?RFPsi/MiA9s7WMT/GW2HNjD3Ak3tUmuILCaGN1TZJjrT6Mdt08dZEFC50pqz?= =?us-ascii?Q?wIZc94C6QVaj5PSOBczoc3G5+dLfjQChXzMqBCVHvsxOxsrn3CONeVN7oow6?= =?us-ascii?Q?x9kyL4ul4o1sYhgtnpemE6ETmglu2JBKf1F6UAtz0AlE4tJTb8hgjDCCA49U?= =?us-ascii?Q?eoxBr+nhvRSXBWx9BXaqgMb3VX3zswSIuNaRHwaU8jdhGj0B73Qz7MJge8/T?= =?us-ascii?Q?IFO09qUnlQhZwNYTr6Kw944w0ymnWeRKVNIA+JB7cY2avp0t9Ch2wzp+36a3?= =?us-ascii?Q?9SRtiFsZWRU79V4TRPWdhlN2A2ifOkDVWlC89Fzu?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: d48f4b61-e8e9-48c4-fd58-08dc9c293409 X-MS-Exchange-CrossTenant-AuthSource: CH2PR02MB6760.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2024 12:59:56.1579 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0K+hOVLmKnQ+U/4R0eet0Zksa3/NBbqqQu9dvA4+l8BAKAJxpATt/IAGrE34JHbH+VUr9WIOUUbFY7b3/kziFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYXPR02MB10298 X-Proofpoint-ORIG-GUID: 3AOrHo8RjazGKKFX1D8DlVZx3JtvRwc5 X-Proofpoint-GUID: 3AOrHo8RjazGKKFX1D8DlVZx3JtvRwc5 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.28.16 definitions=2024-07-04_09,2024-07-03_01,2024-05-17_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: DIZIM3YY6JF2S7S232KTP4SYUH44YYAX X-Message-ID-Hash: DIZIM3YY6JF2S7S232KTP4SYUH44YYAX X-MailFrom: john.levon@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: John Levon X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1720098029341100001 Content-Type: text/plain; charset="utf-8" Pick up some more of the qemu_driver.c code so this function supports both CONFIG and LIVE updates. Note that qemuDomainUpdateDeviceFlags() passed vm->def to virDomainDeviceDefParse() for the VIR_DOMAIN_AFFECT_CONFIG case, which is technically incorrect; in the test driver code we'll fix this. Signed-off-by: John Levon Reviewed-by: Michal Privoznik --- src/test/test_driver.c | 54 +++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 712bb20563..da682da9ad 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -10239,10 +10239,10 @@ testDomainAttachDevice(virDomainPtr domain, const= char *xml) =20 =20 static int -testDomainUpdateDeviceConfig(virDomainDef *vmdef, - virDomainDeviceDef *dev, - unsigned int parse_flags, - virDomainXMLOption *xmlopt) +testDomainUpdateDevice(virDomainDef *vmdef, + virDomainDeviceDef *dev, + unsigned int parse_flags, + virDomainXMLOption *xmlopt) { virDomainDiskDef *newDisk; virDomainDeviceDef oldDev =3D { .type =3D dev->type }; @@ -10316,12 +10316,16 @@ testDomainUpdateDeviceFlags(virDomainPtr dom, testDriver *driver =3D dom->conn->privateData; virDomainObj *vm =3D NULL; virObjectEvent *event =3D NULL; + virDomainDef *def =3D NULL; + virDomainDef *persistentDef =3D NULL; g_autoptr(virDomainDef) vmdef =3D NULL; - g_autoptr(virDomainDeviceDef) dev =3D NULL; + g_autoptr(virDomainDeviceDef) dev_live =3D NULL; + g_autoptr(virDomainDeviceDef) dev_config =3D NULL; int ret =3D -1; unsigned int parse_flags =3D 0; =20 - virCheckFlags(VIR_DOMAIN_AFFECT_CONFIG, -1); + virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | + VIR_DOMAIN_AFFECT_CONFIG, -1); =20 if (!(vm =3D testDomObjFromDomain(dom))) goto cleanup; @@ -10337,9 +10341,24 @@ testDomainUpdateDeviceFlags(virDomainPtr dom, parse_flags |=3D VIR_DOMAIN_DEF_PARSE_INACTIVE; } =20 - if (!(dev =3D virDomainDeviceDefParse(xml, vm->def, driver->xmlopt, - NULL, parse_flags))) { - goto endjob; + /* + * NB: this has diverged from qemuDomainUpdateDeviceFlags(), which uses + * vm->def in both cases; technically the qemu driver should do the sa= me. + */ + if (virDomainObjGetDefs(vm, flags, &def, &persistentDef) < 0) + goto cleanup; + + if (def) { + if (!(dev_live =3D virDomainDeviceDefParse(xml, def, driver->xmlop= t, + NULL, parse_flags))) + goto endjob; + } + + if (persistentDef) { + if (!(dev_config =3D virDomainDeviceDefParse(xml, persistentDef, + driver->xmlopt, NULL, + parse_flags))) + goto endjob; } =20 if (flags & VIR_DOMAIN_AFFECT_CONFIG) { @@ -10350,18 +10369,19 @@ testDomainUpdateDeviceFlags(virDomainPtr dom, =20 /* virDomainDefCompatibleDevice call is delayed until we know the * device we're going to update. */ - if ((ret =3D testDomainUpdateDeviceConfig(vmdef, dev, - parse_flags, - driver->xmlopt)) < 0) + if ((ret =3D testDomainUpdateDevice(vmdef, dev_config, + parse_flags, + driver->xmlopt)) < 0) goto endjob; } =20 if (flags & VIR_DOMAIN_AFFECT_LIVE) { - ret =3D -1; - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("live update of device '%1$s' is not supported"), - virDomainDeviceTypeToString(dev->type)); - goto endjob; + /* virDomainDefCompatibleDevice call is delayed until we know the + * device we're going to update. */ + if ((ret =3D testDomainUpdateDevice(def, dev_live, + parse_flags, + driver->xmlopt)) < 0) + goto endjob; } =20 if (flags & VIR_DOMAIN_AFFECT_CONFIG) { --=20 2.34.1