Operating systems use the identifier to name the disks. As the name
suggests the ID should be unique.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=
1208009
<dt><code>wwn</code></dt>
<dd>If present, this element specifies the WWN (World Wide Name)
of a virtual hard disk or CD-ROM drive. It must be composed
- of 16 hexadecimal digits.
+ of 16 hexadecimal digits and must be unique (at least among
+ disks of a single domain)
<span class='since'>Since 0.10.1</span>
</dd>
<dt><code>vendor</code></dt>
return false;
}
+
+
+int
+virDomainDefCheckDuplicateDiskWWN(virDomainDefPtr def)
+{
+ size_t i;
+ size_t j;
+
+ for (i = 0; i < def->ndisks; i++) {
+ if (def->disks[i]->wwn) {
+ for (j = i + 1; j < def->ndisks; j++) {
+ if (STREQ_NULLABLE(def->disks[i]->wwn,
+ def->disks[j]->wwn)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("Disks '%s' and '%s' have identical WWN"),
+ def->disks[i]->dst,
+ def->disks[j]->dst);
+ return -1;
+ }
+ }
+ }
+ }
+
+ return 0;
+}
bool virDomainDefNeedsPlacementAdvice(virDomainDefPtr def)
ATTRIBUTE_NONNULL(1);
+int virDomainDefCheckDuplicateDiskWWN(virDomainDefPtr def)
+ ATTRIBUTE_NONNULL(1);
+
#endif /* __DOMAIN_CONF_H */
virDomainCpuPlacementModeTypeToString;
virDomainDefAddImplicitControllers;
virDomainDefCheckABIStability;
+virDomainDefCheckDuplicateDiskWWN;
virDomainDefCheckUnsupportedMemoryHotplug;
virDomainDefClearCCWAddresses;
virDomainDefClearDeviceAliases;
goto cleanup;
}
+ if (virDomainDefCheckDuplicateDiskWWN(vm->def) < 0)
+ goto cleanup;
+
/* "volume" type disk's source must be translated before
* cgroup and security setting.
*/