summaryrefslogtreecommitdiffstats
path: root/mm/readahead.c
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2009-12-24 15:16:02 +0900
committerPaul Mundt <lethal@linux-sh.org>2009-12-24 15:16:02 +0900
commitf34548cb735b7a80bbbb0bdd09ad4c2173ba92d5 (patch)
treee53c9e39b3149221779c10595bc59fa02de4f45f /mm/readahead.c
parent76382b5bdb77c29ab430e1b82ef1c604c8dd113b (diff)
parent32b53076c31ce9159740b744d5eb5d9505312add (diff)
downloadkernel-crypto-f34548cb735b7a80bbbb0bdd09ad4c2173ba92d5.tar.gz
kernel-crypto-f34548cb735b7a80bbbb0bdd09ad4c2173ba92d5.tar.xz
kernel-crypto-f34548cb735b7a80bbbb0bdd09ad4c2173ba92d5.zip
Merge branch 'sh/g3-prep' into sh/for-2.6.33
Diffstat (limited to 'mm/readahead.c')
-rw-r--r--mm/readahead.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/mm/readahead.c b/mm/readahead.c
index aa1aa234523..033bc135a41 100644
--- a/mm/readahead.c
+++ b/mm/readahead.c
@@ -547,5 +547,17 @@ page_cache_async_readahead(struct address_space *mapping,
/* do read-ahead */
ondemand_readahead(mapping, ra, filp, true, offset, req_size);
+
+#ifdef CONFIG_BLOCK
+ /*
+ * Normally the current page is !uptodate and lock_page() will be
+ * immediately called to implicitly unplug the device. However this
+ * is not always true for RAID conifgurations, where data arrives
+ * not strictly in their submission order. In this case we need to
+ * explicitly kick off the IO.
+ */
+ if (PageUptodate(page))
+ blk_run_backing_dev(mapping->backing_dev_info, NULL);
+#endif
}
EXPORT_SYMBOL_GPL(page_cache_async_readahead);