[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 1644754] [NEW] gluster partial reads refusal conflicts
From: |
flumm |
Subject: |
[Qemu-devel] [Bug 1644754] [NEW] gluster partial reads refusal conflicts with qcow2 |
Date: |
Fri, 25 Nov 2016 09:03:23 -0000 |
Public bug reported:
there is an inconsistency in how qemu creates qcow2 files, which causes
an error in the gluster (and possibly other block drivers)
the problem is that the gluster backend expects the filesize to be 512
byte aligned, which is not the case anymore since 2.7.0 when using the
file backend for qcow2 files with a backing file
the error is then
Could not open 'gluster://gluster01/gv0/bar2.qcow2': Could not read L1 table:
Input/output error
steps to reproduce:
* create a.qcow2
* create b.qcow2 with a.qcow2 as base via filesystem (without gluster)
b.qcow2 filesize is not a multiple of 512 bytes
* move both files to a gluster share
* access to b.qcow2 via gluster block driver fails
example:
have a gluster server at 'gluster01' with a volume 'gv0' (gluster
versions tested: 3.7.15,3.8.5,3.8.5)
address@hidden:~# mount -t glusterfs gluster01:/gv0 /mnt/gluster
address@hidden:~# qemu-img create -f qcow2 gluster://gluster01/gv0/foo.qcow2
100M
Formatting 'gluster://gluster01/gv0/foo.qcow2', fmt=qcow2 size=104857600
encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
address@hidden:~# qemu-img info /mnt/gluster/foo.qcow2
image: /mnt/gluster/foo.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img info gluster://gluster01/gv0/foo.qcow2
image: gluster://gluster01/gv0/foo.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img create -f qcow2 -b foo.qcow2
gluster://gluster01/gv0/bar.qcow2
Formatting 'gluster://gluster01/gv0/bar.qcow2', fmt=qcow2 size=104857600
backing_file=foo.qcow2 encryption=off cluster_size=65536 lazy_refcounts=off
refcount_bits=16
address@hidden:~# qemu-img info /mnt/gluster/bar.qcow2
image: /mnt/gluster/bar.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
backing file: foo.qcow2 (actual path: /mnt/gluster/foo.qcow2)
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img info gluster://gluster01/gv0/bar.qcow2
image: gluster://gluster01/gv0/bar.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
backing file: foo.qcow2 (actual path: gluster://gluster01/gv0/foo.qcow2)
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img create -f qcow2 -b foo.qcow2 /mnt/gluster/bar2.qcow2
Formatting '/mnt/gluster/bar2.qcow2', fmt=qcow2 size=104857600
backing_file=foo.qcow2 encryption=off cluster_size=65536 lazy_refcounts=off
refcount_bits=16
address@hidden:~# qemu-img info /mnt/gluster/bar2.qcow2
image: /mnt/gluster/bar2.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
backing file: foo.qcow2 (actual path: /mnt/gluster/foo.qcow2)
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img info gluster://gluster01/gv0/bar2.qcow2
qemu-img: Could not open 'gluster://gluster01/gv0/bar2.qcow2': Could not read
L1 table: Input/output error
address@hidden:~# ls -l /mnt/gluster/
total 578
-rw-r--r-- 1 root root 196616 Nov 25 09:07 bar2.qcow2
-rw------- 1 root root 197120 Nov 25 09:07 bar.qcow2
-rw------- 1 root root 197120 Nov 25 09:06 foo.qcow2
drwxr-xr-x 6 root root 46 Nov 24 16:51 images
here you can see that the file created with directory path is not 512
byte aligned, while the one created through the gluster api is
also, when creating a qcow2 with the nfs block driver, the filesize is
also a multiple of 512, but reading a non aligned file with nfs works
however
** Affects: qemu
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1644754
Title:
gluster partial reads refusal conflicts with qcow2
Status in QEMU:
New
Bug description:
there is an inconsistency in how qemu creates qcow2 files, which
causes an error in the gluster (and possibly other block drivers)
the problem is that the gluster backend expects the filesize to be 512
byte aligned, which is not the case anymore since 2.7.0 when using the
file backend for qcow2 files with a backing file
the error is then
Could not open 'gluster://gluster01/gv0/bar2.qcow2': Could not read L1 table:
Input/output error
steps to reproduce:
* create a.qcow2
* create b.qcow2 with a.qcow2 as base via filesystem (without gluster)
b.qcow2 filesize is not a multiple of 512 bytes
* move both files to a gluster share
* access to b.qcow2 via gluster block driver fails
example:
have a gluster server at 'gluster01' with a volume 'gv0' (gluster
versions tested: 3.7.15,3.8.5,3.8.5)
address@hidden:~# mount -t glusterfs gluster01:/gv0 /mnt/gluster
address@hidden:~# qemu-img create -f qcow2 gluster://gluster01/gv0/foo.qcow2
100M
Formatting 'gluster://gluster01/gv0/foo.qcow2', fmt=qcow2 size=104857600
encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16
address@hidden:~# qemu-img info /mnt/gluster/foo.qcow2
image: /mnt/gluster/foo.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img info gluster://gluster01/gv0/foo.qcow2
image: gluster://gluster01/gv0/foo.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img create -f qcow2 -b foo.qcow2
gluster://gluster01/gv0/bar.qcow2
Formatting 'gluster://gluster01/gv0/bar.qcow2', fmt=qcow2 size=104857600
backing_file=foo.qcow2 encryption=off cluster_size=65536 lazy_refcounts=off
refcount_bits=16
address@hidden:~# qemu-img info /mnt/gluster/bar.qcow2
image: /mnt/gluster/bar.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
backing file: foo.qcow2 (actual path: /mnt/gluster/foo.qcow2)
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img info gluster://gluster01/gv0/bar.qcow2
image: gluster://gluster01/gv0/bar.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
backing file: foo.qcow2 (actual path: gluster://gluster01/gv0/foo.qcow2)
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img create -f qcow2 -b foo.qcow2
/mnt/gluster/bar2.qcow2
Formatting '/mnt/gluster/bar2.qcow2', fmt=qcow2 size=104857600
backing_file=foo.qcow2 encryption=off cluster_size=65536 lazy_refcounts=off
refcount_bits=16
address@hidden:~# qemu-img info /mnt/gluster/bar2.qcow2
image: /mnt/gluster/bar2.qcow2
file format: qcow2
virtual size: 100M (104857600 bytes)
disk size: 193K
cluster_size: 65536
backing file: foo.qcow2 (actual path: /mnt/gluster/foo.qcow2)
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
address@hidden:~# qemu-img info gluster://gluster01/gv0/bar2.qcow2
qemu-img: Could not open 'gluster://gluster01/gv0/bar2.qcow2': Could not read
L1 table: Input/output error
address@hidden:~# ls -l /mnt/gluster/
total 578
-rw-r--r-- 1 root root 196616 Nov 25 09:07 bar2.qcow2
-rw------- 1 root root 197120 Nov 25 09:07 bar.qcow2
-rw------- 1 root root 197120 Nov 25 09:06 foo.qcow2
drwxr-xr-x 6 root root 46 Nov 24 16:51 images
here you can see that the file created with directory path is not 512
byte aligned, while the one created through the gluster api is
also, when creating a qcow2 with the nfs block driver, the filesize is
also a multiple of 512, but reading a non aligned file with nfs works
however
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1644754/+subscriptions
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [Bug 1644754] [NEW] gluster partial reads refusal conflicts with qcow2,
flumm <=