On Mon 22-05-17 18:34:41, Eric Biggers wrote: > From: Eric Biggers <ebiggers@xxxxxxxxxx> > > The 'lend' argument of filemap_write_and_wait_range() is inclusive, so > we need to subtract 1 from pos + count. > > Note that 'count' is guaranteed to be nonzero since > ext4_file_read_iter() returns early when given a 0 count. > > Fixes: 16c54688592c ("ext4: Allow parallel DIO reads") > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx> Yeah. You can add: Reviewed-by: Jan Kara <jack@xxxxxxx> Honza > --- > fs/ext4/inode.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 7c6e715b4d2e..3080ea82dd6d 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -3710,7 +3710,7 @@ static ssize_t ext4_direct_IO_read(struct kiocb *iocb, struct iov_iter *iter) > */ > inode_lock_shared(inode); > ret = filemap_write_and_wait_range(mapping, iocb->ki_pos, > - iocb->ki_pos + count); > + iocb->ki_pos + count - 1); > if (ret) > goto out_unlock; > ret = __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, > -- > 2.13.0.219.gdb65acc882-goog > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR