Hi Avi, Avi Kivity <avi@xxxxxxxxxxxx> writes: > Due to a bug in my program, I initiated a read beyond > eof. Specifically, the file size is 13002 bytes and the read offset is > 13312 (0x3400). > > I would expect such a read to return 0 bytes read, but io_getevents > returns -310, which is suspiciously equal to (13002 - 13312). > > I attach a reproducer. > > 4.2.5-201.fc22.x86_64 > > Are my expectations incorrect, or is this a bug in aio or xfs? Your expectations are correct. The bug was introduced by commit 9fe55eea7e4b4 (Fix race when checking i_size on direct i/o read). I've CC'd the patch author and linux-fsdevel. I'm not sure what the right fix is, given that the size checks were removed from the vfs to fix some race condition. Unfortunately, the commit message doesn't really do a good job of explaining the race. In order to save others time, here is a good explanation of the problem that commit is meant to fix, along with a reproducer: http://marc.info/?l=linux-fsdevel&m=138641356614458&w=2 Thanks for the great bug report, and sorry I have no solution to proffer. Cheers, Jeff -- 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