qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH/RFC] block: Ensure that block size constraints a


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH/RFC] block: Ensure that block size constraints are considered
Date: Tue, 11 Dec 2012 11:30:37 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120605 Thunderbird/13.0

Am 11.12.2012 10:58, schrieb Heinz Graalfs:
> Hi Kevin,
> 
> I'm using the bdrv_pread() function during boot partition detection ...
> 
> In detail: 
> bdrv_pread() is called to read 32 bytes from a 2048 bytes formatted
> disk. This results in setting up a read of 512 bytes (1 sector
> multiplied by 512 current code in paio_submit()), which is wrong for a
> O_DIRECT opened file, and produces the error.

So this sounds like the real problem: bdrv_pread/pwrite assume 512 byte
sectors. May it's better to fix it there instead of just fixing one code
path in one backend.

In any case this patch as submitted is wrong as it overflows the buffer
passed to paio_submit. Test it with this patch:

--- a/qemu-io.c
+++ b/qemu-io.c
@@ -1718,6 +1718,8 @@ static int openfile(char *name, int flags, int
growable)
             bs = NULL;
             return 1;
         }
+
+        bdrv_set_buffer_alignment(bs, 4096);
     }

     return 0;


$ ./qemu-io -n -c 'read -p 0 512' /tmp/foo
read 512/512 bytes at offset 0
512 bytes, 1 ops; 0.0001 sec (3.727 MiB/sec and 7633.5878 ops/sec)
*** glibc detected *** ./qemu-io: double free or corruption (out):
0x00007fa22349b000 ***

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]