From: Peter Krempa Date: Wed, 28 May 2025 14:20:15 +0000 (+0200) Subject: storage_file_probe: Refactor vmdk4GetBackingStore into vmdk4GetImageSpecific X-Git-Tag: v11.5.0-rc1~96 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7ae9141a123efd124b9133661515ae3a10ab7578;p=thirdparty%2Flibvirt.git storage_file_probe: Refactor vmdk4GetBackingStore into vmdk4GetImageSpecific Change to the new function prototype and adjust the code to fill the fields in virStorageSource directly. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/storage_file/storage_file_probe.c b/src/storage_file/storage_file_probe.c index 1544dded5c..e741bccd44 100644 --- a/src/storage_file/storage_file_probe.c +++ b/src/storage_file/storage_file_probe.c @@ -114,8 +114,10 @@ static int qcowXGetBackingStore(char **, int *, static int qcow2GetDataFile(char **, virBitmap *, char *, size_t); static int qcow2GetFeatures(virBitmap **features, int format, char *buf, ssize_t len); -static int vmdk4GetBackingStore(char **, int *, - const char *, size_t); +static int +vmdk4GetImageSpecific(virStorageSource *meta, + const char *buf, + size_t buf_size); static int qedGetImageSpecific(virStorageSource *meta, const char *buf, @@ -336,7 +338,7 @@ static struct FileTypeInfo const fileTypeInfo[] = { [VIR_STORAGE_FILE_VMDK] = { 0, "KDMV", LV_LITTLE_ENDIAN, 4, 4, {1, 2, 3}, - 4+4+4, 8, 512, NULL, NULL, vmdk4GetBackingStore, NULL, NULL, NULL + 4+4+4, 8, 512, NULL, NULL, NULL, NULL, NULL, vmdk4GetImageSpecific }, }; G_STATIC_ASSERT(G_N_ELEMENTS(fileTypeInfo) == VIR_STORAGE_FILE_LAST); @@ -607,10 +609,9 @@ qcow2GetDataFile(char **res, static int -vmdk4GetBackingStore(char **res, - int *format, - const char *buf, - size_t buf_size) +vmdk4GetImageSpecific(virStorageSource *meta, + const char *buf, + size_t buf_size) { static const char prefix[] = "parentFileNameHint=\""; char *start, *end; @@ -619,7 +620,7 @@ vmdk4GetBackingStore(char **res, desc = g_new0(char, VIR_STORAGE_MAX_HEADER); - *res = NULL; + g_clear_pointer(&meta->backingStoreRaw, g_free); /* * Technically this should have been VMDK, since * VMDK spec / VMware impl only support VMDK backed @@ -627,7 +628,7 @@ vmdk4GetBackingStore(char **res, * does probing on VMDK backing files, hence we set * AUTO */ - *format = VIR_STORAGE_FILE_AUTO; + meta->backingStoreRawFormat = VIR_STORAGE_FILE_AUTO; if (buf_size <= 0x200) return 0; @@ -639,7 +640,7 @@ vmdk4GetBackingStore(char **res, desc[len] = '\0'; start = strstr(desc, prefix); if (start == NULL) { - *format = VIR_STORAGE_FILE_NONE; + meta->backingStoreRawFormat = VIR_STORAGE_FILE_NONE; return 0; } start += strlen(prefix); @@ -648,11 +649,11 @@ vmdk4GetBackingStore(char **res, return 0; if (end == start) { - *format = VIR_STORAGE_FILE_NONE; + meta->backingStoreRawFormat = VIR_STORAGE_FILE_NONE; return 0; } *end = '\0'; - *res = g_strdup(start); + meta->backingStoreRaw = g_strdup(start); return 0; }