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.