
On Mon, Apr 15, 2013 at 08:27:10PM +0800, Han Cheng wrote:
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
s/virDomainHostdevSubsysUsbDefParseXML/virDomainHostdevDefParseXMLSubsys/
<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.
I think Osier means hostdev/address, but not hostdev/source/address.