[PATCH 2/8] nodedev: refactor CCW device address

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Replace cssid, ssid and devno elements with virCCWDeviceAddress.

Reviewed-by: Marc Hartmayer <mhartmay@xxxxxxxxxxxxx>
Signed-off-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxx>
---
 src/conf/node_device_conf.c          | 16 ++++++----------
 src/conf/node_device_conf.h          |  4 +---
 src/node_device/node_device_driver.c | 11 ++---------
 src/node_device/node_device_udev.c   |  9 ++++++---
 tests/nodedevmdevctltest.c           |  7 ++++---
 5 files changed, 19 insertions(+), 28 deletions(-)

diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
index 9711594994..85effb7d78 100644
--- a/src/conf/node_device_conf.c
+++ b/src/conf/node_device_conf.c
@@ -640,12 +640,7 @@ static void
 virNodeDeviceCapCCWDefFormat(virBuffer *buf,
                              const virNodeDevCapData *data)
 {
-    virBufferAsprintf(buf, "<cssid>0x%x</cssid>\n",
-                      data->ccw_dev.cssid);
-    virBufferAsprintf(buf, "<ssid>0x%x</ssid>\n",
-                      data->ccw_dev.ssid);
-    virBufferAsprintf(buf, "<devno>0x%04x</devno>\n",
-                      data->ccw_dev.devno);
+    virCCWDeviceAddressFormat(buf, data->ccw_dev.dev_addr);
 }
 
 
@@ -1231,9 +1226,7 @@ virNodeDevCapCCWParseXML(xmlXPathContextPtr ctxt,
     if (virNodeDevCCWDeviceAddressParseXML(ctxt, node, def->name, ccw_addr) < 0)
         return -1;
 
-    ccw_dev->cssid = ccw_addr->cssid;
-    ccw_dev->ssid = ccw_addr->ssid;
-    ccw_dev->devno = ccw_addr->devno;
+    ccw_dev->dev_addr = g_steal_pointer(&ccw_addr);
 
     return 0;
 }
@@ -2621,6 +2614,7 @@ virNodeDevCapsDefFree(virNodeDevCapsDef *caps)
         g_free(data->mdev.parent_addr);
         break;
     case VIR_NODE_DEV_CAP_CSS_DEV:
+        g_free(data->ccw_dev.dev_addr);
         for (i = 0; i < data->ccw_dev.nmdev_types; i++)
             virMediatedDeviceTypeFree(data->ccw_dev.mdev_types[i]);
         g_free(data->ccw_dev.mdev_types);
@@ -2638,10 +2632,12 @@ virNodeDevCapsDefFree(virNodeDevCapsDef *caps)
         g_free(data->mdev_parent.mdev_types);
         g_free(data->mdev_parent.address);
         break;
+    case VIR_NODE_DEV_CAP_CCW_DEV:
+        g_free(data->ccw_dev.dev_addr);
+        break;
     case VIR_NODE_DEV_CAP_DRM:
     case VIR_NODE_DEV_CAP_FC_HOST:
     case VIR_NODE_DEV_CAP_VPORTS:
-    case VIR_NODE_DEV_CAP_CCW_DEV:
     case VIR_NODE_DEV_CAP_VDPA:
     case VIR_NODE_DEV_CAP_AP_CARD:
     case VIR_NODE_DEV_CAP_AP_QUEUE:
diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h
index 25666a333e..ad2258e90d 100644
--- a/src/conf/node_device_conf.h
+++ b/src/conf/node_device_conf.h
@@ -281,9 +281,7 @@ struct _virNodeDevCapDRM {
 
 typedef struct _virNodeDevCapCCW virNodeDevCapCCW;
 struct _virNodeDevCapCCW {
-    unsigned int cssid;
-    unsigned int ssid;
-    unsigned int devno;
+    virCCWDeviceAddress *dev_addr;
     unsigned int flags; /* enum virNodeDevCCWCapFlags */
     virMediatedDeviceType **mdev_types;
     size_t nmdev_types;
diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
index fa5db0d5d5..9898b1914a 100644
--- a/src/node_device/node_device_driver.c
+++ b/src/node_device/node_device_driver.c
@@ -683,16 +683,9 @@ nodeDeviceObjFormatAddress(virNodeDeviceObj *obj)
             break;
             }
 
-        case VIR_NODE_DEV_CAP_CSS_DEV: {
-            virCCWDeviceAddress ccw_addr = {
-                .cssid = caps->data.ccw_dev.cssid,
-                .ssid = caps->data.ccw_dev.ssid,
-                .devno = caps->data.ccw_dev.devno
-            };
-
-            addr = virCCWDeviceAddressAsString(&ccw_addr);
+        case VIR_NODE_DEV_CAP_CSS_DEV:
+            addr = virCCWDeviceAddressAsString(caps->data.ccw_dev.dev_addr);
             break;
-            }
 
         case VIR_NODE_DEV_CAP_AP_MATRIX:
             addr = g_strdup(caps->data.ap_matrix.addr);
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index 1d8486f623..97fbe95ac7 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -1184,18 +1184,21 @@ udevGetCCWAddress(const char *sysfs_path,
                   virNodeDevCapData *data)
 {
     char *p;
+    g_autofree virCCWDeviceAddress *ccw_addr = g_new0(virCCWDeviceAddress, 1);
 
     if ((p = strrchr(sysfs_path, '/')) == NULL ||
         virCCWDeviceAddressParseFromString(p + 1,
-                                           &data->ccw_dev.cssid,
-                                           &data->ccw_dev.ssid,
-                                           &data->ccw_dev.devno) < 0) {
+                                           &ccw_addr->cssid,
+                                           &ccw_addr->ssid,
+                                           &ccw_addr->devno) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("failed to parse the CCW address from sysfs path: '%1$s'"),
                        sysfs_path);
         return -1;
     }
 
+    data->ccw_dev.dev_addr = g_steal_pointer(&ccw_addr);
+
     return 0;
 }
 
diff --git a/tests/nodedevmdevctltest.c b/tests/nodedevmdevctltest.c
index 93b0efcb1c..c7e6836edb 100644
--- a/tests/nodedevmdevctltest.c
+++ b/tests/nodedevmdevctltest.c
@@ -435,9 +435,10 @@ fakeCSSDevice(void)
 
     def->caps->data.type = VIR_NODE_DEV_CAP_CSS_DEV;
     css_dev = &def->caps->data.ccw_dev;
-    css_dev->cssid = 0;
-    css_dev->ssid = 0;
-    css_dev->devno = 82;
+    css_dev->dev_addr = g_new0(virCCWDeviceAddress, 1);
+    css_dev->dev_addr->cssid = 0;
+    css_dev->dev_addr->ssid = 0;
+    css_dev->dev_addr->devno = 82;
 
     return def;
 }
-- 
2.47.0



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux