diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 93501cf316bc2ddfe4e8a5b2e2cb83a66fbbbe0a..2b68841d0561320a8e53b71b400aebf4d502d634 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2502,6 +2502,23 @@ virDomainParseLegacyDeviceAddress(char *devaddr, return 0; } +int +virDomainDiskFindControllerModel(virDomainDefPtr def, + virDomainDiskDefPtr disk, + int controllerType) +{ + int model = -1; + int i; + + for (i = 0; i < def->ncontrollers; i++) { + if (def->controllers[i]->type == controllerType && + def->controllers[i]->idx == disk->info.addr.drive.controller) + model = def->controllers[i]->model; + } + + return model; +} + int virDomainDiskDefAssignAddress(virCapsPtr caps, virDomainDiskDefPtr def) { diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 777bccb9b19cacc2feb762ce5f464950270333a4..fed7cc3de0c211e1f332fcce000ebf6192c04707 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1729,6 +1729,9 @@ void virDomainGraphicsDefFree(virDomainGraphicsDefPtr def); void virDomainInputDefFree(virDomainInputDefPtr def); void virDomainDiskDefFree(virDomainDiskDefPtr def); void virDomainDiskHostDefFree(virDomainDiskHostDefPtr def); +int virDomainDiskFindControllerModel(virDomainDefPtr def, + virDomainDiskDefPtr disk, + int controllerType); void virDomainControllerDefFree(virDomainControllerDefPtr def); void virDomainFSDefFree(virDomainFSDefPtr def); void virDomainActualNetDefFree(virDomainActualNetDefPtr def); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 3ee40dc491b0549a7c92117999c8a6bf7854dd69..b9baf9a08ce0b29ea905dceb1a436193253395e8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -302,6 +302,7 @@ virDomainDiskDefFree; virDomainDiskDeviceTypeToString; virDomainDiskErrorPolicyTypeFromString; virDomainDiskErrorPolicyTypeToString; +virDomainDiskFindControllerModel; virDomainDiskIndexByName; virDomainDiskInsert; virDomainDiskInsertPreAlloced;