diff options
Diffstat (limited to 'mm/filemap.c')
| -rw-r--r-- | mm/filemap.c | 8 | 
1 files changed, 4 insertions, 4 deletions
| diff --git a/mm/filemap.c b/mm/filemap.c index 97f49ed35bd2..b66275757c28 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -1400,15 +1400,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,  	unsigned long seg = 0;  	size_t count;  	loff_t *ppos = &iocb->ki_pos; -	struct blk_plug plug;  	count = 0;  	retval = generic_segment_checks(iov, &nr_segs, &count, VERIFY_WRITE);  	if (retval)  		return retval; -	blk_start_plug(&plug); -  	/* coalesce the iovecs and go direct-to-BIO for O_DIRECT */  	if (filp->f_flags & O_DIRECT) {  		loff_t size; @@ -1424,8 +1421,12 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,  			retval = filemap_write_and_wait_range(mapping, pos,  					pos + iov_length(iov, nr_segs) - 1);  			if (!retval) { +				struct blk_plug plug; + +				blk_start_plug(&plug);  				retval = mapping->a_ops->direct_IO(READ, iocb,  							iov, pos, nr_segs); +				blk_finish_plug(&plug);  			}  			if (retval > 0) {  				*ppos = pos + retval; @@ -1481,7 +1482,6 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov,  			break;  	}  out: -	blk_finish_plug(&plug);  	return retval;  }  EXPORT_SYMBOL(generic_file_aio_read); | 
