diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 77b8a742866f86c3d6b97ba2129e87d75a4868e6..9c27adf4ac7249f48bf548621899006ed152a72f 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -2381,9 +2381,12 @@ static ssize_t ocfs2_file_aio_write(struct kiocb *iocb, goto out_dio; } } else { + struct iov_iter from; + iov_iter_init(&from, iov, nr_segs, count, 0); current->backing_dev_info = file->f_mapping->backing_dev_info; - written = generic_file_buffered_write(iocb, iov, nr_segs, *ppos, - count, 0); + written = generic_perform_write(file, &from, *ppos); + if (likely(written >= 0)) + iocb->ki_pos = *ppos + written; current->backing_dev_info = NULL; }