vfs: fix a bug when we do some buffered reads with append dio writes, again

When pread is given a ppos greater than isize, the original check will fail
and we can still get the stale data. This bug can be exposed by modifying the
test case in commit 104bbfa583a with the following changes:

                memset(rbuf, 'b', blksize);
                do {
-                        ret = pread(readfd, rbuf, blksize, i * blksize);
+                        ret = pread(readfd, rbuf, blksize, i * blksize + 10);
                } while (ret <= 0);

Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Merge pull request #54 from taoma-tm/read_fix

buffer read+dio write fix again