提交 02a93208 编写于 作者: L Linus Torvalds

Merge branch 'for-2.6.22' of git://git.kernel.dk/data/git/linux-2.6-block

* 'for-2.6.22' of git://git.kernel.dk/data/git/linux-2.6-block:
  [PATCH] ll_rw_blk: fix missing bounce in blk_rq_map_kern()
  [PATCH] splice: always call into page_cache_readahead()
  [PATCH] splice(): fix interaction with readahead
...@@ -2558,6 +2558,7 @@ int blk_rq_map_kern(request_queue_t *q, struct request *rq, void *kbuf, ...@@ -2558,6 +2558,7 @@ int blk_rq_map_kern(request_queue_t *q, struct request *rq, void *kbuf,
bio->bi_rw |= (1 << BIO_RW); bio->bi_rw |= (1 << BIO_RW);
blk_rq_bio_prep(q, rq, bio); blk_rq_bio_prep(q, rq, bio);
blk_queue_bounce(q, &rq->bio);
rq->buffer = rq->data = NULL; rq->buffer = rq->data = NULL;
return 0; return 0;
} }
......
...@@ -289,12 +289,10 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, ...@@ -289,12 +289,10 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
nr_pages = PIPE_BUFFERS; nr_pages = PIPE_BUFFERS;
/* /*
* Initiate read-ahead on this page range. however, don't call into * Don't try to 2nd guess the read-ahead logic, call into
* read-ahead if this is a non-zero offset (we are likely doing small * page_cache_readahead() like the page cache reads would do.
* chunk splice and the page is already there) for a single page.
*/ */
if (!loff || nr_pages > 1) page_cache_readahead(mapping, &in->f_ra, in, index, nr_pages);
page_cache_readahead(mapping, &in->f_ra, in, index, nr_pages);
/* /*
* Now fill in the holes: * Now fill in the holes:
...@@ -378,10 +376,11 @@ __generic_file_splice_read(struct file *in, loff_t *ppos, ...@@ -378,10 +376,11 @@ __generic_file_splice_read(struct file *in, loff_t *ppos,
* If in nonblock mode then dont block on waiting * If in nonblock mode then dont block on waiting
* for an in-flight io page * for an in-flight io page
*/ */
if (flags & SPLICE_F_NONBLOCK) if (flags & SPLICE_F_NONBLOCK) {
break; if (TestSetPageLocked(page))
break;
lock_page(page); } else
lock_page(page);
/* /*
* page was truncated, stop here. if this isn't the * page was truncated, stop here. if this isn't the
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册