|
@@ -1840,15 +1840,16 @@ generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
|
|
ssize_t retval = 0;
|
|
ssize_t retval = 0;
|
|
loff_t *ppos = &iocb->ki_pos;
|
|
loff_t *ppos = &iocb->ki_pos;
|
|
loff_t pos = *ppos;
|
|
loff_t pos = *ppos;
|
|
|
|
+ size_t count = iov_iter_count(iter);
|
|
|
|
+
|
|
|
|
+ if (!count)
|
|
|
|
+ goto out; /* skip atime */
|
|
|
|
|
|
if (iocb->ki_flags & IOCB_DIRECT) {
|
|
if (iocb->ki_flags & IOCB_DIRECT) {
|
|
struct address_space *mapping = file->f_mapping;
|
|
struct address_space *mapping = file->f_mapping;
|
|
struct inode *inode = mapping->host;
|
|
struct inode *inode = mapping->host;
|
|
- size_t count = iov_iter_count(iter);
|
|
|
|
loff_t size;
|
|
loff_t size;
|
|
|
|
|
|
- if (!count)
|
|
|
|
- goto out; /* skip atime */
|
|
|
|
size = i_size_read(inode);
|
|
size = i_size_read(inode);
|
|
retval = filemap_write_and_wait_range(mapping, pos,
|
|
retval = filemap_write_and_wait_range(mapping, pos,
|
|
pos + count - 1);
|
|
pos + count - 1);
|