Commit f205b2fe62d321403525065a4cb31b6bff1bbe53
Committed by
Linus Torvalds
1 parent
5e9dace8d3
Exists in
master
and in
7 other branches
[PATCH] mm: slab less atomics
Atomic operation removal from slab Signed-off-by: Nick Piggin <npiggin@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Showing 2 changed files with 5 additions and 7 deletions Side-by-side Diff
include/linux/page-flags.h
... | ... | @@ -250,10 +250,8 @@ |
250 | 250 | #define __ClearPageActive(page) __clear_bit(PG_active, &(page)->flags) |
251 | 251 | |
252 | 252 | #define PageSlab(page) test_bit(PG_slab, &(page)->flags) |
253 | -#define SetPageSlab(page) set_bit(PG_slab, &(page)->flags) | |
254 | -#define ClearPageSlab(page) clear_bit(PG_slab, &(page)->flags) | |
255 | -#define TestClearPageSlab(page) test_and_clear_bit(PG_slab, &(page)->flags) | |
256 | -#define TestSetPageSlab(page) test_and_set_bit(PG_slab, &(page)->flags) | |
253 | +#define __SetPageSlab(page) __set_bit(PG_slab, &(page)->flags) | |
254 | +#define __ClearPageSlab(page) __clear_bit(PG_slab, &(page)->flags) | |
257 | 255 | |
258 | 256 | #ifdef CONFIG_HIGHMEM |
259 | 257 | #define PageHighMem(page) is_highmem(page_zone(page)) |
mm/slab.c
... | ... | @@ -1402,7 +1402,7 @@ |
1402 | 1402 | atomic_add(i, &slab_reclaim_pages); |
1403 | 1403 | add_page_state(nr_slab, i); |
1404 | 1404 | while (i--) { |
1405 | - SetPageSlab(page); | |
1405 | + __SetPageSlab(page); | |
1406 | 1406 | page++; |
1407 | 1407 | } |
1408 | 1408 | return addr; |
... | ... | @@ -1418,8 +1418,8 @@ |
1418 | 1418 | const unsigned long nr_freed = i; |
1419 | 1419 | |
1420 | 1420 | while (i--) { |
1421 | - if (!TestClearPageSlab(page)) | |
1422 | - BUG(); | |
1421 | + BUG_ON(!PageSlab(page)); | |
1422 | + __ClearPageSlab(page); | |
1423 | 1423 | page++; |
1424 | 1424 | } |
1425 | 1425 | sub_page_state(nr_slab, nr_freed); |