diff options
Diffstat (limited to 'mm/filemap.c')
| -rw-r--r-- | mm/filemap.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index 606432f71b3a..8332c77b1bd1 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
| @@ -1181,8 +1181,6 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov, | |||
| 1181 | if (pos < size) { | 1181 | if (pos < size) { |
| 1182 | retval = generic_file_direct_IO(READ, iocb, | 1182 | retval = generic_file_direct_IO(READ, iocb, |
| 1183 | iov, pos, nr_segs); | 1183 | iov, pos, nr_segs); |
| 1184 | if (retval > 0 && !is_sync_kiocb(iocb)) | ||
| 1185 | retval = -EIOCBQUEUED; | ||
| 1186 | if (retval > 0) | 1184 | if (retval > 0) |
| 1187 | *ppos = pos + retval; | 1185 | *ppos = pos + retval; |
| 1188 | } | 1186 | } |
| @@ -2047,15 +2045,14 @@ generic_file_direct_write(struct kiocb *iocb, const struct iovec *iov, | |||
| 2047 | * Sync the fs metadata but not the minor inode changes and | 2045 | * Sync the fs metadata but not the minor inode changes and |
| 2048 | * of course not the data as we did direct DMA for the IO. | 2046 | * of course not the data as we did direct DMA for the IO. |
| 2049 | * i_mutex is held, which protects generic_osync_inode() from | 2047 | * i_mutex is held, which protects generic_osync_inode() from |
| 2050 | * livelocking. | 2048 | * livelocking. AIO O_DIRECT ops attempt to sync metadata here. |
| 2051 | */ | 2049 | */ |
| 2052 | if (written >= 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) { | 2050 | if ((written >= 0 || written == -EIOCBQUEUED) && |
| 2051 | ((file->f_flags & O_SYNC) || IS_SYNC(inode))) { | ||
| 2053 | int err = generic_osync_inode(inode, mapping, OSYNC_METADATA); | 2052 | int err = generic_osync_inode(inode, mapping, OSYNC_METADATA); |
| 2054 | if (err < 0) | 2053 | if (err < 0) |
| 2055 | written = err; | 2054 | written = err; |
| 2056 | } | 2055 | } |
| 2057 | if (written == count && !is_sync_kiocb(iocb)) | ||
| 2058 | written = -EIOCBQUEUED; | ||
| 2059 | return written; | 2056 | return written; |
| 2060 | } | 2057 | } |
| 2061 | EXPORT_SYMBOL(generic_file_direct_write); | 2058 | EXPORT_SYMBOL(generic_file_direct_write); |
