| From stable-bounces@linux.kernel.org Thu Jul 19 02:21:38 2007 |
| From: Fengguang Wu <wfg@mail.ustc.edu.cn> |
| Date: Thu, 19 Jul 2007 01:47:58 -0700 |
| Subject: readahead: MIN_RA_PAGES/MAX_RA_PAGES macros |
| To: torvalds@linux-foundation.org |
| Cc: slpratt@austin.ibm.com, rusty@rustcorp.com.au, linuxram@us.ibm.com, wfg@mail.ustc.edu.cn, akpm@linux-foundation.org, stable@kernel.org |
| Message-ID: <200707190847.l6J8lw9h023020@imap1.linux-foundation.org> |
| |
| |
| From: Fengguang Wu <wfg@mail.ustc.edu.cn> |
| |
| Define two convenient macros for read-ahead: |
| - MAX_RA_PAGES: rounded down counterpart of VM_MAX_READAHEAD |
| - MIN_RA_PAGES: rounded _up_ counterpart of VM_MIN_READAHEAD |
| |
| Note that the rounded up MIN_RA_PAGES will work flawlessly with _large_ |
| page sizes like 64k. |
| |
| Signed-off-by: Fengguang Wu <wfg@mail.ustc.edu.cn> |
| Cc: Steven Pratt <slpratt@austin.ibm.com> |
| Cc: Ram Pai <linuxram@us.ibm.com> |
| Cc: Rusty Russell <rusty@rustcorp.com.au> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| mm/readahead.c | 12 ++++++++++-- |
| 1 file changed, 10 insertions(+), 2 deletions(-) |
| |
| --- a/mm/readahead.c |
| +++ b/mm/readahead.c |
| @@ -21,8 +21,16 @@ void default_unplug_io_fn(struct backing |
| } |
| EXPORT_SYMBOL(default_unplug_io_fn); |
| |
| +/* |
| + * Convienent macros for min/max read-ahead pages. |
| + * Note that MAX_RA_PAGES is rounded down, while MIN_RA_PAGES is rounded up. |
| + * The latter is necessary for systems with large page size(i.e. 64k). |
| + */ |
| +#define MAX_RA_PAGES (VM_MAX_READAHEAD*1024 / PAGE_CACHE_SIZE) |
| +#define MIN_RA_PAGES DIV_ROUND_UP(VM_MIN_READAHEAD*1024, PAGE_CACHE_SIZE) |
| + |
| struct backing_dev_info default_backing_dev_info = { |
| - .ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE, |
| + .ra_pages = MAX_RA_PAGES, |
| .state = 0, |
| .capabilities = BDI_CAP_MAP_COPY, |
| .unplug_io_fn = default_unplug_io_fn, |
| @@ -51,7 +59,7 @@ static inline unsigned long get_max_read |
| |
| static inline unsigned long get_min_readahead(struct file_ra_state *ra) |
| { |
| - return (VM_MIN_READAHEAD * 1024) / PAGE_CACHE_SIZE; |
| + return MIN_RA_PAGES; |
| } |
| |
| static inline void reset_ahead_window(struct file_ra_state *ra) |