Commit f205b2fe62d321403525065a4cb31b6bff1bbe53

Authored by Nick Piggin
Committed by Linus Torvalds
1 parent 5e9dace8d3

[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))
... ... @@ -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);