| From ee21b9af3d0b0b3261daba2f669e7e9aeda1eaa2 Mon Sep 17 00:00:00 2001 |
| From: Lee Schermerhorn <Lee.Schermerhorn@hp.com> |
| Date: Fri, 3 Apr 2009 04:35:10 +0000 |
| Subject: mm: define a UNIQUE value for AS_UNEVICTABLE flag |
| |
| From: Lee Schermerhorn <Lee.Schermerhorn@hp.com> |
| |
| upstream commit: 9a896c9a48ac6704c0ce8ee081b836644d0afe40 |
| |
| A new "address_space flag"--AS_MM_ALL_LOCKS--was defined to use the next |
| available AS flag while the Unevictable LRU was under development. The |
| Unevictable LRU was using the same flag and "no one" noticed. Current |
| mainline, since 2.6.28, has same value for two symbolic flag names. |
| |
| So, define a unique flag value for AS_UNEVICTABLE--up close to the other |
| flags, [at the cost of an additional #ifdef] so we'll notice next time. |
| Note that #ifdef is not actually required, if we don't mind having the |
| unused flag value defined. |
| |
| Replace #defines with an enum. |
| |
| Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Chris Wright <chrisw@sous-sol.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| include/linux/pagemap.h | 12 ++++++++---- |
| 1 file changed, 8 insertions(+), 4 deletions(-) |
| |
| --- a/include/linux/pagemap.h |
| +++ b/include/linux/pagemap.h |
| @@ -18,9 +18,14 @@ |
| * Bits in mapping->flags. The lower __GFP_BITS_SHIFT bits are the page |
| * allocation mode flags. |
| */ |
| -#define AS_EIO (__GFP_BITS_SHIFT + 0) /* IO error on async write */ |
| -#define AS_ENOSPC (__GFP_BITS_SHIFT + 1) /* ENOSPC on async write */ |
| -#define AS_MM_ALL_LOCKS (__GFP_BITS_SHIFT + 2) /* under mm_take_all_locks() */ |
| +enum mapping_flags { |
| + AS_EIO = __GFP_BITS_SHIFT + 0, /* IO error on async write */ |
| + AS_ENOSPC = __GFP_BITS_SHIFT + 1, /* ENOSPC on async write */ |
| + AS_MM_ALL_LOCKS = __GFP_BITS_SHIFT + 2, /* under mm_take_all_locks() */ |
| +#ifdef CONFIG_UNEVICTABLE_LRU |
| + AS_UNEVICTABLE = __GFP_BITS_SHIFT + 3, /* e.g., ramdisk, SHM_LOCK */ |
| +#endif |
| +}; |
| |
| static inline void mapping_set_error(struct address_space *mapping, int error) |
| { |
| @@ -33,7 +38,6 @@ static inline void mapping_set_error(str |
| } |
| |
| #ifdef CONFIG_UNEVICTABLE_LRU |
| -#define AS_UNEVICTABLE (__GFP_BITS_SHIFT + 2) /* e.g., ramdisk, SHM_LOCK */ |
| |
| static inline void mapping_set_unevictable(struct address_space *mapping) |
| { |