From: Kirill Shchetiniuk via Devel Date: Wed, 9 Apr 2025 08:43:15 +0000 (+0200) Subject: storage: virStorageVolDefParse and storageVolCreateXML flags fix X-Git-Tag: v11.3.0-rc1~60 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b8c3d847a900b54678ebbf278c560f82017070a5;p=thirdparty%2Flibvirt.git storage: virStorageVolDefParse and storageVolCreateXML flags fix When the new storage was created using virsh with --validate option following errors occurred: # virsh vol-create default --file vol-def.xml --validate error: Failed to create vol from vol-def.xml error: unsupported flags (0x4) in function virStorageVolDefParseXML and after virStorageVolDefParse fix: # virsh vol-create default --file vol-def.xml --validate error: Failed to create vol from vol-def.xml error: unsupported flags (0x4) in function storageBackendCreateQemuImg Clear the VIR_VOL_XML_PARSE_VALIDATE flag before virStorageVolDefParseXML() and the VIR_STORAGE_VOL_CREATE_VALIDATE before backend->buildVol() (traces down to storageBackendCreateQemuImg) calls, as the XML schema validation is already complete within previous steps and there is no validation later. Signed-off-by: Kirill Shchetiniuk Signed-off-by: Michal Privoznik Reviewed-by: Michal Privoznik --- diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 68842004b7..1dc9365bf2 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1409,6 +1409,8 @@ virStorageVolDefParse(virStoragePoolDef *pool, "volume", &ctxt, "storagevol.rng", validate))) return NULL; + flags &= ~VIR_VOL_XML_PARSE_VALIDATE; + return virStorageVolDefParseXML(pool, ctxt, flags); } diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 86c03762d2..e19e032427 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -1939,6 +1939,7 @@ storageVolCreateXML(virStoragePoolPtr pool, if (backend->buildVol) { int buildret; virStorageVolDef *buildvoldef = NULL; + unsigned int buildFlags = flags; buildvoldef = g_new0(virStorageVolDef, 1); @@ -1953,7 +1954,8 @@ storageVolCreateXML(virStoragePoolPtr pool, voldef->building = true; virObjectUnlock(obj); - buildret = backend->buildVol(obj, buildvoldef, flags); + buildFlags &= ~VIR_STORAGE_VOL_CREATE_VALIDATE; + buildret = backend->buildVol(obj, buildvoldef, buildFlags); VIR_FREE(buildvoldef);