Message ID | 20170523013441.49030-1-ebiggers3@gmail.com |
---|---|
State | Accepted, archived |
Headers | show |
On Mon 22-05-17 18:34:41, Eric Biggers wrote: > From: Eric Biggers <ebiggers@google.com> > > 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@google.com> Yeah. You can add: Reviewed-by: Jan Kara <jack@suse.cz> 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 >
On Tue, May 23, 2017 at 09:53:05AM +0200, Jan Kara wrote: > On Mon 22-05-17 18:34:41, Eric Biggers wrote: > > From: Eric Biggers <ebiggers@google.com> > > > > 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@google.com> > > Yeah. You can add: > > Reviewed-by: Jan Kara <jack@suse.cz> Thanks, applied. - Ted
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,