[Qemu-devel] [RFC] Check backing_file chain's loop
Hi, Now block layer does not check whether backing_file chain can be a circle, do you think it is necessary to do a check? For example, 1.qcow2's backing_file is 2.qcow2 and 2.qcow2's backing_file is 1.qcow2, then any IO operation will be a fault. If necessary, I will post a patch to fix. [$] qemu-img create -f qcow2 1.qcow2 qemu-img: Image creation needs a size parameter [$] qemu-img create -f qcow2 1.qcow2 8M Formatting '1.qcow2', fmt=qcow2 size=8388608 encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-img create -f qcow2 2.qcow2 -o backing_file=1.qcow2 Formatting '2.qcow2', fmt=qcow2 size=8388608 backing_file='1.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-img create -f qcow2 1.qcow2 -o backing_file=2.qcow2 Formatting '1.qcow2', fmt=qcow2 size=8388608 backing_file='2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-io -c read -v 0 512 1.qcow2 ^CSegmentation fault (core dumped) Thanks.
Re: [Qemu-devel] [RFC] Check backing_file chain's loop
On 05/30/2013 04:14 AM, Dongxu Wang wrote: Hi, Now block layer does not check whether backing_file chain can be a circle, do you think it is necessary to do a check? For example, 1.qcow2's backing_file is 2.qcow2 and 2.qcow2's backing_file is 1.qcow2, then any IO operation will be a fault. If necessary, I will post a patch to fix. Yes, it's worth patching. [$] qemu-img create -f qcow2 1.qcow2 qemu-img: Image creation needs a size parameter [$] qemu-img create -f qcow2 1.qcow2 8M Formatting '1.qcow2', fmt=qcow2 size=8388608 encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-img create -f qcow2 2.qcow2 -o backing_file=1.qcow2 Formatting '2.qcow2', fmt=qcow2 size=8388608 backing_file='1.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-img create -f qcow2 1.qcow2 -o backing_file=2.qcow2 Formatting '1.qcow2', fmt=qcow2 size=8388608 backing_file='2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-io -c read -v 0 512 1.qcow2 ^CSegmentation fault (core dumped) Also make sure that 'qemu-img info 1.qcow2' and 'qemu-img info --backing-chain 1.qcow2' don't crash. -- Eric Blake eblake redhat com+1-919-301-3266 Libvirt virtualization library http://libvirt.org signature.asc Description: OpenPGP digital signature
Re: [Qemu-devel] [RFC] Check backing_file chain's loop
On Thu, May 30, 2013 at 06:12:00AM -0600, Eric Blake wrote: On 05/30/2013 04:14 AM, Dongxu Wang wrote: Hi, Now block layer does not check whether backing_file chain can be a circle, do you think it is necessary to do a check? For example, 1.qcow2's backing_file is 2.qcow2 and 2.qcow2's backing_file is 1.qcow2, then any IO operation will be a fault. If necessary, I will post a patch to fix. Yes, it's worth patching. [$] qemu-img create -f qcow2 1.qcow2 qemu-img: Image creation needs a size parameter [$] qemu-img create -f qcow2 1.qcow2 8M Formatting '1.qcow2', fmt=qcow2 size=8388608 encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-img create -f qcow2 2.qcow2 -o backing_file=1.qcow2 Formatting '2.qcow2', fmt=qcow2 size=8388608 backing_file='1.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-img create -f qcow2 1.qcow2 -o backing_file=2.qcow2 Formatting '1.qcow2', fmt=qcow2 size=8388608 backing_file='2.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off [$] qemu-io -c read -v 0 512 1.qcow2 ^CSegmentation fault (core dumped) Also make sure that 'qemu-img info 1.qcow2' and 'qemu-img info --backing-chain 1.qcow2' don't crash. qemu-img info --backing-chain detects cycles and returns an error, see the hash table in collect_image_info_list(). We should protect bdrv_open() too. Stefan
Re: [Qemu-devel] [RFC] Check backing_file chain's loop
On 2013/5/30 20:48, Stefan Hajnoczi wrote: hain 1.qcow2' don't crash. qemu-img info --backing-chain detects cycles and returns an error, see the hash table in collect_image_info_list(). We should protect bdrv_open() too. Okay, will send a patch. Stefan