3a9410
From 286c821eee3b682d6aa4aeaa13aad92382708803 Mon Sep 17 00:00:00 2001
3a9410
Message-Id: <286c821eee3b682d6aa4aeaa13aad92382708803@dist-git>
3a9410
From: Boris Fiuczynski <fiuczy@linux.ibm.com>
3a9410
Date: Fri, 13 May 2022 12:31:13 +0200
3a9410
Subject: [PATCH] nodedev: refactor css XML parsing from ccw XML parsing
3a9410
3a9410
In preparation for easier extension later.
3a9410
3a9410
Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
3a9410
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
3a9410
(cherry picked from commit 245ff2d6634b3afb0dbf0d295051e458095bfc80)
3a9410
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2165011
3a9410
Signed-off-by: Thomas Huth <thuth@redhat.com>
3a9410
---
3a9410
 src/conf/node_device_conf.c | 40 +++++++++++++++++++++++++++----------
3a9410
 1 file changed, 30 insertions(+), 10 deletions(-)
3a9410
3a9410
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
3a9410
index 8982368465..fcb5be24e1 100644
3a9410
--- a/src/conf/node_device_conf.c
3a9410
+++ b/src/conf/node_device_conf.c
3a9410
@@ -1193,6 +1193,31 @@ virNodeDevCCWDeviceAddressParseXML(xmlXPathContextPtr ctxt,
3a9410
     return 0;
3a9410
 }
3a9410
 
3a9410
+
3a9410
+static int
3a9410
+virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt,
3a9410
+                         virNodeDeviceDef *def,
3a9410
+                         xmlNodePtr node,
3a9410
+                         virNodeDevCapCCW *ccw_dev)
3a9410
+{
3a9410
+    VIR_XPATH_NODE_AUTORESTORE(ctxt)
3a9410
+    g_autofree virCCWDeviceAddress *ccw_addr = NULL;
3a9410
+
3a9410
+    ctxt->node = node;
3a9410
+
3a9410
+    ccw_addr = g_new0(virCCWDeviceAddress, 1);
3a9410
+
3a9410
+    if (virNodeDevCCWDeviceAddressParseXML(ctxt, node, def->name, ccw_addr) < 0)
3a9410
+        return -1;
3a9410
+
3a9410
+    ccw_dev->cssid = ccw_addr->cssid;
3a9410
+    ccw_dev->ssid = ccw_addr->ssid;
3a9410
+    ccw_dev->devno = ccw_addr->devno;
3a9410
+
3a9410
+    return 0;
3a9410
+}
3a9410
+
3a9410
+
3a9410
 static int
3a9410
 virNodeDevCSSCapabilityParseXML(xmlXPathContextPtr ctxt,
3a9410
                                 xmlNodePtr node,
3a9410
@@ -1221,7 +1246,7 @@ virNodeDevCSSCapabilityParseXML(xmlXPathContextPtr ctxt,
3a9410
 
3a9410
 
3a9410
 static int
3a9410
-virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt,
3a9410
+virNodeDevCapCSSParseXML(xmlXPathContextPtr ctxt,
3a9410
                          virNodeDeviceDef *def,
3a9410
                          xmlNodePtr node,
3a9410
                          virNodeDevCapCCW *ccw_dev)
3a9410
@@ -1230,19 +1255,12 @@ virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt,
3a9410
     g_autofree xmlNodePtr *nodes = NULL;
3a9410
     int n = 0;
3a9410
     size_t i = 0;
3a9410
-    g_autofree virCCWDeviceAddress *ccw_addr = NULL;
3a9410
 
3a9410
     ctxt->node = node;
3a9410
 
3a9410
-    ccw_addr = g_new0(virCCWDeviceAddress, 1);
3a9410
-
3a9410
-    if (virNodeDevCCWDeviceAddressParseXML(ctxt, node, def->name, ccw_addr) < 0)
3a9410
+    if (virNodeDevCapCCWParseXML(ctxt, def, node, ccw_dev) < 0)
3a9410
         return -1;
3a9410
 
3a9410
-    ccw_dev->cssid = ccw_addr->cssid;
3a9410
-    ccw_dev->ssid = ccw_addr->ssid;
3a9410
-    ccw_dev->devno = ccw_addr->devno;
3a9410
-
3a9410
     if ((n = virXPathNodeSet("./capability", ctxt, &nodes)) < 0)
3a9410
         return -1;
3a9410
 
3a9410
@@ -2282,9 +2300,11 @@ virNodeDevCapsDefParseXML(xmlXPathContextPtr ctxt,
3a9410
         ret = virNodeDevCapMdevParseXML(ctxt, def, node, &caps->data.mdev);
3a9410
         break;
3a9410
     case VIR_NODE_DEV_CAP_CCW_DEV:
3a9410
-    case VIR_NODE_DEV_CAP_CSS_DEV:
3a9410
         ret = virNodeDevCapCCWParseXML(ctxt, def, node, &caps->data.ccw_dev);
3a9410
         break;
3a9410
+    case VIR_NODE_DEV_CAP_CSS_DEV:
3a9410
+        ret = virNodeDevCapCSSParseXML(ctxt, def, node, &caps->data.ccw_dev);
3a9410
+        break;
3a9410
     case VIR_NODE_DEV_CAP_AP_CARD:
3a9410
         ret = virNodeDevCapAPCardParseXML(ctxt, def, node,
3a9410
                                           &caps->data.ap_card);
3a9410
-- 
3a9410
2.39.1
3a9410