On 4/7/25 15:11, Peter Krempa via Devel wrote: > On Mon, Apr 07, 2025 at 14:49:14 +0200, Peter Krempa via Devel wrote: >> On Mon, Apr 07, 2025 at 14:25:43 +0200, Kirill Shchetiniuk via Devel wrote: >>> 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_STORAGE_VOL_CREATE_VALIDATE flag before >>> virStorageVolDefParseXML and 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 <kshch...@redhat.com> >>> --- >>> NEWS.rst | 5 +++++ >>> src/conf/storage_conf.c | 2 ++ >>> src/storage/storage_driver.c | 4 +++- >>> 3 files changed, 10 insertions(+), 1 deletion(-) >>> >>> diff --git a/NEWS.rst b/NEWS.rst >>> index e2dc4e508b..dd345bad7b 100644 >>> --- a/NEWS.rst >>> +++ b/NEWS.rst >>> @@ -28,6 +28,11 @@ v11.3.0 (unreleased) >>> >>> * **Bug fixes** >>> >>> + * storage: Fix new volume creation >>> + >>> + No more errors occur when new storage volume is being created >>> + using ``vol-create`` with ``--validate`` option. >> >> Changes to NEWS must be always in a separate patch. Mainly you >> definitely do not want to have conflicts when backporting patches, where >> NEWS definitely do not match. >> >>> v11.2.0 (2025-04-01) >>> ==================== >>> diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c >>> index 68842004b7..f6d804bb39 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_STORAGE_VOL_CREATE_VALIDATE); >> >> This function gets VIR_VOL_XML_PARSE_VALIDATE. In storageVolCreateXML >> VIR_STORAGE_VOL_CREATE_VALIDATE is converted to VIR_VOL_XML_PARSE_VALIDATE. >> >> Where did VIR_STORAGE_VOL_CREATE_VALIDATE leak from? >> >> Either way this hunk is incorrect as this flag should not get here and >> the caller needs to be fixed. > > If in fact you meant to mask out VIR_VOL_XML_PARSE_VALIDATE here
Yeah, that was the initial plan. > I > suggest you rather accept it in the virCheckFlags inside the parser code > rather than masking it out. > Well, I was the one who suggested to Kirill to mask the flag out. Accepting the flag inside a function and then never using it just felt wrong. Michal