@@ -2222,14 +2222,14 @@ EXPORT_SYMBOL(generic_file_buffered_write);
22222222 * avoid syncing under i_mutex.
22232223 */
22242224ssize_t __generic_file_aio_write (struct kiocb * iocb , const struct iovec * iov ,
2225- unsigned long nr_segs , loff_t * ppos )
2225+ unsigned long nr_segs )
22262226{
22272227 struct file * file = iocb -> ki_filp ;
22282228 struct address_space * mapping = file -> f_mapping ;
22292229 size_t ocount ; /* original count */
22302230 size_t count ; /* after file limit checks */
22312231 struct inode * inode = mapping -> host ;
2232- loff_t pos ;
2232+ loff_t pos = iocb -> ki_pos ;
22332233 ssize_t written ;
22342234 ssize_t err ;
22352235
@@ -2239,7 +2239,6 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
22392239 return err ;
22402240
22412241 count = ocount ;
2242- pos = * ppos ;
22432242
22442243 /* We can write back this queue in page reclaim */
22452244 current -> backing_dev_info = mapping -> backing_dev_info ;
@@ -2266,7 +2265,7 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
22662265 ssize_t written_buffered ;
22672266
22682267 written = generic_file_direct_write (iocb , iov , & nr_segs , pos ,
2269- ppos , count , ocount );
2268+ & iocb -> ki_pos , count , ocount );
22702269 if (written < 0 || written == count )
22712270 goto out ;
22722271 /*
@@ -2276,7 +2275,7 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
22762275 pos += written ;
22772276 count -= written ;
22782277 written_buffered = generic_file_buffered_write (iocb , iov ,
2279- nr_segs , pos , ppos , count ,
2278+ nr_segs , pos , & iocb -> ki_pos , count ,
22802279 written );
22812280 /*
22822281 * If generic_file_buffered_write() retuned a synchronous error
@@ -2310,7 +2309,7 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
23102309 }
23112310 } else {
23122311 written = generic_file_buffered_write (iocb , iov , nr_segs ,
2313- pos , ppos , count , written );
2312+ pos , & iocb -> ki_pos , count , written );
23142313 }
23152314out :
23162315 current -> backing_dev_info = NULL ;
@@ -2339,7 +2338,7 @@ ssize_t generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
23392338 BUG_ON (iocb -> ki_pos != pos );
23402339
23412340 mutex_lock (& inode -> i_mutex );
2342- ret = __generic_file_aio_write (iocb , iov , nr_segs , & iocb -> ki_pos );
2341+ ret = __generic_file_aio_write (iocb , iov , nr_segs );
23432342 mutex_unlock (& inode -> i_mutex );
23442343
23452344 if (ret > 0 ) {
0 commit comments