aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memcontrol.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r--mm/memcontrol.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 7288e9d85ca7..59dd8c116372 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -41,6 +41,15 @@
41struct cgroup_subsys mem_cgroup_subsys __read_mostly; 41struct cgroup_subsys mem_cgroup_subsys __read_mostly;
42#define MEM_CGROUP_RECLAIM_RETRIES 5 42#define MEM_CGROUP_RECLAIM_RETRIES 5
43 43
44#ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP
45/* Turned on only when memory cgroup is enabled && really_do_swap_account = 0 */
46int do_swap_account __read_mostly;
47static int really_do_swap_account __initdata = 1; /* for remember boot option*/
48#else
49#define do_swap_account (0)
50#endif
51
52
44/* 53/*
45 * Statistics for memory cgroup. 54 * Statistics for memory cgroup.
46 */ 55 */
@@ -1404,6 +1413,18 @@ static void mem_cgroup_free(struct mem_cgroup *mem)
1404} 1413}
1405 1414
1406 1415
1416#ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP
1417static void __init enable_swap_cgroup(void)
1418{
1419 if (!mem_cgroup_subsys.disabled && really_do_swap_account)
1420 do_swap_account = 1;
1421}
1422#else
1423static void __init enable_swap_cgroup(void)
1424{
1425}
1426#endif
1427
1407static struct cgroup_subsys_state * 1428static struct cgroup_subsys_state *
1408mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont) 1429mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont)
1409{ 1430{
@@ -1419,6 +1440,9 @@ mem_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont)
1419 for_each_node_state(node, N_POSSIBLE) 1440 for_each_node_state(node, N_POSSIBLE)
1420 if (alloc_mem_cgroup_per_zone_info(mem, node)) 1441 if (alloc_mem_cgroup_per_zone_info(mem, node))
1421 goto free_out; 1442 goto free_out;
1443 /* root ? */
1444 if (cont->parent == NULL)
1445 enable_swap_cgroup();
1422 1446
1423 return &mem->css; 1447 return &mem->css;
1424free_out: 1448free_out:
@@ -1490,3 +1514,13 @@ struct cgroup_subsys mem_cgroup_subsys = {
1490 .attach = mem_cgroup_move_task, 1514 .attach = mem_cgroup_move_task,
1491 .early_init = 0, 1515 .early_init = 0,
1492}; 1516};
1517
1518#ifdef CONFIG_CGROUP_MEM_RES_CTLR_SWAP
1519
1520static int __init disable_swap_account(char *s)
1521{
1522 really_do_swap_account = 0;
1523 return 1;
1524}
1525__setup("noswapaccount", disable_swap_account);
1526#endif