diff options
author | Andrew Morton <akpm@osdl.org> | 2006-01-06 03:11:09 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-06 11:33:26 -0500 |
commit | 7756b9e4e321c3c83c7aa5b9532d3e7fd7ddeb4a (patch) | |
tree | fe59fcd970e97e3878a743a5b476420501f99f00 /mm | |
parent | bbfbb7cec9dd7266534b2b4b9c8be2fa425bbfc9 (diff) |
[PATCH] kill last zone_reclaim() bits
Remove the last bits of Martin's ill-fated sys_set_zone_reclaim().
Cc: Martin Hicks <mort@wildopensource.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmscan.c | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index 795a050fe471..b2baca7645d7 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -74,9 +74,6 @@ struct scan_control { | |||
74 | 74 | ||
75 | int may_writepage; | 75 | int may_writepage; |
76 | 76 | ||
77 | /* Can pages be swapped as part of reclaim? */ | ||
78 | int may_swap; | ||
79 | |||
80 | /* This context's SWAP_CLUSTER_MAX. If freeing memory for | 77 | /* This context's SWAP_CLUSTER_MAX. If freeing memory for |
81 | * suspend, we effectively ignore SWAP_CLUSTER_MAX. | 78 | * suspend, we effectively ignore SWAP_CLUSTER_MAX. |
82 | * In this context, it doesn't matter that we scan the | 79 | * In this context, it doesn't matter that we scan the |
@@ -430,8 +427,6 @@ static int shrink_list(struct list_head *page_list, struct scan_control *sc) | |||
430 | * Try to allocate it some swap space here. | 427 | * Try to allocate it some swap space here. |
431 | */ | 428 | */ |
432 | if (PageAnon(page) && !PageSwapCache(page)) { | 429 | if (PageAnon(page) && !PageSwapCache(page)) { |
433 | if (!sc->may_swap) | ||
434 | goto keep_locked; | ||
435 | if (!add_to_swap(page)) | 430 | if (!add_to_swap(page)) |
436 | goto activate_locked; | 431 | goto activate_locked; |
437 | } | 432 | } |
@@ -952,7 +947,6 @@ int try_to_free_pages(struct zone **zones, gfp_t gfp_mask) | |||
952 | 947 | ||
953 | sc.gfp_mask = gfp_mask; | 948 | sc.gfp_mask = gfp_mask; |
954 | sc.may_writepage = 0; | 949 | sc.may_writepage = 0; |
955 | sc.may_swap = 1; | ||
956 | 950 | ||
957 | inc_page_state(allocstall); | 951 | inc_page_state(allocstall); |
958 | 952 | ||
@@ -1055,7 +1049,6 @@ loop_again: | |||
1055 | total_reclaimed = 0; | 1049 | total_reclaimed = 0; |
1056 | sc.gfp_mask = GFP_KERNEL; | 1050 | sc.gfp_mask = GFP_KERNEL; |
1057 | sc.may_writepage = 0; | 1051 | sc.may_writepage = 0; |
1058 | sc.may_swap = 1; | ||
1059 | sc.nr_mapped = read_page_state(nr_mapped); | 1052 | sc.nr_mapped = read_page_state(nr_mapped); |
1060 | 1053 | ||
1061 | inc_page_state(pageoutrun); | 1054 | inc_page_state(pageoutrun); |
@@ -1353,76 +1346,3 @@ static int __init kswapd_init(void) | |||
1353 | } | 1346 | } |
1354 | 1347 | ||
1355 | module_init(kswapd_init) | 1348 | module_init(kswapd_init) |
1356 | |||
1357 | |||
1358 | /* | ||
1359 | * Try to free up some pages from this zone through reclaim. | ||
1360 | */ | ||
1361 | int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order) | ||
1362 | { | ||
1363 | struct scan_control sc; | ||
1364 | int nr_pages = 1 << order; | ||
1365 | int total_reclaimed = 0; | ||
1366 | |||
1367 | /* The reclaim may sleep, so don't do it if sleep isn't allowed */ | ||
1368 | if (!(gfp_mask & __GFP_WAIT)) | ||
1369 | return 0; | ||
1370 | if (zone->all_unreclaimable) | ||
1371 | return 0; | ||
1372 | |||
1373 | sc.gfp_mask = gfp_mask; | ||
1374 | sc.may_writepage = 0; | ||
1375 | sc.may_swap = 0; | ||
1376 | sc.nr_mapped = read_page_state(nr_mapped); | ||
1377 | sc.nr_scanned = 0; | ||
1378 | sc.nr_reclaimed = 0; | ||
1379 | /* scan at the highest priority */ | ||
1380 | sc.priority = 0; | ||
1381 | disable_swap_token(); | ||
1382 | |||
1383 | if (nr_pages > SWAP_CLUSTER_MAX) | ||
1384 | sc.swap_cluster_max = nr_pages; | ||
1385 | else | ||
1386 | sc.swap_cluster_max = SWAP_CLUSTER_MAX; | ||
1387 | |||
1388 | /* Don't reclaim the zone if there are other reclaimers active */ | ||
1389 | if (atomic_read(&zone->reclaim_in_progress) > 0) | ||
1390 | goto out; | ||
1391 | |||
1392 | shrink_zone(zone, &sc); | ||
1393 | total_reclaimed = sc.nr_reclaimed; | ||
1394 | |||
1395 | out: | ||
1396 | return total_reclaimed; | ||
1397 | } | ||
1398 | |||
1399 | asmlinkage long sys_set_zone_reclaim(unsigned int node, unsigned int zone, | ||
1400 | unsigned int state) | ||
1401 | { | ||
1402 | struct zone *z; | ||
1403 | int i; | ||
1404 | |||
1405 | if (!capable(CAP_SYS_ADMIN)) | ||
1406 | return -EACCES; | ||
1407 | |||
1408 | if (node >= MAX_NUMNODES || !node_online(node)) | ||
1409 | return -EINVAL; | ||
1410 | |||
1411 | /* This will break if we ever add more zones */ | ||
1412 | if (!(zone & (1<<ZONE_DMA|1<<ZONE_NORMAL|1<<ZONE_HIGHMEM))) | ||
1413 | return -EINVAL; | ||
1414 | |||
1415 | for (i = 0; i < MAX_NR_ZONES; i++) { | ||
1416 | if (!(zone & 1<<i)) | ||
1417 | continue; | ||
1418 | |||
1419 | z = &NODE_DATA(node)->node_zones[i]; | ||
1420 | |||
1421 | if (state) | ||
1422 | z->reclaim_pages = 1; | ||
1423 | else | ||
1424 | z->reclaim_pages = 0; | ||
1425 | } | ||
1426 | |||
1427 | return 0; | ||
1428 | } | ||