[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] use O_DIRECT to open disk images for IDE failed under x
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream |
Date: |
Thu, 23 May 2013 13:34:54 +0100 |
User-agent: |
Alpine 2.02 (DEB 1266 2009-07-14) |
On Thu, 23 May 2013, Gonglei (Arei) wrote:
> Hi, all
>
> I use O_DIRECT to open disk images for IDE, but I'm failed. After debug, I
> get the below logs:
> [2013-05-22 23:25:46] ide: CMD=c8
> [2013-05-22 23:25:46] bmdma: readb 0x00 : 0x08
> [2013-05-22 23:25:46] bmdma: writeb 0x00 : 0x09
> [2013-05-22 23:25:46] bmdma_cmd_writeb: 0x00000009
> [2013-05-22 23:25:46] bmdma: readb 0x02 : 0x01
> [2013-05-22 23:25:46] bmdma: readb 0x02 : 0x01
> [2013-05-22 23:25:46] bmdma: readb 0x02 : 0x01
> [2013-05-22 23:25:46] bmdma: readb 0x02 : 0x01
> [2013-05-22 23:25:46] bmdma: readb 0x02 : 0x01
> [2013-05-22 23:25:46] bmdma: readb 0x02 : 0x01
> [2013-05-22 23:26:39] bmdma: writeb 0x00 : 0x08
> [2013-05-22 23:26:39] bmdma_cmd_writeb: 0x00000008
> [2013-05-22 23:26:56] ====== offset:0 buf:0x7ff100f21c00 count:512
> aio_offset:0
> [2013-05-22 23:31:30] ====== offset:0 buf:0x7ff100f21c00 count:512
> aio_offset:0
> [2013-05-22 23:31:30] ====== handle_aiocb_rw_linear errno: -14
> [2013-05-22 23:31:30] ====== paio_complete errno=14
> [2013-05-22 23:31:30] ====== ide_dma_error!!!
> [2013-05-22 23:31:30] ide: read status addr=0x3f6 val=41
>
> QEMU command line :
> qemu-system-i386 -xen-domid 837 -chardev
> socket,id=libxl-cmd,path=/var/run/xen/qmp-libxl-837,server,nowait -mon
> chardev=libxl-cmd,mode=control -name suse11 -vnc 0.0.0.0:1 -serial pty -boot
> order=c -usb -usbdevice tablet -smp 2,maxcpus=2 -device
> rtl8139,id=nic0,netdev=net0,mac=00:16:3e:13:d3:72 -netdev
> type=tap,id=net0,ifname=tap837.0,downscript=no -M xenfv -m 2040 -drive
> file=/mnt/sdd/image/suse.image,if=ide,index=0,media=disk,format=raw,cache=none
>
> errno 14 shows Bad Address. And I find QEMU_AIO_MISALIGNED flag bit is not
> set through debug.
>
> /*
> * If O_DIRECT is used the buffer needs to be aligned on a sector
> * boundary. Check if this is the case or tell the low-level
> * driver that it needs to copy the buffer.
> */
> if ((bs->open_flags & BDRV_O_NOCACHE)) {
> if (!bdrv_qiov_is_aligned(bs, qiov)) { //if the address is
> aligned-512, will no meet the conditions
> type |= QEMU_AIO_MISALIGNED;
> #ifdef CONFIG_LINUX_AIO
> } else if (s->use_aio) {
> return laio_submit(bs, s->aio_ctx, s->fd, sector_num, qiov,
> nb_sectors, cb, opaque, type);
> #endif
>
> Next process:
> static ssize_t handle_aiocb_rw(struct qemu_paiocb *aiocb)
> {
> ssize_t nbytes;
> char *buf;
>
> if (!(aiocb->aio_type & QEMU_AIO_MISALIGNED)) {
> /*
> * If there is just a single buffer, and it is properly aligned
> * we can just use plain pread/pwrite without any problems.
> */
> if (aiocb->aio_niov == 1)
> return handle_aiocb_rw_linear(aiocb, aiocb->aio_iov->iov_base);
> //this way, and reports errno 14 next
>
> Anyone have a good method to resolve this bug? Thanks!
I know that this is not the answer you are looking for but why do you
want to use O_DIRECT with IDE?
It should be perfectly safe to use write-back.
- [Qemu-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream, Gonglei (Arei), 2013/05/23
- Re: [Qemu-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream,
Stefano Stabellini <=
- Re: [Qemu-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream, Gonglei (Arei), 2013/05/23
- Re: [Qemu-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream, Stefan Hajnoczi, 2013/05/24
- Re: [Qemu-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream, Gonglei (Arei), 2013/05/25
- Re: [Qemu-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream, Stefan Hajnoczi, 2013/05/27
- Re: [Qemu-devel] [Xen-devel] use O_DIRECT to open disk images for IDE failed under xen-4.1.2 and qemu upstream, Konrad Rzeszutek Wilk, 2013/05/28