From 6fe9e356108bf6d300077fa3fe639dcaeecb4270 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 23 Nov 2023 20:42:54 +0100 Subject: [PATCH] virstoragetest: Add test cases for QCOW2 files with a protocol name as backing file format MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit QEMU allows and in cases where you omit the not-strictly-needed 'raw' driver on top of raw images automatically uses the protocol name inside of the 'backing file format' field of the qcow2 image. Libvirt expects only format names in that field. Add example images showing this scenario, which will be fixed later. The qcow2 image files in this commit were formatted as: qemu-img create -f qcow2 -F nbd -b nbd+tcp://example.org:6000/blah -u qcow2-protocol-backing-nbd.qcow2 10M and qemu-img create -f qcow2 -F file -b raw qcow2-protocol-backing-file.qcow2 thus using 'nbd' and 'file' as backing format respectively. (note that '-b raw' refers to the file in the example image folder) To satisfy the test, note that the NBD image is also rejected as we can't probe it, thus such configuration would not work. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- tests/virstoragetest.c | 8 +++++++ .../images/qcow2-protocol-backing-file.qcow2 | Bin 0 -> 196616 bytes .../images/qcow2-protocol-backing-nbd.qcow2 | Bin 0 -> 196616 bytes .../out/qcow2-protocol-backing-file | 21 ++++++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 tests/virstoragetestdata/images/qcow2-protocol-backing-file.qcow2 create mode 100644 tests/virstoragetestdata/images/qcow2-protocol-backing-nbd.qcow2 create mode 100644 tests/virstoragetestdata/out/qcow2-protocol-backing-file diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c index c28a23e332..53533d5885 100644 --- a/tests/virstoragetest.c +++ b/tests/virstoragetest.c @@ -478,6 +478,14 @@ mymain(void) abs_srcdir "/virstoragetestdata/images/qcow2_qcow2-auto.qcow2", VIR_STORAGE_FILE_QCOW2, EXP_PASS); + /* QCOW2 with protocol recorded inside the 'backing file format field */ + TEST_CHAIN("qcow2-protocol-backing-file", + abs_srcdir "/virstoragetestdata/images/qcow2-protocol-backing-file.qcow2", + VIR_STORAGE_FILE_QCOW2, EXP_PASS); + TEST_CHAIN("qcow2-protocol-backing-nbd", + abs_srcdir "/virstoragetestdata/images/qcow2-protocol-backing-nbd.qcow2", + VIR_STORAGE_FILE_QCOW2, EXP_FAIL); + /* Qcow2 file with missing backing file but specified type */ TEST_CHAIN("qcow2-qcow2_missing", abs_srcdir "/virstoragetestdata/images/qcow2_qcow2-missing.qcow2", diff --git a/tests/virstoragetestdata/images/qcow2-protocol-backing-file.qcow2 b/tests/virstoragetestdata/images/qcow2-protocol-backing-file.qcow2 new file mode 100644 index 0000000000000000000000000000000000000000..b3fe320f0f521820f2c4a614fed4cea18fdca55c GIT binary patch literal 196616 zc-rmIF;2rU6aY}C;Q&2CW=0Nygv7$c92!?dYLh5Q1!3ZR9D`FJv5=H@=m5>$_bgfd zmj3tuez?8+4k4srZ?Qa_m%s5`x~jKL8@sNotE?ZIcy7w6epSRG zyT8d|)wgBr{%b#M^0y&t<9b!^s=hnhei-N6=1n*A(-%pbzhoyf&&nIK0ssI200000 z00000000000000000000000000000000000000000000000000000000000000000 z0001R!4|#%0000000000000000000000000000000000000000000000000000000 z00000000000000000000007|PC5Ht700000000000000000000000000000000000 n0000000000000000000000000000000000000000005&O;Py4M literal 0 Hc-jL100001 diff --git a/tests/virstoragetestdata/images/qcow2-protocol-backing-nbd.qcow2 b/tests/virstoragetestdata/images/qcow2-protocol-backing-nbd.qcow2 new file mode 100644 index 0000000000000000000000000000000000000000..0ae422d8f550cc6bacf3d4d757110177ce457865 GIT binary patch literal 196616 zc-rmJF;3h-6adiiE(hQSxK1Q?m4bo;AR*DDO6^?_!IIau#)HD9;wYRa$H*y=XfP`% zXux&y-e|t`rJ1k)XTD!tK7|mL;b3t*g_CI?AJT{LrZ~jqyQ~QF98G(8OaAV^{CTO= zZR$gQvwZw9mAVh1Zc^Ttnnc~}b<@TV&o8(AZb)$) zo4zaaeu$q<`BJ~DV_jZ-D`S^a6UUF*4{h~(U#57y?Qgq0e%gMR=G;}oIP=jLMXG+4 z?`EELZ~B+7c{`l1R`IUd4Q)K_)6es>^?JS9wAD=j0000000000000000000000000 z000000000000000000000000000000000000000000000000000091R3r_$500000 z00000000000000000000000000000000000000000000000000000000000000000 z000000Px={UKaoW00000000000000000000000000000000000000000000000000 b000000000000000000000000008E|%lWRX3 literal 0 Hc-jL100001 diff --git a/tests/virstoragetestdata/out/qcow2-protocol-backing-file b/tests/virstoragetestdata/out/qcow2-protocol-backing-file new file mode 100644 index 0000000000..b565bdba77 --- /dev/null +++ b/tests/virstoragetestdata/out/qcow2-protocol-backing-file @@ -0,0 +1,21 @@ +path:ABS_SRCDIR/virstoragetestdata/images/qcow2-protocol-backing-file.qcow2 +backingStoreRaw: raw +backingStoreRawFormat: (-1) +capacity: 1024 +encryption: 0 +relPath: +type:file +format:qcow2 +protocol:none +hostname: + +path:ABS_SRCDIR/virstoragetestdata/images/raw +backingStoreRaw: +backingStoreRawFormat: none(0) +capacity: 0 +encryption: 0 +relPath:raw +type:file +format:raw +protocol:none +hostname: -- 2.47.3