diff options
author | David Rientjes <rientjes@google.com> | 2007-10-17 02:25:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-17 11:42:45 -0400 |
commit | e815af95f94914993bbad279c71cf5fef9f4eaac (patch) | |
tree | 492e0d3e8d3303f37cf9fb0beecf952a1c828c53 /mm/page_alloc.c | |
parent | 70e24bdf6d2fead14631e72a07fba012400c521e (diff) |
oom: change all_unreclaimable zone member to flags
Convert the int all_unreclaimable member of struct zone to unsigned long
flags. This can now be used to specify several different zone flags such as
all_unreclaimable and reclaim_in_progress, which can now be removed and
converted to a per-zone flag.
Flags are set and cleared as follows:
zone_set_flag(struct zone *zone, zone_flags_t flag)
zone_clear_flag(struct zone *zone, zone_flags_t flag)
Defines the first zone flags, ZONE_ALL_UNRECLAIMABLE and ZONE_RECLAIM_LOCKED,
which have the same semantics as the old zone->all_unreclaimable and
zone->reclaim_in_progress, respectively. Also converts all current users that
set or clear either flag to use the new interface.
Helper functions are defined to test the flags:
int zone_is_all_unreclaimable(const struct zone *zone)
int zone_is_reclaim_locked(const struct zone *zone)
All flag operators are of the atomic variety because there are currently
readers that are implemented that do not take zone->lock.
[akpm@linux-foundation.org: add needed include]
Cc: Andrea Arcangeli <andrea@suse.de>
Acked-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 0e3a05fd4734..fd2df29cc645 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -490,7 +490,7 @@ static void free_pages_bulk(struct zone *zone, int count, | |||
490 | struct list_head *list, int order) | 490 | struct list_head *list, int order) |
491 | { | 491 | { |
492 | spin_lock(&zone->lock); | 492 | spin_lock(&zone->lock); |
493 | zone->all_unreclaimable = 0; | 493 | zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE); |
494 | zone->pages_scanned = 0; | 494 | zone->pages_scanned = 0; |
495 | while (count--) { | 495 | while (count--) { |
496 | struct page *page; | 496 | struct page *page; |
@@ -507,7 +507,7 @@ static void free_pages_bulk(struct zone *zone, int count, | |||
507 | static void free_one_page(struct zone *zone, struct page *page, int order) | 507 | static void free_one_page(struct zone *zone, struct page *page, int order) |
508 | { | 508 | { |
509 | spin_lock(&zone->lock); | 509 | spin_lock(&zone->lock); |
510 | zone->all_unreclaimable = 0; | 510 | zone_clear_flag(zone, ZONE_ALL_UNRECLAIMABLE); |
511 | zone->pages_scanned = 0; | 511 | zone->pages_scanned = 0; |
512 | __free_one_page(page, zone, order); | 512 | __free_one_page(page, zone, order); |
513 | spin_unlock(&zone->lock); | 513 | spin_unlock(&zone->lock); |
@@ -1851,7 +1851,7 @@ void show_free_areas(void) | |||
1851 | K(zone_page_state(zone, NR_INACTIVE)), | 1851 | K(zone_page_state(zone, NR_INACTIVE)), |
1852 | K(zone->present_pages), | 1852 | K(zone->present_pages), |
1853 | zone->pages_scanned, | 1853 | zone->pages_scanned, |
1854 | (zone->all_unreclaimable ? "yes" : "no") | 1854 | (zone_is_all_unreclaimable(zone) ? "yes" : "no") |
1855 | ); | 1855 | ); |
1856 | printk("lowmem_reserve[]:"); | 1856 | printk("lowmem_reserve[]:"); |
1857 | for (i = 0; i < MAX_NR_ZONES; i++) | 1857 | for (i = 0; i < MAX_NR_ZONES; i++) |
@@ -3372,7 +3372,7 @@ static void __meminit free_area_init_core(struct pglist_data *pgdat, | |||
3372 | zone->nr_scan_active = 0; | 3372 | zone->nr_scan_active = 0; |
3373 | zone->nr_scan_inactive = 0; | 3373 | zone->nr_scan_inactive = 0; |
3374 | zap_zone_vm_stats(zone); | 3374 | zap_zone_vm_stats(zone); |
3375 | atomic_set(&zone->reclaim_in_progress, 0); | 3375 | zone->flags = 0; |
3376 | if (!size) | 3376 | if (!size) |
3377 | continue; | 3377 | continue; |
3378 | 3378 | ||