[Qemu-devel] [RFC] Check backing_file chain's loop

2013-05-30 Thread Dongxu Wang

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

2013-05-30 Thread Eric Blake
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

2013-05-30 Thread Stefan Hajnoczi
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

2013-05-30 Thread Dongxu Wang

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