提交 34315608 编写于 作者: P Peter Krempa

conf: Reuse virDomainDefCheckDuplicateDiskWWN to check disk serial too

Rename the function to virDomainDefCheckDuplicateDiskInfo and make it
check disk serials too.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1245013
上级 199d17de
...@@ -24451,15 +24451,16 @@ virDomainDefNeedsPlacementAdvice(virDomainDefPtr def) ...@@ -24451,15 +24451,16 @@ virDomainDefNeedsPlacementAdvice(virDomainDefPtr def)
int int
virDomainDefCheckDuplicateDiskWWN(virDomainDefPtr def) virDomainDefCheckDuplicateDiskInfo(virDomainDefPtr def)
{ {
size_t i; size_t i;
size_t j; size_t j;
for (i = 0; i < def->ndisks; i++) { for (i = 0; i < def->ndisks; i++) {
if (def->disks[i]->wwn) { if (def->disks[i]->wwn || def->disks[i]->serial) {
for (j = i + 1; j < def->ndisks; j++) { for (j = i + 1; j < def->ndisks; j++) {
if (STREQ_NULLABLE(def->disks[i]->wwn, if (def->disks[i]->wwn &&
STREQ_NULLABLE(def->disks[i]->wwn,
def->disks[j]->wwn)) { def->disks[j]->wwn)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Disks '%s' and '%s' have identical WWN"), _("Disks '%s' and '%s' have identical WWN"),
...@@ -24467,6 +24468,16 @@ virDomainDefCheckDuplicateDiskWWN(virDomainDefPtr def) ...@@ -24467,6 +24468,16 @@ virDomainDefCheckDuplicateDiskWWN(virDomainDefPtr def)
def->disks[j]->dst); def->disks[j]->dst);
return -1; return -1;
} }
if (def->disks[i]->serial &&
STREQ_NULLABLE(def->disks[i]->serial,
def->disks[j]->serial)) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("Disks '%s' and '%s' have identical serial"),
def->disks[i]->dst,
def->disks[j]->dst);
return -1;
}
} }
} }
} }
......
...@@ -3219,7 +3219,7 @@ virDomainParseMemory(const char *xpath, ...@@ -3219,7 +3219,7 @@ virDomainParseMemory(const char *xpath,
bool virDomainDefNeedsPlacementAdvice(virDomainDefPtr def) bool virDomainDefNeedsPlacementAdvice(virDomainDefPtr def)
ATTRIBUTE_NONNULL(1); ATTRIBUTE_NONNULL(1);
int virDomainDefCheckDuplicateDiskWWN(virDomainDefPtr def) int virDomainDefCheckDuplicateDiskInfo(virDomainDefPtr def)
ATTRIBUTE_NONNULL(1); ATTRIBUTE_NONNULL(1);
#endif /* __DOMAIN_CONF_H */ #endif /* __DOMAIN_CONF_H */
...@@ -200,7 +200,7 @@ virDomainCpuPlacementModeTypeFromString; ...@@ -200,7 +200,7 @@ virDomainCpuPlacementModeTypeFromString;
virDomainCpuPlacementModeTypeToString; virDomainCpuPlacementModeTypeToString;
virDomainDefAddImplicitControllers; virDomainDefAddImplicitControllers;
virDomainDefCheckABIStability; virDomainDefCheckABIStability;
virDomainDefCheckDuplicateDiskWWN; virDomainDefCheckDuplicateDiskInfo;
virDomainDefCheckUnsupportedMemoryHotplug; virDomainDefCheckUnsupportedMemoryHotplug;
virDomainDefClearCCWAddresses; virDomainDefClearCCWAddresses;
virDomainDefClearDeviceAliases; virDomainDefClearDeviceAliases;
......
...@@ -4629,7 +4629,7 @@ int qemuProcessStart(virConnectPtr conn, ...@@ -4629,7 +4629,7 @@ int qemuProcessStart(virConnectPtr conn,
} }
if (!migrateFrom && !snapshot && if (!migrateFrom && !snapshot &&
virDomainDefCheckDuplicateDiskWWN(vm->def) < 0) virDomainDefCheckDuplicateDiskInfo(vm->def) < 0)
goto cleanup; goto cleanup;
/* "volume" type disk's source must be translated before /* "volume" type disk's source must be translated before
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册