util: storage: Add helper for determining whether a backing chain requires PR

With blockdev support we will need to introspect whether any of the
backing chain members requires PR rather just one of them. Add a helper
and reuse it in virDomainDefHasManagedPR.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2018-05-17 12:52:02 +02:00
parent 3875459235
commit 8ac8301366
4 changed files with 19 additions and 1 deletions

View File

@ -29946,7 +29946,7 @@ virDomainDefHasManagedPR(const virDomainDef *def)
size_t i;
for (i = 0; i < def->ndisks; i++) {
if (virStoragePRDefIsManaged(def->disks[i]->src->pr))
if (virStorageSourceChainHasManagedPR(def->disks[i]->src))
return true;
}

View File

@ -2815,6 +2815,7 @@ virStoragePRDefIsEqual;
virStoragePRDefIsManaged;
virStoragePRDefParseXML;
virStorageSourceBackingStoreClear;
virStorageSourceChainHasManagedPR;
virStorageSourceClear;
virStorageSourceCopy;
virStorageSourceFindByNodeName;

View File

@ -2025,6 +2025,20 @@ virStoragePRDefIsManaged(virStoragePRDefPtr prd)
}
bool
virStorageSourceChainHasManagedPR(virStorageSourcePtr src)
{
virStorageSourcePtr n;
for (n = src; virStorageSourceIsBacking(n); n = n->backingStore) {
if (virStoragePRDefIsManaged(src->pr))
return true;
}
return false;
}
virSecurityDeviceLabelDefPtr
virStorageSourceGetSecurityLabelDef(virStorageSourcePtr src,
const char *model)

View File

@ -400,6 +400,9 @@ bool virStoragePRDefIsEqual(virStoragePRDefPtr a,
virStoragePRDefPtr b);
bool virStoragePRDefIsManaged(virStoragePRDefPtr prd);
bool
virStorageSourceChainHasManagedPR(virStorageSourcePtr src);
virSecurityDeviceLabelDefPtr
virStorageSourceGetSecurityLabelDef(virStorageSourcePtr src,
const char *model);