|
@@ -2240,7 +2240,6 @@ generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov,
|
|
|
size_t count, ssize_t written)
|
|
|
{
|
|
|
struct file *file = iocb->ki_filp;
|
|
|
- struct address_space *mapping = file->f_mapping;
|
|
|
ssize_t status;
|
|
|
struct iov_iter i;
|
|
|
|
|
@@ -2252,15 +2251,6 @@ generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov,
|
|
|
*ppos = pos + status;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * If we get here for O_DIRECT writes then we must have fallen through
|
|
|
- * to buffered writes (block instantiation inside i_size). So we sync
|
|
|
- * the file data here, to try to honour O_DIRECT expectations.
|
|
|
- */
|
|
|
- if (unlikely(file->f_flags & O_DIRECT) && written)
|
|
|
- status = filemap_write_and_wait_range(mapping,
|
|
|
- pos, pos + written - 1);
|
|
|
-
|
|
|
return written ? written : status;
|
|
|
}
|
|
|
EXPORT_SYMBOL(generic_file_buffered_write);
|
|
@@ -2359,10 +2349,7 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
|
|
|
* semantics.
|
|
|
*/
|
|
|
endbyte = pos + written_buffered - written - 1;
|
|
|
- err = do_sync_mapping_range(file->f_mapping, pos, endbyte,
|
|
|
- SYNC_FILE_RANGE_WAIT_BEFORE|
|
|
|
- SYNC_FILE_RANGE_WRITE|
|
|
|
- SYNC_FILE_RANGE_WAIT_AFTER);
|
|
|
+ err = filemap_write_and_wait_range(file->f_mapping, pos, endbyte);
|
|
|
if (err == 0) {
|
|
|
written = written_buffered;
|
|
|
invalidate_mapping_pages(mapping,
|