From 0bb8a456dd447090b5e9043b6604e240f93da15d Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Mon, 8 Jun 2009 17:01:04 +0000 Subject: [PATCH] readahead patches added. See http://sourceforge.net/mailarchive/forum.php?thread_name=a0272b440906030714g67eabc5k8f847fb1e538cc62%40mail.gma il.com&forum_name=scst-devel for more details. git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@896 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- scst/README | 5 +++++ scst/kernel/readahead-2.6.25.patch | 13 +++++++++++++ scst/kernel/readahead-2.6.26.patch | 13 +++++++++++++ scst/kernel/readahead-2.6.27.patch | 13 +++++++++++++ scst/kernel/readahead-2.6.28.patch | 13 +++++++++++++ scst/kernel/readahead-2.6.29.patch | 13 +++++++++++++ 6 files changed, 70 insertions(+) create mode 100644 scst/kernel/readahead-2.6.25.patch create mode 100644 scst/kernel/readahead-2.6.26.patch create mode 100644 scst/kernel/readahead-2.6.27.patch create mode 100644 scst/kernel/readahead-2.6.28.patch create mode 100644 scst/kernel/readahead-2.6.29.patch diff --git a/scst/README b/scst/README index 8fc5ba960..e8b49abf9 100644 --- a/scst/README +++ b/scst/README @@ -79,6 +79,11 @@ using a pool of IO threads. It is considerably better for performance IO context. This patch allows that. If you don't apply this patch, you will loose this performance benefit. +3. readahead-2.6.X.patch. This patch fixes problem in Linux readahead +subsystem and greatly improves performance for software RAIDs. See +http://sourceforge.net/mailarchive/forum.php?thread_name=a0272b440906030714g67eabc5k8f847fb1e538cc62%40mail.gmail.com&forum_name=scst-devel +thread for more details. + Then, to compile SCST type 'make scst'. It will build SCST itself and its device handlers. To install them type 'make scst_install'. The driver modules will be installed in '/lib/modules/`you_kernel_version`/extra'. diff --git a/scst/kernel/readahead-2.6.25.patch b/scst/kernel/readahead-2.6.25.patch new file mode 100644 index 000000000..87ab0bfac --- /dev/null +++ b/scst/kernel/readahead-2.6.25.patch @@ -0,0 +1,13 @@ +diff --git a/mm/readahead.c b/mm/readahead.c +index 133b6d5..fd3df66 100644 +--- a/mm/readahead.c ++++ b/mm/readahead.c +@@ -473,5 +473,8 @@ page_cache_async_readahead(struct address_space *mapping, + + /* do read-ahead */ + ondemand_readahead(mapping, ra, filp, true, offset, req_size); ++ ++ if (PageUptodate(page)) ++ blk_run_backing_dev(mapping->backing_dev_info, NULL); + } + EXPORT_SYMBOL_GPL(page_cache_async_readahead); diff --git a/scst/kernel/readahead-2.6.26.patch b/scst/kernel/readahead-2.6.26.patch new file mode 100644 index 000000000..c62905a3f --- /dev/null +++ b/scst/kernel/readahead-2.6.26.patch @@ -0,0 +1,13 @@ +diff --git a/mm/readahead.c b/mm/readahead.c +index 133b6d5..fd3df66 100644 +--- a/mm/readahead.c ++++ b/mm/readahead.c +@@ -479,5 +479,8 @@ page_cache_async_readahead(struct address_space *mapping, + + /* do read-ahead */ + ondemand_readahead(mapping, ra, filp, true, offset, req_size); ++ ++ if (PageUptodate(page)) ++ blk_run_backing_dev(mapping->backing_dev_info, NULL); + } + EXPORT_SYMBOL_GPL(page_cache_async_readahead); diff --git a/scst/kernel/readahead-2.6.27.patch b/scst/kernel/readahead-2.6.27.patch new file mode 100644 index 000000000..c62905a3f --- /dev/null +++ b/scst/kernel/readahead-2.6.27.patch @@ -0,0 +1,13 @@ +diff --git a/mm/readahead.c b/mm/readahead.c +index 133b6d5..fd3df66 100644 +--- a/mm/readahead.c ++++ b/mm/readahead.c +@@ -479,5 +479,8 @@ page_cache_async_readahead(struct address_space *mapping, + + /* do read-ahead */ + ondemand_readahead(mapping, ra, filp, true, offset, req_size); ++ ++ if (PageUptodate(page)) ++ blk_run_backing_dev(mapping->backing_dev_info, NULL); + } + EXPORT_SYMBOL_GPL(page_cache_async_readahead); diff --git a/scst/kernel/readahead-2.6.28.patch b/scst/kernel/readahead-2.6.28.patch new file mode 100644 index 000000000..c62905a3f --- /dev/null +++ b/scst/kernel/readahead-2.6.28.patch @@ -0,0 +1,13 @@ +diff --git a/mm/readahead.c b/mm/readahead.c +index 133b6d5..fd3df66 100644 +--- a/mm/readahead.c ++++ b/mm/readahead.c +@@ -479,5 +479,8 @@ page_cache_async_readahead(struct address_space *mapping, + + /* do read-ahead */ + ondemand_readahead(mapping, ra, filp, true, offset, req_size); ++ ++ if (PageUptodate(page)) ++ blk_run_backing_dev(mapping->backing_dev_info, NULL); + } + EXPORT_SYMBOL_GPL(page_cache_async_readahead); diff --git a/scst/kernel/readahead-2.6.29.patch b/scst/kernel/readahead-2.6.29.patch new file mode 100644 index 000000000..c62905a3f --- /dev/null +++ b/scst/kernel/readahead-2.6.29.patch @@ -0,0 +1,13 @@ +diff --git a/mm/readahead.c b/mm/readahead.c +index 133b6d5..fd3df66 100644 +--- a/mm/readahead.c ++++ b/mm/readahead.c +@@ -479,5 +479,8 @@ page_cache_async_readahead(struct address_space *mapping, + + /* do read-ahead */ + ondemand_readahead(mapping, ra, filp, true, offset, req_size); ++ ++ if (PageUptodate(page)) ++ blk_run_backing_dev(mapping->backing_dev_info, NULL); + } + EXPORT_SYMBOL_GPL(page_cache_async_readahead);