From b1c778d854a927c3b7d11f06add9761148b6d5d5 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 16 Aug 2019 11:34:27 +0200 Subject: [PATCH] util: storagefile: Don't traverse storage sources unusable by VM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit virStorageFileGetMetadataRecurse would include files in the backing chain which would not really be usable by libvirt directly e.g. when such file would be promoted to the top layer by an active block commit as for example inline authentication data can't be represented in the VM xml file. The idea is to use secrets for this. With the changes to the backing store string parsers we can report and propagate if such a thing is present in the configuration and thus start skipping those files in the backing chain traversal code. This approach still allows to report the appropriate backing store string in the storage driver which doesn't directly use the backing file. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/util/virstoragefile.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index 66cde582fc..2a5ae8b1fd 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -4935,9 +4935,15 @@ virStorageFileGetMetadataRecurse(virStorageSourcePtr src, goto cleanup; if (src->backingStoreRaw) { - if (virStorageSourceNewFromBacking(src, &backingStore) < 0) + if ((rv = virStorageSourceNewFromBacking(src, &backingStore)) < 0) goto cleanup; + if (rv == 1) { + /* the backing file would not be usable for VM usage */ + ret = 0; + goto cleanup; + } + if (backingFormat == VIR_STORAGE_FILE_AUTO) backingStore->format = VIR_STORAGE_FILE_RAW; else if (backingFormat == VIR_STORAGE_FILE_AUTO_SAFE)