mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-20 06:50:22 +03:00
nodedev: refactor CCW device address
Replace cssid, ssid and devno elements with virCCWDeviceAddress. Reviewed-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
04de9ad285
commit
7ad25b4665
@ -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:
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user