
Thanks for your best efforts. I only have one problem. Please find it at the end. δΊ 2013/4/10 16:59, Osier Yang ει:
On 09/04/13 10:32, Han Cheng wrote:
Add scsi hostdev, it looks like:
<hostdev mode='subsystem' type='scsi'> <source> <adapter name='scsi_host0'/> <address bus='0' target='0' unit='0'/> </source> <address type='drive' controller='0' bus='0' target='4' unit='8'/> </hostdev> @@ -11028,6 +11154,18 @@ virDomainDefParseXML(xmlDocPtr xml, goto error; }
+ if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI && + hostdev->info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { + /* We define default mapping to be 1 controller, 1 bus, + * 1 target and many units. And we reserve first 16 unit for + * disk usage in virDomainDiskDefAssignAddress */ + hostdev->info->type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE; + hostdev->info->addr.drive.controller = 0; + hostdev->info->addr.drive.bus = 0; + hostdev->info->addr.drive.target = 0; + hostdev->info->addr.drive.unit = 16 + i; Why do we need to set the default values here? Per the "address" is mandatory.
I don't think so. The <address> in <source> is mandatory and is parsed by virDomainHostdevSubsysScsiDefParseXML called by virDomainHostdevSubsysUsbDefParseXML. The <address> out of <source> is not mandatory and is parsed by virDomainDeviceInfoParseXML which is called by virDomainHostdevDefParseXML. So we may need to set the default values. I'm afraid you have mixed these two addresses. Cheng, Regards