Message ID | 201006181530.o5IFUIZh002098@demeter.kernel.org |
---|---|
State | New, archived |
Headers | show |
Index: linux-git/fs/direct-io.c =================================================================== --- linux-git.orig/fs/direct-io.c 2010-05-07 15:42:22.855033403 -0700 +++ linux-git/fs/direct-io.c 2010-05-07 15:44:17.695007770 -0700 @@ -740,7 +740,8 @@ struct page *page; dio->start_zero_done = 1; - if (!dio->blkfactor || !buffer_new(&dio->map_bh)) + if (!dio->blkfactor || !buffer_new(&dio->map_bh) + || buffer_unwritten(&dio->map_bh)) return; dio_blocks_per_fs_block = 1 << dio->blkfactor;
https://bugzilla.kernel.org/show_bug.cgi?id=16165 --- Comment #12 from Eric Sandeen <sandeen@redhat.com> 2010-06-18 15:30:13 --- Can those who can reproduce this test this patch from mingming? When unaligned DIO writes, skip zero out the block if the buffer is marked unwritten. That means there is an asynconous direct IO (append or fill the hole) still pending. Signed-off-by: Mingming Cao <cmm@us.ibm.com> --- fs/direct-io.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)