{
int next_unit = 0;
unsigned controller = 0;
+ unsigned int max_unit;
size_t i;
int ret;
+ if (xmlopt->config.features & VIR_DOMAIN_DEF_FEATURE_WIDE_SCSI)
+ max_unit = SCSI_WIDE_BUS_MAX_CONT_UNIT;
+ else
+ max_unit = SCSI_NARROW_BUS_MAX_CONT_UNIT;
+
for (i = 0; i < def->ncontrollers; i++) {
if (def->controllers[i]->type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI)
continue;
controller++;
- ret = virDomainControllerSCSINextUnit(def,
- xmlopt->config.hasWideSCSIBus ?
- SCSI_WIDE_BUS_MAX_CONT_UNIT :
- SCSI_NARROW_BUS_MAX_CONT_UNIT,
+ ret = virDomainControllerSCSINextUnit(def, max_unit,
def->controllers[i]->idx);
if (ret >= 0) {
next_unit = ret;
def->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE;
- if (xmlopt->config.hasWideSCSIBus) {
+ if (xmlopt->config.features & VIR_DOMAIN_DEF_FEATURE_WIDE_SCSI) {
/* For a wide SCSI bus we define the default mapping to be
* 16 units per bus, 1 bus per controller, many controllers.
* Unit 7 is the SCSI controller itself. Therefore unit 7
virDomainDefPtr def);
+typedef enum {
+ VIR_DOMAIN_DEF_FEATURE_WIDE_SCSI = (1 << 0),
+} virDomainDefFeatures;
+
+
/* This structure holds various callbacks and data needed
* while parsing and creating domain XMLs */
typedef struct _virDomainXMLOption virDomainXMLOption;
virFreeCallback privFree;
/* data */
- bool hasWideSCSIBus;
+ unsigned int features; /* virDomainDefFeatures */
unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN];
};
}
static virDomainDefParserConfig virVMXDomainDefParserConfig = {
- .hasWideSCSIBus = true,
.macPrefix = {0x00, 0x0c, 0x29},
.devicesPostParseCallback = virVMXDomainDevicesDefPostParse,
.domainPostParseCallback = virVMXDomainDefPostParse,
+ .features = VIR_DOMAIN_DEF_FEATURE_WIDE_SCSI,
};
static void