Put it into a separate function that can be called on two disk def pointers. --- src/conf/domain_conf.c | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 55e7ed9..2ef6609 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -23920,6 +23920,28 @@ virDomainDefNeedsPlacementAdvice(virDomainDefPtr def) } +static int +virDomainDiskDefCheckDuplicateInfo(virDomainDiskDefPtr a, + virDomainDiskDefPtr b) +{ + if (a->wwn && b->wwn && STREQ(a->wwn, b->wwn)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Disks '%s' and '%s' have identical WWN"), + a->dst, b->dst); + return -1; + } + + if (a->serial && b->serial && STREQ(a->serial, b->serial)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Disks '%s' and '%s' have identical serial"), + a->dst, b->dst); + return -1; + } + + return 0; +} + + int virDomainDefCheckDuplicateDiskInfo(virDomainDefPtr def) { @@ -23929,25 +23951,9 @@ virDomainDefCheckDuplicateDiskInfo(virDomainDefPtr def) for (i = 0; i < def->ndisks; i++) { if (def->disks[i]->wwn || def->disks[i]->serial) { for (j = i + 1; j < def->ndisks; j++) { - if (def->disks[i]->wwn && - 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); + if (virDomainDiskDefCheckDuplicateInfo(def->disks[i], + def->disks[j]) < 0) 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; - } } } } -- 2.6.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list