Re: BUG: aio/direct-io data corruption in 4.7

From: Christoph Hellwig
Date: Wed Sep 21 2016 - 10:15:44 EST


Hi Jonathan,

please keep linux-fsdevel on the Cc list for something like, and if
you already track down a commit the author of that commit.

> Description: "fs: simplify the generic_write_sync prototype"
> Committed: Apr 7, 2016
> Hash: e259221763a40403d5bb232209998e8c45804ab8
> Affects: 4.7-rc1 - master
>
> I have confirmed a fix for the AIO/Direct-IO failure condition but
> have not reviewed the rest of the changes associated with that commit.
> If you would like a small patch for direct-io.c, let me know.

On travel right now, but I suspect you want something like this fix?

diff --git a/fs/direct-io.c b/fs/direct-io.c
index 7c3ce73..891f71f 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -276,7 +276,7 @@ static ssize_t dio_complete(struct dio *dio, ssize_t ret, bool is_async)
dio->iocb->ki_pos += transferred;

if (dio->op == REQ_OP_WRITE)
- ret = generic_write_sync(dio->iocb, transferred);
+ ret = generic_write_sync(dio->iocb, ret);
dio->iocb->ki_complete(dio->iocb, ret, 0);
}