On Wed, May 2, 2012 at 4:15 AM, KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxx> wrote: >> +suffices. However, if the user buffer is not page aligned and direct read > > One more thing. direct write also makes data corruption. Think > following scenario, In the light of all of the comments, can someone revise the man-pages patch that Jan sent? Thanks, Michael > 1) P1-T1 uses DIO write (and starting dma) > 2) P1-T2 call fork() and makes P2 > 3) P1-T3 write to the dio target page. and then, cow break occur and > original dio target > pages is now owned by P2. > 4) P2 write the dio target page. It now does NOT make cow break. and > now we break > dio target page data. > 5) DMA transfer write invalid data to disk. > > The detail is described in your refer URLs. > > >> +runs in parallel with a >> +.BR fork (2) >> +of the reader process, it may happen that the read data is split between >> +pages owned by the original process and its child. Thus effectively read >> +data is corrupted. >> .LP >> The >> .B O_DIRECT -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Author of "The Linux Programming Interface"; http://man7.org/tlpi/ -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html