Re: [HELP]: about aio+dio

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

 



On Wed, Aug 20, 2014 at 04:05:01AM +0000, Ma, Jianpeng wrote:
> Hi all,
>    At present, I met a problem.
> Open(block, DIRECT_IO)
> Io_submit()--->write operation
> Close()
> Exit(0)
> 
> After exit(), we found the content of block changed. If we only use aio, the bug can't reproduce.
> 
> Q1: Is close() wait until all aio to complete? Is exit() to wait until aio to complete?

exit().

> Q2:Who may change the content? The program don't change.

buf=good
io_submit(buf)
buf=bad
io_getevents()

Could end up with bad on disk.

> Q3:My guess: only using aio, after io_submit, the content already copy to kernel from use-space. But for direct, kernel can't copy. 
> Later kernel do direct_io but the content changed.

I think your guess here is correct.

The program can't rely on the buffer in the iocb being copied during
submission.  It has to assume that the buffer can be referenced at any
point during the lifetime of the asynchronous io.  Any modificatoins to
the buffers after submission but before getting a completion event could
be seen by the async write and could end up on disk. 

If the program assumed that the buffer was always copied during
submission then it would work for buffered io today because it isn't
asynchronous, but it would break for O_DIRECT which often dmas directly
from the pages mapped at the iocb addresses during the async write.  And
it might break in the future if buffered io was ever made asynchronous.

- z
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux