generic: test read around EOF
authorZorro Lang <zlang@redhat.com>
Thu, 3 Aug 2017 14:22:25 +0000 (22:22 +0800)
committerEryu Guan <eguan@redhat.com>
Tue, 15 Aug 2017 06:37:59 +0000 (14:37 +0800)
commit4939477f3feec0428e2a40c51a74bc6badc8d85e
tree7cea7f97cae9e96ae296385bd58dc48b08dcf2b9
parent101f0c34ef68e500167cf11ae244a4b0517cf321
generic: test read around EOF

As posix standard, if the file offset is at or past the end of file,
no bytes are read, and read() returns zero. There was a bug, when
DIO read offset is just past the EOF a little, but in the same block
with EOF, read returns different negative values.

Kernel commit 74cedf9b6c60 ("direct-io: Fix negative return from dio
read beyond eof") and commit 2d4594acbf6d ("fix the regression from
"direct-io: Fix negative return from dio read beyond eof"") fixed
the bug.

This case reads from range within EOF, past EOF and at EOF, to make
sure the return value as expected, especially read from past/at EOF
returns 0.

[eguan: update commit log and comments about information of the
specific bug, adjust read_test param order (offset, count, ret) and
test description]

Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
tests/generic/450 [new file with mode: 0755]
tests/generic/450.out [new file with mode: 0644]
tests/generic/group