memcg: reparent list_lrus and free kmemcg_id on css offline
[sfrench/cifs-2.6.git] / mm / memcontrol.c
1 /* memcontrol.c - Memory Controller
2  *
3  * Copyright IBM Corporation, 2007
4  * Author Balbir Singh <balbir@linux.vnet.ibm.com>
5  *
6  * Copyright 2007 OpenVZ SWsoft Inc
7  * Author: Pavel Emelianov <xemul@openvz.org>
8  *
9  * Memory thresholds
10  * Copyright (C) 2009 Nokia Corporation
11  * Author: Kirill A. Shutemov
12  *
13  * Kernel Memory Controller
14  * Copyright (C) 2012 Parallels Inc. and Google Inc.
15  * Authors: Glauber Costa and Suleiman Souhlal
16  *
17  * This program is free software; you can redistribute it and/or modify
18  * it under the terms of the GNU General Public License as published by
19  * the Free Software Foundation; either version 2 of the License, or
20  * (at your option) any later version.
21  *
22  * This program is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
25  * GNU General Public License for more details.
26  */
27
28 #include <linux/page_counter.h>
29 #include <linux/memcontrol.h>
30 #include <linux/cgroup.h>
31 #include <linux/mm.h>
32 #include <linux/hugetlb.h>
33 #include <linux/pagemap.h>
34 #include <linux/smp.h>
35 #include <linux/page-flags.h>
36 #include <linux/backing-dev.h>
37 #include <linux/bit_spinlock.h>
38 #include <linux/rcupdate.h>
39 #include <linux/limits.h>
40 #include <linux/export.h>
41 #include <linux/mutex.h>
42 #include <linux/rbtree.h>
43 #include <linux/slab.h>
44 #include <linux/swap.h>
45 #include <linux/swapops.h>
46 #include <linux/spinlock.h>
47 #include <linux/eventfd.h>
48 #include <linux/poll.h>
49 #include <linux/sort.h>
50 #include <linux/fs.h>
51 #include <linux/seq_file.h>
52 #include <linux/vmpressure.h>
53 #include <linux/mm_inline.h>
54 #include <linux/swap_cgroup.h>
55 #include <linux/cpu.h>
56 #include <linux/oom.h>
57 #include <linux/lockdep.h>
58 #include <linux/file.h>
59 #include "internal.h"
60 #include <net/sock.h>
61 #include <net/ip.h>
62 #include <net/tcp_memcontrol.h>
63 #include "slab.h"
64
65 #include <asm/uaccess.h>
66
67 #include <trace/events/vmscan.h>
68
69 struct cgroup_subsys memory_cgrp_subsys __read_mostly;
70 EXPORT_SYMBOL(memory_cgrp_subsys);
71
72 #define MEM_CGROUP_RECLAIM_RETRIES      5
73 static struct mem_cgroup *root_mem_cgroup __read_mostly;
74
75 /* Whether the swap controller is active */
76 #ifdef CONFIG_MEMCG_SWAP
77 int do_swap_account __read_mostly;
78 #else
79 #define do_swap_account         0
80 #endif
81
82 static const char * const mem_cgroup_stat_names[] = {
83         "cache",
84         "rss",
85         "rss_huge",
86         "mapped_file",
87         "writeback",
88         "swap",
89 };
90
91 static const char * const mem_cgroup_events_names[] = {
92         "pgpgin",
93         "pgpgout",
94         "pgfault",
95         "pgmajfault",
96 };
97
98 static const char * const mem_cgroup_lru_names[] = {
99         "inactive_anon",
100         "active_anon",
101         "inactive_file",
102         "active_file",
103         "unevictable",
104 };
105
106 /*
107  * Per memcg event counter is incremented at every pagein/pageout. With THP,
108  * it will be incremated by the number of pages. This counter is used for
109  * for trigger some periodic events. This is straightforward and better
110  * than using jiffies etc. to handle periodic memcg event.
111  */
112 enum mem_cgroup_events_target {
113         MEM_CGROUP_TARGET_THRESH,
114         MEM_CGROUP_TARGET_SOFTLIMIT,
115         MEM_CGROUP_TARGET_NUMAINFO,
116         MEM_CGROUP_NTARGETS,
117 };
118 #define THRESHOLDS_EVENTS_TARGET 128
119 #define SOFTLIMIT_EVENTS_TARGET 1024
120 #define NUMAINFO_EVENTS_TARGET  1024
121
122 struct mem_cgroup_stat_cpu {
123         long count[MEM_CGROUP_STAT_NSTATS];
124         unsigned long events[MEMCG_NR_EVENTS];
125         unsigned long nr_page_events;
126         unsigned long targets[MEM_CGROUP_NTARGETS];
127 };
128
129 struct reclaim_iter {
130         struct mem_cgroup *position;
131         /* scan generation, increased every round-trip */
132         unsigned int generation;
133 };
134
135 /*
136  * per-zone information in memory controller.
137  */
138 struct mem_cgroup_per_zone {
139         struct lruvec           lruvec;
140         unsigned long           lru_size[NR_LRU_LISTS];
141
142         struct reclaim_iter     iter[DEF_PRIORITY + 1];
143
144         struct rb_node          tree_node;      /* RB tree node */
145         unsigned long           usage_in_excess;/* Set to the value by which */
146                                                 /* the soft limit is exceeded*/
147         bool                    on_tree;
148         struct mem_cgroup       *memcg;         /* Back pointer, we cannot */
149                                                 /* use container_of        */
150 };
151
152 struct mem_cgroup_per_node {
153         struct mem_cgroup_per_zone zoneinfo[MAX_NR_ZONES];
154 };
155
156 /*
157  * Cgroups above their limits are maintained in a RB-Tree, independent of
158  * their hierarchy representation
159  */
160
161 struct mem_cgroup_tree_per_zone {
162         struct rb_root rb_root;
163         spinlock_t lock;
164 };
165
166 struct mem_cgroup_tree_per_node {
167         struct mem_cgroup_tree_per_zone rb_tree_per_zone[MAX_NR_ZONES];
168 };
169
170 struct mem_cgroup_tree {
171         struct mem_cgroup_tree_per_node *rb_tree_per_node[MAX_NUMNODES];
172 };
173
174 static struct mem_cgroup_tree soft_limit_tree __read_mostly;
175
176 struct mem_cgroup_threshold {
177         struct eventfd_ctx *eventfd;
178         unsigned long threshold;
179 };
180
181 /* For threshold */
182 struct mem_cgroup_threshold_ary {
183         /* An array index points to threshold just below or equal to usage. */
184         int current_threshold;
185         /* Size of entries[] */
186         unsigned int size;
187         /* Array of thresholds */
188         struct mem_cgroup_threshold entries[0];
189 };
190
191 struct mem_cgroup_thresholds {
192         /* Primary thresholds array */
193         struct mem_cgroup_threshold_ary *primary;
194         /*
195          * Spare threshold array.
196          * This is needed to make mem_cgroup_unregister_event() "never fail".
197          * It must be able to store at least primary->size - 1 entries.
198          */
199         struct mem_cgroup_threshold_ary *spare;
200 };
201
202 /* for OOM */
203 struct mem_cgroup_eventfd_list {
204         struct list_head list;
205         struct eventfd_ctx *eventfd;
206 };
207
208 /*
209  * cgroup_event represents events which userspace want to receive.
210  */
211 struct mem_cgroup_event {
212         /*
213          * memcg which the event belongs to.
214          */
215         struct mem_cgroup *memcg;
216         /*
217          * eventfd to signal userspace about the event.
218          */
219         struct eventfd_ctx *eventfd;
220         /*
221          * Each of these stored in a list by the cgroup.
222          */
223         struct list_head list;
224         /*
225          * register_event() callback will be used to add new userspace
226          * waiter for changes related to this event.  Use eventfd_signal()
227          * on eventfd to send notification to userspace.
228          */
229         int (*register_event)(struct mem_cgroup *memcg,
230                               struct eventfd_ctx *eventfd, const char *args);
231         /*
232          * unregister_event() callback will be called when userspace closes
233          * the eventfd or on cgroup removing.  This callback must be set,
234          * if you want provide notification functionality.
235          */
236         void (*unregister_event)(struct mem_cgroup *memcg,
237                                  struct eventfd_ctx *eventfd);
238         /*
239          * All fields below needed to unregister event when
240          * userspace closes eventfd.
241          */
242         poll_table pt;
243         wait_queue_head_t *wqh;
244         wait_queue_t wait;
245         struct work_struct remove;
246 };
247
248 static void mem_cgroup_threshold(struct mem_cgroup *memcg);
249 static void mem_cgroup_oom_notify(struct mem_cgroup *memcg);
250
251 /*
252  * The memory controller data structure. The memory controller controls both
253  * page cache and RSS per cgroup. We would eventually like to provide
254  * statistics based on the statistics developed by Rik Van Riel for clock-pro,
255  * to help the administrator determine what knobs to tune.
256  *
257  * TODO: Add a water mark for the memory controller. Reclaim will begin when
258  * we hit the water mark. May be even add a low water mark, such that
259  * no reclaim occurs from a cgroup at it's low water mark, this is
260  * a feature that will be implemented much later in the future.
261  */
262 struct mem_cgroup {
263         struct cgroup_subsys_state css;
264
265         /* Accounted resources */
266         struct page_counter memory;
267         struct page_counter memsw;
268         struct page_counter kmem;
269
270         /* Normal memory consumption range */
271         unsigned long low;
272         unsigned long high;
273
274         unsigned long soft_limit;
275
276         /* vmpressure notifications */
277         struct vmpressure vmpressure;
278
279         /* css_online() has been completed */
280         int initialized;
281
282         /*
283          * Should the accounting and control be hierarchical, per subtree?
284          */
285         bool use_hierarchy;
286
287         bool            oom_lock;
288         atomic_t        under_oom;
289         atomic_t        oom_wakeups;
290
291         int     swappiness;
292         /* OOM-Killer disable */
293         int             oom_kill_disable;
294
295         /* protect arrays of thresholds */
296         struct mutex thresholds_lock;
297
298         /* thresholds for memory usage. RCU-protected */
299         struct mem_cgroup_thresholds thresholds;
300
301         /* thresholds for mem+swap usage. RCU-protected */
302         struct mem_cgroup_thresholds memsw_thresholds;
303
304         /* For oom notifier event fd */
305         struct list_head oom_notify;
306
307         /*
308          * Should we move charges of a task when a task is moved into this
309          * mem_cgroup ? And what type of charges should we move ?
310          */
311         unsigned long move_charge_at_immigrate;
312         /*
313          * set > 0 if pages under this cgroup are moving to other cgroup.
314          */
315         atomic_t                moving_account;
316         /* taken only while moving_account > 0 */
317         spinlock_t              move_lock;
318         struct task_struct      *move_lock_task;
319         unsigned long           move_lock_flags;
320         /*
321          * percpu counter.
322          */
323         struct mem_cgroup_stat_cpu __percpu *stat;
324         /*
325          * used when a cpu is offlined or other synchronizations
326          * See mem_cgroup_read_stat().
327          */
328         struct mem_cgroup_stat_cpu nocpu_base;
329         spinlock_t pcp_counter_lock;
330
331 #if defined(CONFIG_MEMCG_KMEM) && defined(CONFIG_INET)
332         struct cg_proto tcp_mem;
333 #endif
334 #if defined(CONFIG_MEMCG_KMEM)
335         /* Index in the kmem_cache->memcg_params.memcg_caches array */
336         int kmemcg_id;
337         bool kmem_acct_activated;
338         bool kmem_acct_active;
339 #endif
340
341         int last_scanned_node;
342 #if MAX_NUMNODES > 1
343         nodemask_t      scan_nodes;
344         atomic_t        numainfo_events;
345         atomic_t        numainfo_updating;
346 #endif
347
348         /* List of events which userspace want to receive */
349         struct list_head event_list;
350         spinlock_t event_list_lock;
351
352         struct mem_cgroup_per_node *nodeinfo[0];
353         /* WARNING: nodeinfo must be the last member here */
354 };
355
356 #ifdef CONFIG_MEMCG_KMEM
357 bool memcg_kmem_is_active(struct mem_cgroup *memcg)
358 {
359         return memcg->kmem_acct_active;
360 }
361 #endif
362
363 /* Stuffs for move charges at task migration. */
364 /*
365  * Types of charges to be moved.
366  */
367 #define MOVE_ANON       0x1U
368 #define MOVE_FILE       0x2U
369 #define MOVE_MASK       (MOVE_ANON | MOVE_FILE)
370
371 /* "mc" and its members are protected by cgroup_mutex */
372 static struct move_charge_struct {
373         spinlock_t        lock; /* for from, to */
374         struct mem_cgroup *from;
375         struct mem_cgroup *to;
376         unsigned long flags;
377         unsigned long precharge;
378         unsigned long moved_charge;
379         unsigned long moved_swap;
380         struct task_struct *moving_task;        /* a task moving charges */
381         wait_queue_head_t waitq;                /* a waitq for other context */
382 } mc = {
383         .lock = __SPIN_LOCK_UNLOCKED(mc.lock),
384         .waitq = __WAIT_QUEUE_HEAD_INITIALIZER(mc.waitq),
385 };
386
387 /*
388  * Maximum loops in mem_cgroup_hierarchical_reclaim(), used for soft
389  * limit reclaim to prevent infinite loops, if they ever occur.
390  */
391 #define MEM_CGROUP_MAX_RECLAIM_LOOPS            100
392 #define MEM_CGROUP_MAX_SOFT_LIMIT_RECLAIM_LOOPS 2
393
394 enum charge_type {
395         MEM_CGROUP_CHARGE_TYPE_CACHE = 0,
396         MEM_CGROUP_CHARGE_TYPE_ANON,
397         MEM_CGROUP_CHARGE_TYPE_SWAPOUT, /* for accounting swapcache */
398         MEM_CGROUP_CHARGE_TYPE_DROP,    /* a page was unused swap cache */
399         NR_CHARGE_TYPE,
400 };
401
402 /* for encoding cft->private value on file */
403 enum res_type {
404         _MEM,
405         _MEMSWAP,
406         _OOM_TYPE,
407         _KMEM,
408 };
409
410 #define MEMFILE_PRIVATE(x, val) ((x) << 16 | (val))
411 #define MEMFILE_TYPE(val)       ((val) >> 16 & 0xffff)
412 #define MEMFILE_ATTR(val)       ((val) & 0xffff)
413 /* Used for OOM nofiier */
414 #define OOM_CONTROL             (0)
415
416 /*
417  * The memcg_create_mutex will be held whenever a new cgroup is created.
418  * As a consequence, any change that needs to protect against new child cgroups
419  * appearing has to hold it as well.
420  */
421 static DEFINE_MUTEX(memcg_create_mutex);
422
423 struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *s)
424 {
425         return s ? container_of(s, struct mem_cgroup, css) : NULL;
426 }
427
428 /* Some nice accessors for the vmpressure. */
429 struct vmpressure *memcg_to_vmpressure(struct mem_cgroup *memcg)
430 {
431         if (!memcg)
432                 memcg = root_mem_cgroup;
433         return &memcg->vmpressure;
434 }
435
436 struct cgroup_subsys_state *vmpressure_to_css(struct vmpressure *vmpr)
437 {
438         return &container_of(vmpr, struct mem_cgroup, vmpressure)->css;
439 }
440
441 static inline bool mem_cgroup_is_root(struct mem_cgroup *memcg)
442 {
443         return (memcg == root_mem_cgroup);
444 }
445
446 /*
447  * We restrict the id in the range of [1, 65535], so it can fit into
448  * an unsigned short.
449  */
450 #define MEM_CGROUP_ID_MAX       USHRT_MAX
451
452 static inline unsigned short mem_cgroup_id(struct mem_cgroup *memcg)
453 {
454         return memcg->css.id;
455 }
456
457 static inline struct mem_cgroup *mem_cgroup_from_id(unsigned short id)
458 {
459         struct cgroup_subsys_state *css;
460
461         css = css_from_id(id, &memory_cgrp_subsys);
462         return mem_cgroup_from_css(css);
463 }
464
465 /* Writing them here to avoid exposing memcg's inner layout */
466 #if defined(CONFIG_INET) && defined(CONFIG_MEMCG_KMEM)
467
468 void sock_update_memcg(struct sock *sk)
469 {
470         if (mem_cgroup_sockets_enabled) {
471                 struct mem_cgroup *memcg;
472                 struct cg_proto *cg_proto;
473
474                 BUG_ON(!sk->sk_prot->proto_cgroup);
475
476                 /* Socket cloning can throw us here with sk_cgrp already
477                  * filled. It won't however, necessarily happen from
478                  * process context. So the test for root memcg given
479                  * the current task's memcg won't help us in this case.
480                  *
481                  * Respecting the original socket's memcg is a better
482                  * decision in this case.
483                  */
484                 if (sk->sk_cgrp) {
485                         BUG_ON(mem_cgroup_is_root(sk->sk_cgrp->memcg));
486                         css_get(&sk->sk_cgrp->memcg->css);
487                         return;
488                 }
489
490                 rcu_read_lock();
491                 memcg = mem_cgroup_from_task(current);
492                 cg_proto = sk->sk_prot->proto_cgroup(memcg);
493                 if (!mem_cgroup_is_root(memcg) &&
494                     memcg_proto_active(cg_proto) &&
495                     css_tryget_online(&memcg->css)) {
496                         sk->sk_cgrp = cg_proto;
497                 }
498                 rcu_read_unlock();
499         }
500 }
501 EXPORT_SYMBOL(sock_update_memcg);
502
503 void sock_release_memcg(struct sock *sk)
504 {
505         if (mem_cgroup_sockets_enabled && sk->sk_cgrp) {
506                 struct mem_cgroup *memcg;
507                 WARN_ON(!sk->sk_cgrp->memcg);
508                 memcg = sk->sk_cgrp->memcg;
509                 css_put(&sk->sk_cgrp->memcg->css);
510         }
511 }
512
513 struct cg_proto *tcp_proto_cgroup(struct mem_cgroup *memcg)
514 {
515         if (!memcg || mem_cgroup_is_root(memcg))
516                 return NULL;
517
518         return &memcg->tcp_mem;
519 }
520 EXPORT_SYMBOL(tcp_proto_cgroup);
521
522 static void disarm_sock_keys(struct mem_cgroup *memcg)
523 {
524         if (!memcg_proto_activated(&memcg->tcp_mem))
525                 return;
526         static_key_slow_dec(&memcg_socket_limit_enabled);
527 }
528 #else
529 static void disarm_sock_keys(struct mem_cgroup *memcg)
530 {
531 }
532 #endif
533
534 #ifdef CONFIG_MEMCG_KMEM
535 /*
536  * This will be the memcg's index in each cache's ->memcg_params.memcg_caches.
537  * The main reason for not using cgroup id for this:
538  *  this works better in sparse environments, where we have a lot of memcgs,
539  *  but only a few kmem-limited. Or also, if we have, for instance, 200
540  *  memcgs, and none but the 200th is kmem-limited, we'd have to have a
541  *  200 entry array for that.
542  *
543  * The current size of the caches array is stored in memcg_nr_cache_ids. It
544  * will double each time we have to increase it.
545  */
546 static DEFINE_IDA(memcg_cache_ida);
547 int memcg_nr_cache_ids;
548
549 /* Protects memcg_nr_cache_ids */
550 static DECLARE_RWSEM(memcg_cache_ids_sem);
551
552 void memcg_get_cache_ids(void)
553 {
554         down_read(&memcg_cache_ids_sem);
555 }
556
557 void memcg_put_cache_ids(void)
558 {
559         up_read(&memcg_cache_ids_sem);
560 }
561
562 /*
563  * MIN_SIZE is different than 1, because we would like to avoid going through
564  * the alloc/free process all the time. In a small machine, 4 kmem-limited
565  * cgroups is a reasonable guess. In the future, it could be a parameter or
566  * tunable, but that is strictly not necessary.
567  *
568  * MAX_SIZE should be as large as the number of cgrp_ids. Ideally, we could get
569  * this constant directly from cgroup, but it is understandable that this is
570  * better kept as an internal representation in cgroup.c. In any case, the
571  * cgrp_id space is not getting any smaller, and we don't have to necessarily
572  * increase ours as well if it increases.
573  */
574 #define MEMCG_CACHES_MIN_SIZE 4
575 #define MEMCG_CACHES_MAX_SIZE MEM_CGROUP_ID_MAX
576
577 /*
578  * A lot of the calls to the cache allocation functions are expected to be
579  * inlined by the compiler. Since the calls to memcg_kmem_get_cache are
580  * conditional to this static branch, we'll have to allow modules that does
581  * kmem_cache_alloc and the such to see this symbol as well
582  */
583 struct static_key memcg_kmem_enabled_key;
584 EXPORT_SYMBOL(memcg_kmem_enabled_key);
585
586 static void disarm_kmem_keys(struct mem_cgroup *memcg)
587 {
588         if (memcg->kmem_acct_activated)
589                 static_key_slow_dec(&memcg_kmem_enabled_key);
590         /*
591          * This check can't live in kmem destruction function,
592          * since the charges will outlive the cgroup
593          */
594         WARN_ON(page_counter_read(&memcg->kmem));
595 }
596 #else
597 static void disarm_kmem_keys(struct mem_cgroup *memcg)
598 {
599 }
600 #endif /* CONFIG_MEMCG_KMEM */
601
602 static void disarm_static_keys(struct mem_cgroup *memcg)
603 {
604         disarm_sock_keys(memcg);
605         disarm_kmem_keys(memcg);
606 }
607
608 static struct mem_cgroup_per_zone *
609 mem_cgroup_zone_zoneinfo(struct mem_cgroup *memcg, struct zone *zone)
610 {
611         int nid = zone_to_nid(zone);
612         int zid = zone_idx(zone);
613
614         return &memcg->nodeinfo[nid]->zoneinfo[zid];
615 }
616
617 struct cgroup_subsys_state *mem_cgroup_css(struct mem_cgroup *memcg)
618 {
619         return &memcg->css;
620 }
621
622 static struct mem_cgroup_per_zone *
623 mem_cgroup_page_zoneinfo(struct mem_cgroup *memcg, struct page *page)
624 {
625         int nid = page_to_nid(page);
626         int zid = page_zonenum(page);
627
628         return &memcg->nodeinfo[nid]->zoneinfo[zid];
629 }
630
631 static struct mem_cgroup_tree_per_zone *
632 soft_limit_tree_node_zone(int nid, int zid)
633 {
634         return &soft_limit_tree.rb_tree_per_node[nid]->rb_tree_per_zone[zid];
635 }
636
637 static struct mem_cgroup_tree_per_zone *
638 soft_limit_tree_from_page(struct page *page)
639 {
640         int nid = page_to_nid(page);
641         int zid = page_zonenum(page);
642
643         return &soft_limit_tree.rb_tree_per_node[nid]->rb_tree_per_zone[zid];
644 }
645
646 static void __mem_cgroup_insert_exceeded(struct mem_cgroup_per_zone *mz,
647                                          struct mem_cgroup_tree_per_zone *mctz,
648                                          unsigned long new_usage_in_excess)
649 {
650         struct rb_node **p = &mctz->rb_root.rb_node;
651         struct rb_node *parent = NULL;
652         struct mem_cgroup_per_zone *mz_node;
653
654         if (mz->on_tree)
655                 return;
656
657         mz->usage_in_excess = new_usage_in_excess;
658         if (!mz->usage_in_excess)
659                 return;
660         while (*p) {
661                 parent = *p;
662                 mz_node = rb_entry(parent, struct mem_cgroup_per_zone,
663                                         tree_node);
664                 if (mz->usage_in_excess < mz_node->usage_in_excess)
665                         p = &(*p)->rb_left;
666                 /*
667                  * We can't avoid mem cgroups that are over their soft
668                  * limit by the same amount
669                  */
670                 else if (mz->usage_in_excess >= mz_node->usage_in_excess)
671                         p = &(*p)->rb_right;
672         }
673         rb_link_node(&mz->tree_node, parent, p);
674         rb_insert_color(&mz->tree_node, &mctz->rb_root);
675         mz->on_tree = true;
676 }
677
678 static void __mem_cgroup_remove_exceeded(struct mem_cgroup_per_zone *mz,
679                                          struct mem_cgroup_tree_per_zone *mctz)
680 {
681         if (!mz->on_tree)
682                 return;
683         rb_erase(&mz->tree_node, &mctz->rb_root);
684         mz->on_tree = false;
685 }
686
687 static void mem_cgroup_remove_exceeded(struct mem_cgroup_per_zone *mz,
688                                        struct mem_cgroup_tree_per_zone *mctz)
689 {
690         unsigned long flags;
691
692         spin_lock_irqsave(&mctz->lock, flags);
693         __mem_cgroup_remove_exceeded(mz, mctz);
694         spin_unlock_irqrestore(&mctz->lock, flags);
695 }
696
697 static unsigned long soft_limit_excess(struct mem_cgroup *memcg)
698 {
699         unsigned long nr_pages = page_counter_read(&memcg->memory);
700         unsigned long soft_limit = ACCESS_ONCE(memcg->soft_limit);
701         unsigned long excess = 0;
702
703         if (nr_pages > soft_limit)
704                 excess = nr_pages - soft_limit;
705
706         return excess;
707 }
708
709 static void mem_cgroup_update_tree(struct mem_cgroup *memcg, struct page *page)
710 {
711         unsigned long excess;
712         struct mem_cgroup_per_zone *mz;
713         struct mem_cgroup_tree_per_zone *mctz;
714
715         mctz = soft_limit_tree_from_page(page);
716         /*
717          * Necessary to update all ancestors when hierarchy is used.
718          * because their event counter is not touched.
719          */
720         for (; memcg; memcg = parent_mem_cgroup(memcg)) {
721                 mz = mem_cgroup_page_zoneinfo(memcg, page);
722                 excess = soft_limit_excess(memcg);
723                 /*
724                  * We have to update the tree if mz is on RB-tree or
725                  * mem is over its softlimit.
726                  */
727                 if (excess || mz->on_tree) {
728                         unsigned long flags;
729
730                         spin_lock_irqsave(&mctz->lock, flags);
731                         /* if on-tree, remove it */
732                         if (mz->on_tree)
733                                 __mem_cgroup_remove_exceeded(mz, mctz);
734                         /*
735                          * Insert again. mz->usage_in_excess will be updated.
736                          * If excess is 0, no tree ops.
737                          */
738                         __mem_cgroup_insert_exceeded(mz, mctz, excess);
739                         spin_unlock_irqrestore(&mctz->lock, flags);
740                 }
741         }
742 }
743
744 static void mem_cgroup_remove_from_trees(struct mem_cgroup *memcg)
745 {
746         struct mem_cgroup_tree_per_zone *mctz;
747         struct mem_cgroup_per_zone *mz;
748         int nid, zid;
749
750         for_each_node(nid) {
751                 for (zid = 0; zid < MAX_NR_ZONES; zid++) {
752                         mz = &memcg->nodeinfo[nid]->zoneinfo[zid];
753                         mctz = soft_limit_tree_node_zone(nid, zid);
754                         mem_cgroup_remove_exceeded(mz, mctz);
755                 }
756         }
757 }
758
759 static struct mem_cgroup_per_zone *
760 __mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_zone *mctz)
761 {
762         struct rb_node *rightmost = NULL;
763         struct mem_cgroup_per_zone *mz;
764
765 retry:
766         mz = NULL;
767         rightmost = rb_last(&mctz->rb_root);
768         if (!rightmost)
769                 goto done;              /* Nothing to reclaim from */
770
771         mz = rb_entry(rightmost, struct mem_cgroup_per_zone, tree_node);
772         /*
773          * Remove the node now but someone else can add it back,
774          * we will to add it back at the end of reclaim to its correct
775          * position in the tree.
776          */
777         __mem_cgroup_remove_exceeded(mz, mctz);
778         if (!soft_limit_excess(mz->memcg) ||
779             !css_tryget_online(&mz->memcg->css))
780                 goto retry;
781 done:
782         return mz;
783 }
784
785 static struct mem_cgroup_per_zone *
786 mem_cgroup_largest_soft_limit_node(struct mem_cgroup_tree_per_zone *mctz)
787 {
788         struct mem_cgroup_per_zone *mz;
789
790         spin_lock_irq(&mctz->lock);
791         mz = __mem_cgroup_largest_soft_limit_node(mctz);
792         spin_unlock_irq(&mctz->lock);
793         return mz;
794 }
795
796 /*
797  * Implementation Note: reading percpu statistics for memcg.
798  *
799  * Both of vmstat[] and percpu_counter has threshold and do periodic
800  * synchronization to implement "quick" read. There are trade-off between
801  * reading cost and precision of value. Then, we may have a chance to implement
802  * a periodic synchronizion of counter in memcg's counter.
803  *
804  * But this _read() function is used for user interface now. The user accounts
805  * memory usage by memory cgroup and he _always_ requires exact value because
806  * he accounts memory. Even if we provide quick-and-fuzzy read, we always
807  * have to visit all online cpus and make sum. So, for now, unnecessary
808  * synchronization is not implemented. (just implemented for cpu hotplug)
809  *
810  * If there are kernel internal actions which can make use of some not-exact
811  * value, and reading all cpu value can be performance bottleneck in some
812  * common workload, threashold and synchonization as vmstat[] should be
813  * implemented.
814  */
815 static long mem_cgroup_read_stat(struct mem_cgroup *memcg,
816                                  enum mem_cgroup_stat_index idx)
817 {
818         long val = 0;
819         int cpu;
820
821         get_online_cpus();
822         for_each_online_cpu(cpu)
823                 val += per_cpu(memcg->stat->count[idx], cpu);
824 #ifdef CONFIG_HOTPLUG_CPU
825         spin_lock(&memcg->pcp_counter_lock);
826         val += memcg->nocpu_base.count[idx];
827         spin_unlock(&memcg->pcp_counter_lock);
828 #endif
829         put_online_cpus();
830         return val;
831 }
832
833 static unsigned long mem_cgroup_read_events(struct mem_cgroup *memcg,
834                                             enum mem_cgroup_events_index idx)
835 {
836         unsigned long val = 0;
837         int cpu;
838
839         get_online_cpus();
840         for_each_online_cpu(cpu)
841                 val += per_cpu(memcg->stat->events[idx], cpu);
842 #ifdef CONFIG_HOTPLUG_CPU
843         spin_lock(&memcg->pcp_counter_lock);
844         val += memcg->nocpu_base.events[idx];
845         spin_unlock(&memcg->pcp_counter_lock);
846 #endif
847         put_online_cpus();
848         return val;
849 }
850
851 static void mem_cgroup_charge_statistics(struct mem_cgroup *memcg,
852                                          struct page *page,
853                                          int nr_pages)
854 {
855         /*
856          * Here, RSS means 'mapped anon' and anon's SwapCache. Shmem/tmpfs is
857          * counted as CACHE even if it's on ANON LRU.
858          */
859         if (PageAnon(page))
860                 __this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_RSS],
861                                 nr_pages);
862         else
863                 __this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_CACHE],
864                                 nr_pages);
865
866         if (PageTransHuge(page))
867                 __this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_RSS_HUGE],
868                                 nr_pages);
869
870         /* pagein of a big page is an event. So, ignore page size */
871         if (nr_pages > 0)
872                 __this_cpu_inc(memcg->stat->events[MEM_CGROUP_EVENTS_PGPGIN]);
873         else {
874                 __this_cpu_inc(memcg->stat->events[MEM_CGROUP_EVENTS_PGPGOUT]);
875                 nr_pages = -nr_pages; /* for event */
876         }
877
878         __this_cpu_add(memcg->stat->nr_page_events, nr_pages);
879 }
880
881 unsigned long mem_cgroup_get_lru_size(struct lruvec *lruvec, enum lru_list lru)
882 {
883         struct mem_cgroup_per_zone *mz;
884
885         mz = container_of(lruvec, struct mem_cgroup_per_zone, lruvec);
886         return mz->lru_size[lru];
887 }
888
889 static unsigned long mem_cgroup_node_nr_lru_pages(struct mem_cgroup *memcg,
890                                                   int nid,
891                                                   unsigned int lru_mask)
892 {
893         unsigned long nr = 0;
894         int zid;
895
896         VM_BUG_ON((unsigned)nid >= nr_node_ids);
897
898         for (zid = 0; zid < MAX_NR_ZONES; zid++) {
899                 struct mem_cgroup_per_zone *mz;
900                 enum lru_list lru;
901
902                 for_each_lru(lru) {
903                         if (!(BIT(lru) & lru_mask))
904                                 continue;
905                         mz = &memcg->nodeinfo[nid]->zoneinfo[zid];
906                         nr += mz->lru_size[lru];
907                 }
908         }
909         return nr;
910 }
911
912 static unsigned long mem_cgroup_nr_lru_pages(struct mem_cgroup *memcg,
913                         unsigned int lru_mask)
914 {
915         unsigned long nr = 0;
916         int nid;
917
918         for_each_node_state(nid, N_MEMORY)
919                 nr += mem_cgroup_node_nr_lru_pages(memcg, nid, lru_mask);
920         return nr;
921 }
922
923 static bool mem_cgroup_event_ratelimit(struct mem_cgroup *memcg,
924                                        enum mem_cgroup_events_target target)
925 {
926         unsigned long val, next;
927
928         val = __this_cpu_read(memcg->stat->nr_page_events);
929         next = __this_cpu_read(memcg->stat->targets[target]);
930         /* from time_after() in jiffies.h */
931         if ((long)next - (long)val < 0) {
932                 switch (target) {
933                 case MEM_CGROUP_TARGET_THRESH:
934                         next = val + THRESHOLDS_EVENTS_TARGET;
935                         break;
936                 case MEM_CGROUP_TARGET_SOFTLIMIT:
937                         next = val + SOFTLIMIT_EVENTS_TARGET;
938                         break;
939                 case MEM_CGROUP_TARGET_NUMAINFO:
940                         next = val + NUMAINFO_EVENTS_TARGET;
941                         break;
942                 default:
943                         break;
944                 }
945                 __this_cpu_write(memcg->stat->targets[target], next);
946                 return true;
947         }
948         return false;
949 }
950
951 /*
952  * Check events in order.
953  *
954  */
955 static void memcg_check_events(struct mem_cgroup *memcg, struct page *page)
956 {
957         /* threshold event is triggered in finer grain than soft limit */
958         if (unlikely(mem_cgroup_event_ratelimit(memcg,
959                                                 MEM_CGROUP_TARGET_THRESH))) {
960                 bool do_softlimit;
961                 bool do_numainfo __maybe_unused;
962
963                 do_softlimit = mem_cgroup_event_ratelimit(memcg,
964                                                 MEM_CGROUP_TARGET_SOFTLIMIT);
965 #if MAX_NUMNODES > 1
966                 do_numainfo = mem_cgroup_event_ratelimit(memcg,
967                                                 MEM_CGROUP_TARGET_NUMAINFO);
968 #endif
969                 mem_cgroup_threshold(memcg);
970                 if (unlikely(do_softlimit))
971                         mem_cgroup_update_tree(memcg, page);
972 #if MAX_NUMNODES > 1
973                 if (unlikely(do_numainfo))
974                         atomic_inc(&memcg->numainfo_events);
975 #endif
976         }
977 }
978
979 struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p)
980 {
981         /*
982          * mm_update_next_owner() may clear mm->owner to NULL
983          * if it races with swapoff, page migration, etc.
984          * So this can be called with p == NULL.
985          */
986         if (unlikely(!p))
987                 return NULL;
988
989         return mem_cgroup_from_css(task_css(p, memory_cgrp_id));
990 }
991
992 static struct mem_cgroup *get_mem_cgroup_from_mm(struct mm_struct *mm)
993 {
994         struct mem_cgroup *memcg = NULL;
995
996         rcu_read_lock();
997         do {
998                 /*
999                  * Page cache insertions can happen withou an
1000                  * actual mm context, e.g. during disk probing
1001                  * on boot, loopback IO, acct() writes etc.
1002                  */
1003                 if (unlikely(!mm))
1004                         memcg = root_mem_cgroup;
1005                 else {
1006                         memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
1007                         if (unlikely(!memcg))
1008                                 memcg = root_mem_cgroup;
1009                 }
1010         } while (!css_tryget_online(&memcg->css));
1011         rcu_read_unlock();
1012         return memcg;
1013 }
1014
1015 /**
1016  * mem_cgroup_iter - iterate over memory cgroup hierarchy
1017  * @root: hierarchy root
1018  * @prev: previously returned memcg, NULL on first invocation
1019  * @reclaim: cookie for shared reclaim walks, NULL for full walks
1020  *
1021  * Returns references to children of the hierarchy below @root, or
1022  * @root itself, or %NULL after a full round-trip.
1023  *
1024  * Caller must pass the return value in @prev on subsequent
1025  * invocations for reference counting, or use mem_cgroup_iter_break()
1026  * to cancel a hierarchy walk before the round-trip is complete.
1027  *
1028  * Reclaimers can specify a zone and a priority level in @reclaim to
1029  * divide up the memcgs in the hierarchy among all concurrent
1030  * reclaimers operating on the same zone and priority.
1031  */
1032 struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root,
1033                                    struct mem_cgroup *prev,
1034                                    struct mem_cgroup_reclaim_cookie *reclaim)
1035 {
1036         struct reclaim_iter *uninitialized_var(iter);
1037         struct cgroup_subsys_state *css = NULL;
1038         struct mem_cgroup *memcg = NULL;
1039         struct mem_cgroup *pos = NULL;
1040
1041         if (mem_cgroup_disabled())
1042                 return NULL;
1043
1044         if (!root)
1045                 root = root_mem_cgroup;
1046
1047         if (prev && !reclaim)
1048                 pos = prev;
1049
1050         if (!root->use_hierarchy && root != root_mem_cgroup) {
1051                 if (prev)
1052                         goto out;
1053                 return root;
1054         }
1055
1056         rcu_read_lock();
1057
1058         if (reclaim) {
1059                 struct mem_cgroup_per_zone *mz;
1060
1061                 mz = mem_cgroup_zone_zoneinfo(root, reclaim->zone);
1062                 iter = &mz->iter[reclaim->priority];
1063
1064                 if (prev && reclaim->generation != iter->generation)
1065                         goto out_unlock;
1066
1067                 do {
1068                         pos = ACCESS_ONCE(iter->position);
1069                         /*
1070                          * A racing update may change the position and
1071                          * put the last reference, hence css_tryget(),
1072                          * or retry to see the updated position.
1073                          */
1074                 } while (pos && !css_tryget(&pos->css));
1075         }
1076
1077         if (pos)
1078                 css = &pos->css;
1079
1080         for (;;) {
1081                 css = css_next_descendant_pre(css, &root->css);
1082                 if (!css) {
1083                         /*
1084                          * Reclaimers share the hierarchy walk, and a
1085                          * new one might jump in right at the end of
1086                          * the hierarchy - make sure they see at least
1087                          * one group and restart from the beginning.
1088                          */
1089                         if (!prev)
1090                                 continue;
1091                         break;
1092                 }
1093
1094                 /*
1095                  * Verify the css and acquire a reference.  The root
1096                  * is provided by the caller, so we know it's alive
1097                  * and kicking, and don't take an extra reference.
1098                  */
1099                 memcg = mem_cgroup_from_css(css);
1100
1101                 if (css == &root->css)
1102                         break;
1103
1104                 if (css_tryget(css)) {
1105                         /*
1106                          * Make sure the memcg is initialized:
1107                          * mem_cgroup_css_online() orders the the
1108                          * initialization against setting the flag.
1109                          */
1110                         if (smp_load_acquire(&memcg->initialized))
1111                                 break;
1112
1113                         css_put(css);
1114                 }
1115
1116                 memcg = NULL;
1117         }
1118
1119         if (reclaim) {
1120                 if (cmpxchg(&iter->position, pos, memcg) == pos) {
1121                         if (memcg)
1122                                 css_get(&memcg->css);
1123                         if (pos)
1124                                 css_put(&pos->css);
1125                 }
1126
1127                 /*
1128                  * pairs with css_tryget when dereferencing iter->position
1129                  * above.
1130                  */
1131                 if (pos)
1132                         css_put(&pos->css);
1133
1134                 if (!memcg)
1135                         iter->generation++;
1136                 else if (!prev)
1137                         reclaim->generation = iter->generation;
1138         }
1139
1140 out_unlock:
1141         rcu_read_unlock();
1142 out:
1143         if (prev && prev != root)
1144                 css_put(&prev->css);
1145
1146         return memcg;
1147 }
1148
1149 /**
1150  * mem_cgroup_iter_break - abort a hierarchy walk prematurely
1151  * @root: hierarchy root
1152  * @prev: last visited hierarchy member as returned by mem_cgroup_iter()
1153  */
1154 void mem_cgroup_iter_break(struct mem_cgroup *root,
1155                            struct mem_cgroup *prev)
1156 {
1157         if (!root)
1158                 root = root_mem_cgroup;
1159         if (prev && prev != root)
1160                 css_put(&prev->css);
1161 }
1162
1163 /*
1164  * Iteration constructs for visiting all cgroups (under a tree).  If
1165  * loops are exited prematurely (break), mem_cgroup_iter_break() must
1166  * be used for reference counting.
1167  */
1168 #define for_each_mem_cgroup_tree(iter, root)            \
1169         for (iter = mem_cgroup_iter(root, NULL, NULL);  \
1170              iter != NULL;                              \
1171              iter = mem_cgroup_iter(root, iter, NULL))
1172
1173 #define for_each_mem_cgroup(iter)                       \
1174         for (iter = mem_cgroup_iter(NULL, NULL, NULL);  \
1175              iter != NULL;                              \
1176              iter = mem_cgroup_iter(NULL, iter, NULL))
1177
1178 void __mem_cgroup_count_vm_event(struct mm_struct *mm, enum vm_event_item idx)
1179 {
1180         struct mem_cgroup *memcg;
1181
1182         rcu_read_lock();
1183         memcg = mem_cgroup_from_task(rcu_dereference(mm->owner));
1184         if (unlikely(!memcg))
1185                 goto out;
1186
1187         switch (idx) {
1188         case PGFAULT:
1189                 this_cpu_inc(memcg->stat->events[MEM_CGROUP_EVENTS_PGFAULT]);
1190                 break;
1191         case PGMAJFAULT:
1192                 this_cpu_inc(memcg->stat->events[MEM_CGROUP_EVENTS_PGMAJFAULT]);
1193                 break;
1194         default:
1195                 BUG();
1196         }
1197 out:
1198         rcu_read_unlock();
1199 }
1200 EXPORT_SYMBOL(__mem_cgroup_count_vm_event);
1201
1202 /**
1203  * mem_cgroup_zone_lruvec - get the lru list vector for a zone and memcg
1204  * @zone: zone of the wanted lruvec
1205  * @memcg: memcg of the wanted lruvec
1206  *
1207  * Returns the lru list vector holding pages for the given @zone and
1208  * @mem.  This can be the global zone lruvec, if the memory controller
1209  * is disabled.
1210  */
1211 struct lruvec *mem_cgroup_zone_lruvec(struct zone *zone,
1212                                       struct mem_cgroup *memcg)
1213 {
1214         struct mem_cgroup_per_zone *mz;
1215         struct lruvec *lruvec;
1216
1217         if (mem_cgroup_disabled()) {
1218                 lruvec = &zone->lruvec;
1219                 goto out;
1220         }
1221
1222         mz = mem_cgroup_zone_zoneinfo(memcg, zone);
1223         lruvec = &mz->lruvec;
1224 out:
1225         /*
1226          * Since a node can be onlined after the mem_cgroup was created,
1227          * we have to be prepared to initialize lruvec->zone here;
1228          * and if offlined then reonlined, we need to reinitialize it.
1229          */
1230         if (unlikely(lruvec->zone != zone))
1231                 lruvec->zone = zone;
1232         return lruvec;
1233 }
1234
1235 /**
1236  * mem_cgroup_page_lruvec - return lruvec for isolating/putting an LRU page
1237  * @page: the page
1238  * @zone: zone of the page
1239  *
1240  * This function is only safe when following the LRU page isolation
1241  * and putback protocol: the LRU lock must be held, and the page must
1242  * either be PageLRU() or the caller must have isolated/allocated it.
1243  */
1244 struct lruvec *mem_cgroup_page_lruvec(struct page *page, struct zone *zone)
1245 {
1246         struct mem_cgroup_per_zone *mz;
1247         struct mem_cgroup *memcg;
1248         struct lruvec *lruvec;
1249
1250         if (mem_cgroup_disabled()) {
1251                 lruvec = &zone->lruvec;
1252                 goto out;
1253         }
1254
1255         memcg = page->mem_cgroup;
1256         /*
1257          * Swapcache readahead pages are added to the LRU - and
1258          * possibly migrated - before they are charged.
1259          */
1260         if (!memcg)
1261                 memcg = root_mem_cgroup;
1262
1263         mz = mem_cgroup_page_zoneinfo(memcg, page);
1264         lruvec = &mz->lruvec;
1265 out:
1266         /*
1267          * Since a node can be onlined after the mem_cgroup was created,
1268          * we have to be prepared to initialize lruvec->zone here;
1269          * and if offlined then reonlined, we need to reinitialize it.
1270          */
1271         if (unlikely(lruvec->zone != zone))
1272                 lruvec->zone = zone;
1273         return lruvec;
1274 }
1275
1276 /**
1277  * mem_cgroup_update_lru_size - account for adding or removing an lru page
1278  * @lruvec: mem_cgroup per zone lru vector
1279  * @lru: index of lru list the page is sitting on
1280  * @nr_pages: positive when adding or negative when removing
1281  *
1282  * This function must be called when a page is added to or removed from an
1283  * lru list.
1284  */
1285 void mem_cgroup_update_lru_size(struct lruvec *lruvec, enum lru_list lru,
1286                                 int nr_pages)
1287 {
1288         struct mem_cgroup_per_zone *mz;
1289         unsigned long *lru_size;
1290
1291         if (mem_cgroup_disabled())
1292                 return;
1293
1294         mz = container_of(lruvec, struct mem_cgroup_per_zone, lruvec);
1295         lru_size = mz->lru_size + lru;
1296         *lru_size += nr_pages;
1297         VM_BUG_ON((long)(*lru_size) < 0);
1298 }
1299
1300 bool mem_cgroup_is_descendant(struct mem_cgroup *memcg, struct mem_cgroup *root)
1301 {
1302         if (root == memcg)
1303                 return true;
1304         if (!root->use_hierarchy)
1305                 return false;
1306         return cgroup_is_descendant(memcg->css.cgroup, root->css.cgroup);
1307 }
1308
1309 bool task_in_mem_cgroup(struct task_struct *task, struct mem_cgroup *memcg)
1310 {
1311         struct mem_cgroup *task_memcg;
1312         struct task_struct *p;
1313         bool ret;
1314
1315         p = find_lock_task_mm(task);
1316         if (p) {
1317                 task_memcg = get_mem_cgroup_from_mm(p->mm);
1318                 task_unlock(p);
1319         } else {
1320                 /*
1321                  * All threads may have already detached their mm's, but the oom
1322                  * killer still needs to detect if they have already been oom
1323                  * killed to prevent needlessly killing additional tasks.
1324                  */
1325                 rcu_read_lock();
1326                 task_memcg = mem_cgroup_from_task(task);
1327                 css_get(&task_memcg->css);
1328                 rcu_read_unlock();
1329         }
1330         ret = mem_cgroup_is_descendant(task_memcg, memcg);
1331         css_put(&task_memcg->css);
1332         return ret;
1333 }
1334
1335 int mem_cgroup_inactive_anon_is_low(struct lruvec *lruvec)
1336 {
1337         unsigned long inactive_ratio;
1338         unsigned long inactive;
1339         unsigned long active;
1340         unsigned long gb;
1341
1342         inactive = mem_cgroup_get_lru_size(lruvec, LRU_INACTIVE_ANON);
1343         active = mem_cgroup_get_lru_size(lruvec, LRU_ACTIVE_ANON);
1344
1345         gb = (inactive + active) >> (30 - PAGE_SHIFT);
1346         if (gb)
1347                 inactive_ratio = int_sqrt(10 * gb);
1348         else
1349                 inactive_ratio = 1;
1350
1351         return inactive * inactive_ratio < active;
1352 }
1353
1354 bool mem_cgroup_lruvec_online(struct lruvec *lruvec)
1355 {
1356         struct mem_cgroup_per_zone *mz;
1357         struct mem_cgroup *memcg;
1358
1359         if (mem_cgroup_disabled())
1360                 return true;
1361
1362         mz = container_of(lruvec, struct mem_cgroup_per_zone, lruvec);
1363         memcg = mz->memcg;
1364
1365         return !!(memcg->css.flags & CSS_ONLINE);
1366 }
1367
1368 #define mem_cgroup_from_counter(counter, member)        \
1369         container_of(counter, struct mem_cgroup, member)
1370
1371 /**
1372  * mem_cgroup_margin - calculate chargeable space of a memory cgroup
1373  * @memcg: the memory cgroup
1374  *
1375  * Returns the maximum amount of memory @mem can be charged with, in
1376  * pages.
1377  */
1378 static unsigned long mem_cgroup_margin(struct mem_cgroup *memcg)
1379 {
1380         unsigned long margin = 0;
1381         unsigned long count;
1382         unsigned long limit;
1383
1384         count = page_counter_read(&memcg->memory);
1385         limit = ACCESS_ONCE(memcg->memory.limit);
1386         if (count < limit)
1387                 margin = limit - count;
1388
1389         if (do_swap_account) {
1390                 count = page_counter_read(&memcg->memsw);
1391                 limit = ACCESS_ONCE(memcg->memsw.limit);
1392                 if (count <= limit)
1393                         margin = min(margin, limit - count);
1394         }
1395
1396         return margin;
1397 }
1398
1399 int mem_cgroup_swappiness(struct mem_cgroup *memcg)
1400 {
1401         /* root ? */
1402         if (mem_cgroup_disabled() || !memcg->css.parent)
1403                 return vm_swappiness;
1404
1405         return memcg->swappiness;
1406 }
1407
1408 /*
1409  * A routine for checking "mem" is under move_account() or not.
1410  *
1411  * Checking a cgroup is mc.from or mc.to or under hierarchy of
1412  * moving cgroups. This is for waiting at high-memory pressure
1413  * caused by "move".
1414  */
1415 static bool mem_cgroup_under_move(struct mem_cgroup *memcg)
1416 {
1417         struct mem_cgroup *from;
1418         struct mem_cgroup *to;
1419         bool ret = false;
1420         /*
1421          * Unlike task_move routines, we access mc.to, mc.from not under
1422          * mutual exclusion by cgroup_mutex. Here, we take spinlock instead.
1423          */
1424         spin_lock(&mc.lock);
1425         from = mc.from;
1426         to = mc.to;
1427         if (!from)
1428                 goto unlock;
1429
1430         ret = mem_cgroup_is_descendant(from, memcg) ||
1431                 mem_cgroup_is_descendant(to, memcg);
1432 unlock:
1433         spin_unlock(&mc.lock);
1434         return ret;
1435 }
1436
1437 static bool mem_cgroup_wait_acct_move(struct mem_cgroup *memcg)
1438 {
1439         if (mc.moving_task && current != mc.moving_task) {
1440                 if (mem_cgroup_under_move(memcg)) {
1441                         DEFINE_WAIT(wait);
1442                         prepare_to_wait(&mc.waitq, &wait, TASK_INTERRUPTIBLE);
1443                         /* moving charge context might have finished. */
1444                         if (mc.moving_task)
1445                                 schedule();
1446                         finish_wait(&mc.waitq, &wait);
1447                         return true;
1448                 }
1449         }
1450         return false;
1451 }
1452
1453 #define K(x) ((x) << (PAGE_SHIFT-10))
1454 /**
1455  * mem_cgroup_print_oom_info: Print OOM information relevant to memory controller.
1456  * @memcg: The memory cgroup that went over limit
1457  * @p: Task that is going to be killed
1458  *
1459  * NOTE: @memcg and @p's mem_cgroup can be different when hierarchy is
1460  * enabled
1461  */
1462 void mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
1463 {
1464         /* oom_info_lock ensures that parallel ooms do not interleave */
1465         static DEFINE_MUTEX(oom_info_lock);
1466         struct mem_cgroup *iter;
1467         unsigned int i;
1468
1469         if (!p)
1470                 return;
1471
1472         mutex_lock(&oom_info_lock);
1473         rcu_read_lock();
1474
1475         pr_info("Task in ");
1476         pr_cont_cgroup_path(task_cgroup(p, memory_cgrp_id));
1477         pr_cont(" killed as a result of limit of ");
1478         pr_cont_cgroup_path(memcg->css.cgroup);
1479         pr_cont("\n");
1480
1481         rcu_read_unlock();
1482
1483         pr_info("memory: usage %llukB, limit %llukB, failcnt %lu\n",
1484                 K((u64)page_counter_read(&memcg->memory)),
1485                 K((u64)memcg->memory.limit), memcg->memory.failcnt);
1486         pr_info("memory+swap: usage %llukB, limit %llukB, failcnt %lu\n",
1487                 K((u64)page_counter_read(&memcg->memsw)),
1488                 K((u64)memcg->memsw.limit), memcg->memsw.failcnt);
1489         pr_info("kmem: usage %llukB, limit %llukB, failcnt %lu\n",
1490                 K((u64)page_counter_read(&memcg->kmem)),
1491                 K((u64)memcg->kmem.limit), memcg->kmem.failcnt);
1492
1493         for_each_mem_cgroup_tree(iter, memcg) {
1494                 pr_info("Memory cgroup stats for ");
1495                 pr_cont_cgroup_path(iter->css.cgroup);
1496                 pr_cont(":");
1497
1498                 for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) {
1499                         if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account)
1500                                 continue;
1501                         pr_cont(" %s:%ldKB", mem_cgroup_stat_names[i],
1502                                 K(mem_cgroup_read_stat(iter, i)));
1503                 }
1504
1505                 for (i = 0; i < NR_LRU_LISTS; i++)
1506                         pr_cont(" %s:%luKB", mem_cgroup_lru_names[i],
1507                                 K(mem_cgroup_nr_lru_pages(iter, BIT(i))));
1508
1509                 pr_cont("\n");
1510         }
1511         mutex_unlock(&oom_info_lock);
1512 }
1513
1514 /*
1515  * This function returns the number of memcg under hierarchy tree. Returns
1516  * 1(self count) if no children.
1517  */
1518 static int mem_cgroup_count_children(struct mem_cgroup *memcg)
1519 {
1520         int num = 0;
1521         struct mem_cgroup *iter;
1522
1523         for_each_mem_cgroup_tree(iter, memcg)
1524                 num++;
1525         return num;
1526 }
1527
1528 /*
1529  * Return the memory (and swap, if configured) limit for a memcg.
1530  */
1531 static unsigned long mem_cgroup_get_limit(struct mem_cgroup *memcg)
1532 {
1533         unsigned long limit;
1534
1535         limit = memcg->memory.limit;
1536         if (mem_cgroup_swappiness(memcg)) {
1537                 unsigned long memsw_limit;
1538
1539                 memsw_limit = memcg->memsw.limit;
1540                 limit = min(limit + total_swap_pages, memsw_limit);
1541         }
1542         return limit;
1543 }
1544
1545 static void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
1546                                      int order)
1547 {
1548         struct mem_cgroup *iter;
1549         unsigned long chosen_points = 0;
1550         unsigned long totalpages;
1551         unsigned int points = 0;
1552         struct task_struct *chosen = NULL;
1553
1554         /*
1555          * If current has a pending SIGKILL or is exiting, then automatically
1556          * select it.  The goal is to allow it to allocate so that it may
1557          * quickly exit and free its memory.
1558          */
1559         if (fatal_signal_pending(current) || task_will_free_mem(current)) {
1560                 mark_tsk_oom_victim(current);
1561                 return;
1562         }
1563
1564         check_panic_on_oom(CONSTRAINT_MEMCG, gfp_mask, order, NULL);
1565         totalpages = mem_cgroup_get_limit(memcg) ? : 1;
1566         for_each_mem_cgroup_tree(iter, memcg) {
1567                 struct css_task_iter it;
1568                 struct task_struct *task;
1569
1570                 css_task_iter_start(&iter->css, &it);
1571                 while ((task = css_task_iter_next(&it))) {
1572                         switch (oom_scan_process_thread(task, totalpages, NULL,
1573                                                         false)) {
1574                         case OOM_SCAN_SELECT:
1575                                 if (chosen)
1576                                         put_task_struct(chosen);
1577                                 chosen = task;
1578                                 chosen_points = ULONG_MAX;
1579                                 get_task_struct(chosen);
1580                                 /* fall through */
1581                         case OOM_SCAN_CONTINUE:
1582                                 continue;
1583                         case OOM_SCAN_ABORT:
1584                                 css_task_iter_end(&it);
1585                                 mem_cgroup_iter_break(memcg, iter);
1586                                 if (chosen)
1587                                         put_task_struct(chosen);
1588                                 return;
1589                         case OOM_SCAN_OK:
1590                                 break;
1591                         };
1592                         points = oom_badness(task, memcg, NULL, totalpages);
1593                         if (!points || points < chosen_points)
1594                                 continue;
1595                         /* Prefer thread group leaders for display purposes */
1596                         if (points == chosen_points &&
1597                             thread_group_leader(chosen))
1598                                 continue;
1599
1600                         if (chosen)
1601                                 put_task_struct(chosen);
1602                         chosen = task;
1603                         chosen_points = points;
1604                         get_task_struct(chosen);
1605                 }
1606                 css_task_iter_end(&it);
1607         }
1608
1609         if (!chosen)
1610                 return;
1611         points = chosen_points * 1000 / totalpages;
1612         oom_kill_process(chosen, gfp_mask, order, points, totalpages, memcg,
1613                          NULL, "Memory cgroup out of memory");
1614 }
1615
1616 #if MAX_NUMNODES > 1
1617
1618 /**
1619  * test_mem_cgroup_node_reclaimable
1620  * @memcg: the target memcg
1621  * @nid: the node ID to be checked.
1622  * @noswap : specify true here if the user wants flle only information.
1623  *
1624  * This function returns whether the specified memcg contains any
1625  * reclaimable pages on a node. Returns true if there are any reclaimable
1626  * pages in the node.
1627  */
1628 static bool test_mem_cgroup_node_reclaimable(struct mem_cgroup *memcg,
1629                 int nid, bool noswap)
1630 {
1631         if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_FILE))
1632                 return true;
1633         if (noswap || !total_swap_pages)
1634                 return false;
1635         if (mem_cgroup_node_nr_lru_pages(memcg, nid, LRU_ALL_ANON))
1636                 return true;
1637         return false;
1638
1639 }
1640
1641 /*
1642  * Always updating the nodemask is not very good - even if we have an empty
1643  * list or the wrong list here, we can start from some node and traverse all
1644  * nodes based on the zonelist. So update the list loosely once per 10 secs.
1645  *
1646  */
1647 static void mem_cgroup_may_update_nodemask(struct mem_cgroup *memcg)
1648 {
1649         int nid;
1650         /*
1651          * numainfo_events > 0 means there was at least NUMAINFO_EVENTS_TARGET
1652          * pagein/pageout changes since the last update.
1653          */
1654         if (!atomic_read(&memcg->numainfo_events))
1655                 return;
1656         if (atomic_inc_return(&memcg->numainfo_updating) > 1)
1657                 return;
1658
1659         /* make a nodemask where this memcg uses memory from */
1660         memcg->scan_nodes = node_states[N_MEMORY];
1661
1662         for_each_node_mask(nid, node_states[N_MEMORY]) {
1663
1664                 if (!test_mem_cgroup_node_reclaimable(memcg, nid, false))
1665                         node_clear(nid, memcg->scan_nodes);
1666         }
1667
1668         atomic_set(&memcg->numainfo_events, 0);
1669         atomic_set(&memcg->numainfo_updating, 0);
1670 }
1671
1672 /*
1673  * Selecting a node where we start reclaim from. Because what we need is just
1674  * reducing usage counter, start from anywhere is O,K. Considering
1675  * memory reclaim from current node, there are pros. and cons.
1676  *
1677  * Freeing memory from current node means freeing memory from a node which
1678  * we'll use or we've used. So, it may make LRU bad. And if several threads
1679  * hit limits, it will see a contention on a node. But freeing from remote
1680  * node means more costs for memory reclaim because of memory latency.
1681  *
1682  * Now, we use round-robin. Better algorithm is welcomed.
1683  */
1684 int mem_cgroup_select_victim_node(struct mem_cgroup *memcg)
1685 {
1686         int node;
1687
1688         mem_cgroup_may_update_nodemask(memcg);
1689         node = memcg->last_scanned_node;
1690
1691         node = next_node(node, memcg->scan_nodes);
1692         if (node == MAX_NUMNODES)
1693                 node = first_node(memcg->scan_nodes);
1694         /*
1695          * We call this when we hit limit, not when pages are added to LRU.
1696          * No LRU may hold pages because all pages are UNEVICTABLE or
1697          * memcg is too small and all pages are not on LRU. In that case,
1698          * we use curret node.
1699          */
1700         if (unlikely(node == MAX_NUMNODES))
1701                 node = numa_node_id();
1702
1703         memcg->last_scanned_node = node;
1704         return node;
1705 }
1706 #else
1707 int mem_cgroup_select_victim_node(struct mem_cgroup *memcg)
1708 {
1709         return 0;
1710 }
1711 #endif
1712
1713 static int mem_cgroup_soft_reclaim(struct mem_cgroup *root_memcg,
1714                                    struct zone *zone,
1715                                    gfp_t gfp_mask,
1716                                    unsigned long *total_scanned)
1717 {
1718         struct mem_cgroup *victim = NULL;
1719         int total = 0;
1720         int loop = 0;
1721         unsigned long excess;
1722         unsigned long nr_scanned;
1723         struct mem_cgroup_reclaim_cookie reclaim = {
1724                 .zone = zone,
1725                 .priority = 0,
1726         };
1727
1728         excess = soft_limit_excess(root_memcg);
1729
1730         while (1) {
1731                 victim = mem_cgroup_iter(root_memcg, victim, &reclaim);
1732                 if (!victim) {
1733                         loop++;
1734                         if (loop >= 2) {
1735                                 /*
1736                                  * If we have not been able to reclaim
1737                                  * anything, it might because there are
1738                                  * no reclaimable pages under this hierarchy
1739                                  */
1740                                 if (!total)
1741                                         break;
1742                                 /*
1743                                  * We want to do more targeted reclaim.
1744                                  * excess >> 2 is not to excessive so as to
1745                                  * reclaim too much, nor too less that we keep
1746                                  * coming back to reclaim from this cgroup
1747                                  */
1748                                 if (total >= (excess >> 2) ||
1749                                         (loop > MEM_CGROUP_MAX_RECLAIM_LOOPS))
1750                                         break;
1751                         }
1752                         continue;
1753                 }
1754                 total += mem_cgroup_shrink_node_zone(victim, gfp_mask, false,
1755                                                      zone, &nr_scanned);
1756                 *total_scanned += nr_scanned;
1757                 if (!soft_limit_excess(root_memcg))
1758                         break;
1759         }
1760         mem_cgroup_iter_break(root_memcg, victim);
1761         return total;
1762 }
1763
1764 #ifdef CONFIG_LOCKDEP
1765 static struct lockdep_map memcg_oom_lock_dep_map = {
1766         .name = "memcg_oom_lock",
1767 };
1768 #endif
1769
1770 static DEFINE_SPINLOCK(memcg_oom_lock);
1771
1772 /*
1773  * Check OOM-Killer is already running under our hierarchy.
1774  * If someone is running, return false.
1775  */
1776 static bool mem_cgroup_oom_trylock(struct mem_cgroup *memcg)
1777 {
1778         struct mem_cgroup *iter, *failed = NULL;
1779
1780         spin_lock(&memcg_oom_lock);
1781
1782         for_each_mem_cgroup_tree(iter, memcg) {
1783                 if (iter->oom_lock) {
1784                         /*
1785                          * this subtree of our hierarchy is already locked
1786                          * so we cannot give a lock.
1787                          */
1788                         failed = iter;
1789                         mem_cgroup_iter_break(memcg, iter);
1790                         break;
1791                 } else
1792                         iter->oom_lock = true;
1793         }
1794
1795         if (failed) {
1796                 /*
1797                  * OK, we failed to lock the whole subtree so we have
1798                  * to clean up what we set up to the failing subtree
1799                  */
1800                 for_each_mem_cgroup_tree(iter, memcg) {
1801                         if (iter == failed) {
1802                                 mem_cgroup_iter_break(memcg, iter);
1803                                 break;
1804                         }
1805                         iter->oom_lock = false;
1806                 }
1807         } else
1808                 mutex_acquire(&memcg_oom_lock_dep_map, 0, 1, _RET_IP_);
1809
1810         spin_unlock(&memcg_oom_lock);
1811
1812         return !failed;
1813 }
1814
1815 static void mem_cgroup_oom_unlock(struct mem_cgroup *memcg)
1816 {
1817         struct mem_cgroup *iter;
1818
1819         spin_lock(&memcg_oom_lock);
1820         mutex_release(&memcg_oom_lock_dep_map, 1, _RET_IP_);
1821         for_each_mem_cgroup_tree(iter, memcg)
1822                 iter->oom_lock = false;
1823         spin_unlock(&memcg_oom_lock);
1824 }
1825
1826 static void mem_cgroup_mark_under_oom(struct mem_cgroup *memcg)
1827 {
1828         struct mem_cgroup *iter;
1829
1830         for_each_mem_cgroup_tree(iter, memcg)
1831                 atomic_inc(&iter->under_oom);
1832 }
1833
1834 static void mem_cgroup_unmark_under_oom(struct mem_cgroup *memcg)
1835 {
1836         struct mem_cgroup *iter;
1837
1838         /*
1839          * When a new child is created while the hierarchy is under oom,
1840          * mem_cgroup_oom_lock() may not be called. We have to use
1841          * atomic_add_unless() here.
1842          */
1843         for_each_mem_cgroup_tree(iter, memcg)
1844                 atomic_add_unless(&iter->under_oom, -1, 0);
1845 }
1846
1847 static DECLARE_WAIT_QUEUE_HEAD(memcg_oom_waitq);
1848
1849 struct oom_wait_info {
1850         struct mem_cgroup *memcg;
1851         wait_queue_t    wait;
1852 };
1853
1854 static int memcg_oom_wake_function(wait_queue_t *wait,
1855         unsigned mode, int sync, void *arg)
1856 {
1857         struct mem_cgroup *wake_memcg = (struct mem_cgroup *)arg;
1858         struct mem_cgroup *oom_wait_memcg;
1859         struct oom_wait_info *oom_wait_info;
1860
1861         oom_wait_info = container_of(wait, struct oom_wait_info, wait);
1862         oom_wait_memcg = oom_wait_info->memcg;
1863
1864         if (!mem_cgroup_is_descendant(wake_memcg, oom_wait_memcg) &&
1865             !mem_cgroup_is_descendant(oom_wait_memcg, wake_memcg))
1866                 return 0;
1867         return autoremove_wake_function(wait, mode, sync, arg);
1868 }
1869
1870 static void memcg_wakeup_oom(struct mem_cgroup *memcg)
1871 {
1872         atomic_inc(&memcg->oom_wakeups);
1873         /* for filtering, pass "memcg" as argument. */
1874         __wake_up(&memcg_oom_waitq, TASK_NORMAL, 0, memcg);
1875 }
1876
1877 static void memcg_oom_recover(struct mem_cgroup *memcg)
1878 {
1879         if (memcg && atomic_read(&memcg->under_oom))
1880                 memcg_wakeup_oom(memcg);
1881 }
1882
1883 static void mem_cgroup_oom(struct mem_cgroup *memcg, gfp_t mask, int order)
1884 {
1885         if (!current->memcg_oom.may_oom)
1886                 return;
1887         /*
1888          * We are in the middle of the charge context here, so we
1889          * don't want to block when potentially sitting on a callstack
1890          * that holds all kinds of filesystem and mm locks.
1891          *
1892          * Also, the caller may handle a failed allocation gracefully
1893          * (like optional page cache readahead) and so an OOM killer
1894          * invocation might not even be necessary.
1895          *
1896          * That's why we don't do anything here except remember the
1897          * OOM context and then deal with it at the end of the page
1898          * fault when the stack is unwound, the locks are released,
1899          * and when we know whether the fault was overall successful.
1900          */
1901         css_get(&memcg->css);
1902         current->memcg_oom.memcg = memcg;
1903         current->memcg_oom.gfp_mask = mask;
1904         current->memcg_oom.order = order;
1905 }
1906
1907 /**
1908  * mem_cgroup_oom_synchronize - complete memcg OOM handling
1909  * @handle: actually kill/wait or just clean up the OOM state
1910  *
1911  * This has to be called at the end of a page fault if the memcg OOM
1912  * handler was enabled.
1913  *
1914  * Memcg supports userspace OOM handling where failed allocations must
1915  * sleep on a waitqueue until the userspace task resolves the
1916  * situation.  Sleeping directly in the charge context with all kinds
1917  * of locks held is not a good idea, instead we remember an OOM state
1918  * in the task and mem_cgroup_oom_synchronize() has to be called at
1919  * the end of the page fault to complete the OOM handling.
1920  *
1921  * Returns %true if an ongoing memcg OOM situation was detected and
1922  * completed, %false otherwise.
1923  */
1924 bool mem_cgroup_oom_synchronize(bool handle)
1925 {
1926         struct mem_cgroup *memcg = current->memcg_oom.memcg;
1927         struct oom_wait_info owait;
1928         bool locked;
1929
1930         /* OOM is global, do not handle */
1931         if (!memcg)
1932                 return false;
1933
1934         if (!handle || oom_killer_disabled)
1935                 goto cleanup;
1936
1937         owait.memcg = memcg;
1938         owait.wait.flags = 0;
1939         owait.wait.func = memcg_oom_wake_function;
1940         owait.wait.private = current;
1941         INIT_LIST_HEAD(&owait.wait.task_list);
1942
1943         prepare_to_wait(&memcg_oom_waitq, &owait.wait, TASK_KILLABLE);
1944         mem_cgroup_mark_under_oom(memcg);
1945
1946         locked = mem_cgroup_oom_trylock(memcg);
1947
1948         if (locked)
1949                 mem_cgroup_oom_notify(memcg);
1950
1951         if (locked && !memcg->oom_kill_disable) {
1952                 mem_cgroup_unmark_under_oom(memcg);
1953                 finish_wait(&memcg_oom_waitq, &owait.wait);
1954                 mem_cgroup_out_of_memory(memcg, current->memcg_oom.gfp_mask,
1955                                          current->memcg_oom.order);
1956         } else {
1957                 schedule();
1958                 mem_cgroup_unmark_under_oom(memcg);
1959                 finish_wait(&memcg_oom_waitq, &owait.wait);
1960         }
1961
1962         if (locked) {
1963                 mem_cgroup_oom_unlock(memcg);
1964                 /*
1965                  * There is no guarantee that an OOM-lock contender
1966                  * sees the wakeups triggered by the OOM kill
1967                  * uncharges.  Wake any sleepers explicitely.
1968                  */
1969                 memcg_oom_recover(memcg);
1970         }
1971 cleanup:
1972         current->memcg_oom.memcg = NULL;
1973         css_put(&memcg->css);
1974         return true;
1975 }
1976
1977 /**
1978  * mem_cgroup_begin_page_stat - begin a page state statistics transaction
1979  * @page: page that is going to change accounted state
1980  *
1981  * This function must mark the beginning of an accounted page state
1982  * change to prevent double accounting when the page is concurrently
1983  * being moved to another memcg:
1984  *
1985  *   memcg = mem_cgroup_begin_page_stat(page);
1986  *   if (TestClearPageState(page))
1987  *     mem_cgroup_update_page_stat(memcg, state, -1);
1988  *   mem_cgroup_end_page_stat(memcg);
1989  */
1990 struct mem_cgroup *mem_cgroup_begin_page_stat(struct page *page)
1991 {
1992         struct mem_cgroup *memcg;
1993         unsigned long flags;
1994
1995         /*
1996          * The RCU lock is held throughout the transaction.  The fast
1997          * path can get away without acquiring the memcg->move_lock
1998          * because page moving starts with an RCU grace period.
1999          *
2000          * The RCU lock also protects the memcg from being freed when
2001          * the page state that is going to change is the only thing
2002          * preventing the page from being uncharged.
2003          * E.g. end-writeback clearing PageWriteback(), which allows
2004          * migration to go ahead and uncharge the page before the
2005          * account transaction might be complete.
2006          */
2007         rcu_read_lock();
2008
2009         if (mem_cgroup_disabled())
2010                 return NULL;
2011 again:
2012         memcg = page->mem_cgroup;
2013         if (unlikely(!memcg))
2014                 return NULL;
2015
2016         if (atomic_read(&memcg->moving_account) <= 0)
2017                 return memcg;
2018
2019         spin_lock_irqsave(&memcg->move_lock, flags);
2020         if (memcg != page->mem_cgroup) {
2021                 spin_unlock_irqrestore(&memcg->move_lock, flags);
2022                 goto again;
2023         }
2024
2025         /*
2026          * When charge migration first begins, we can have locked and
2027          * unlocked page stat updates happening concurrently.  Track
2028          * the task who has the lock for mem_cgroup_end_page_stat().
2029          */
2030         memcg->move_lock_task = current;
2031         memcg->move_lock_flags = flags;
2032
2033         return memcg;
2034 }
2035
2036 /**
2037  * mem_cgroup_end_page_stat - finish a page state statistics transaction
2038  * @memcg: the memcg that was accounted against
2039  */
2040 void mem_cgroup_end_page_stat(struct mem_cgroup *memcg)
2041 {
2042         if (memcg && memcg->move_lock_task == current) {
2043                 unsigned long flags = memcg->move_lock_flags;
2044
2045                 memcg->move_lock_task = NULL;
2046                 memcg->move_lock_flags = 0;
2047
2048                 spin_unlock_irqrestore(&memcg->move_lock, flags);
2049         }
2050
2051         rcu_read_unlock();
2052 }
2053
2054 /**
2055  * mem_cgroup_update_page_stat - update page state statistics
2056  * @memcg: memcg to account against
2057  * @idx: page state item to account
2058  * @val: number of pages (positive or negative)
2059  *
2060  * See mem_cgroup_begin_page_stat() for locking requirements.
2061  */
2062 void mem_cgroup_update_page_stat(struct mem_cgroup *memcg,
2063                                  enum mem_cgroup_stat_index idx, int val)
2064 {
2065         VM_BUG_ON(!rcu_read_lock_held());
2066
2067         if (memcg)
2068                 this_cpu_add(memcg->stat->count[idx], val);
2069 }
2070
2071 /*
2072  * size of first charge trial. "32" comes from vmscan.c's magic value.
2073  * TODO: maybe necessary to use big numbers in big irons.
2074  */
2075 #define CHARGE_BATCH    32U
2076 struct memcg_stock_pcp {
2077         struct mem_cgroup *cached; /* this never be root cgroup */
2078         unsigned int nr_pages;
2079         struct work_struct work;
2080         unsigned long flags;
2081 #define FLUSHING_CACHED_CHARGE  0
2082 };
2083 static DEFINE_PER_CPU(struct memcg_stock_pcp, memcg_stock);
2084 static DEFINE_MUTEX(percpu_charge_mutex);
2085
2086 /**
2087  * consume_stock: Try to consume stocked charge on this cpu.
2088  * @memcg: memcg to consume from.
2089  * @nr_pages: how many pages to charge.
2090  *
2091  * The charges will only happen if @memcg matches the current cpu's memcg
2092  * stock, and at least @nr_pages are available in that stock.  Failure to
2093  * service an allocation will refill the stock.
2094  *
2095  * returns true if successful, false otherwise.
2096  */
2097 static bool consume_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
2098 {
2099         struct memcg_stock_pcp *stock;
2100         bool ret = false;
2101
2102         if (nr_pages > CHARGE_BATCH)
2103                 return ret;
2104
2105         stock = &get_cpu_var(memcg_stock);
2106         if (memcg == stock->cached && stock->nr_pages >= nr_pages) {
2107                 stock->nr_pages -= nr_pages;
2108                 ret = true;
2109         }
2110         put_cpu_var(memcg_stock);
2111         return ret;
2112 }
2113
2114 /*
2115  * Returns stocks cached in percpu and reset cached information.
2116  */
2117 static void drain_stock(struct memcg_stock_pcp *stock)
2118 {
2119         struct mem_cgroup *old = stock->cached;
2120
2121         if (stock->nr_pages) {
2122                 page_counter_uncharge(&old->memory, stock->nr_pages);
2123                 if (do_swap_account)
2124                         page_counter_uncharge(&old->memsw, stock->nr_pages);
2125                 css_put_many(&old->css, stock->nr_pages);
2126                 stock->nr_pages = 0;
2127         }
2128         stock->cached = NULL;
2129 }
2130
2131 /*
2132  * This must be called under preempt disabled or must be called by
2133  * a thread which is pinned to local cpu.
2134  */
2135 static void drain_local_stock(struct work_struct *dummy)
2136 {
2137         struct memcg_stock_pcp *stock = this_cpu_ptr(&memcg_stock);
2138         drain_stock(stock);
2139         clear_bit(FLUSHING_CACHED_CHARGE, &stock->flags);
2140 }
2141
2142 /*
2143  * Cache charges(val) to local per_cpu area.
2144  * This will be consumed by consume_stock() function, later.
2145  */
2146 static void refill_stock(struct mem_cgroup *memcg, unsigned int nr_pages)
2147 {
2148         struct memcg_stock_pcp *stock = &get_cpu_var(memcg_stock);
2149
2150         if (stock->cached != memcg) { /* reset if necessary */
2151                 drain_stock(stock);
2152                 stock->cached = memcg;
2153         }
2154         stock->nr_pages += nr_pages;
2155         put_cpu_var(memcg_stock);
2156 }
2157
2158 /*
2159  * Drains all per-CPU charge caches for given root_memcg resp. subtree
2160  * of the hierarchy under it.
2161  */
2162 static void drain_all_stock(struct mem_cgroup *root_memcg)
2163 {
2164         int cpu, curcpu;
2165
2166         /* If someone's already draining, avoid adding running more workers. */
2167         if (!mutex_trylock(&percpu_charge_mutex))
2168                 return;
2169         /* Notify other cpus that system-wide "drain" is running */
2170         get_online_cpus();
2171         curcpu = get_cpu();
2172         for_each_online_cpu(cpu) {
2173                 struct memcg_stock_pcp *stock = &per_cpu(memcg_stock, cpu);
2174                 struct mem_cgroup *memcg;
2175
2176                 memcg = stock->cached;
2177                 if (!memcg || !stock->nr_pages)
2178                         continue;
2179                 if (!mem_cgroup_is_descendant(memcg, root_memcg))
2180                         continue;
2181                 if (!test_and_set_bit(FLUSHING_CACHED_CHARGE, &stock->flags)) {
2182                         if (cpu == curcpu)
2183                                 drain_local_stock(&stock->work);
2184                         else
2185                                 schedule_work_on(cpu, &stock->work);
2186                 }
2187         }
2188         put_cpu();
2189         put_online_cpus();
2190         mutex_unlock(&percpu_charge_mutex);
2191 }
2192
2193 /*
2194  * This function drains percpu counter value from DEAD cpu and
2195  * move it to local cpu. Note that this function can be preempted.
2196  */
2197 static void mem_cgroup_drain_pcp_counter(struct mem_cgroup *memcg, int cpu)
2198 {
2199         int i;
2200
2201         spin_lock(&memcg->pcp_counter_lock);
2202         for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) {
2203                 long x = per_cpu(memcg->stat->count[i], cpu);
2204
2205                 per_cpu(memcg->stat->count[i], cpu) = 0;
2206                 memcg->nocpu_base.count[i] += x;
2207         }
2208         for (i = 0; i < MEM_CGROUP_EVENTS_NSTATS; i++) {
2209                 unsigned long x = per_cpu(memcg->stat->events[i], cpu);
2210
2211                 per_cpu(memcg->stat->events[i], cpu) = 0;
2212                 memcg->nocpu_base.events[i] += x;
2213         }
2214         spin_unlock(&memcg->pcp_counter_lock);
2215 }
2216
2217 static int memcg_cpu_hotplug_callback(struct notifier_block *nb,
2218                                         unsigned long action,
2219                                         void *hcpu)
2220 {
2221         int cpu = (unsigned long)hcpu;
2222         struct memcg_stock_pcp *stock;
2223         struct mem_cgroup *iter;
2224
2225         if (action == CPU_ONLINE)
2226                 return NOTIFY_OK;
2227
2228         if (action != CPU_DEAD && action != CPU_DEAD_FROZEN)
2229                 return NOTIFY_OK;
2230
2231         for_each_mem_cgroup(iter)
2232                 mem_cgroup_drain_pcp_counter(iter, cpu);
2233
2234         stock = &per_cpu(memcg_stock, cpu);
2235         drain_stock(stock);
2236         return NOTIFY_OK;
2237 }
2238
2239 static int try_charge(struct mem_cgroup *memcg, gfp_t gfp_mask,
2240                       unsigned int nr_pages)
2241 {
2242         unsigned int batch = max(CHARGE_BATCH, nr_pages);
2243         int nr_retries = MEM_CGROUP_RECLAIM_RETRIES;
2244         struct mem_cgroup *mem_over_limit;
2245         struct page_counter *counter;
2246         unsigned long nr_reclaimed;
2247         bool may_swap = true;
2248         bool drained = false;
2249         int ret = 0;
2250
2251         if (mem_cgroup_is_root(memcg))
2252                 goto done;
2253 retry:
2254         if (consume_stock(memcg, nr_pages))
2255                 goto done;
2256
2257         if (!do_swap_account ||
2258             !page_counter_try_charge(&memcg->memsw, batch, &counter)) {
2259                 if (!page_counter_try_charge(&memcg->memory, batch, &counter))
2260                         goto done_restock;
2261                 if (do_swap_account)
2262                         page_counter_uncharge(&memcg->memsw, batch);
2263                 mem_over_limit = mem_cgroup_from_counter(counter, memory);
2264         } else {
2265                 mem_over_limit = mem_cgroup_from_counter(counter, memsw);
2266                 may_swap = false;
2267         }
2268
2269         if (batch > nr_pages) {
2270                 batch = nr_pages;
2271                 goto retry;
2272         }
2273
2274         /*
2275          * Unlike in global OOM situations, memcg is not in a physical
2276          * memory shortage.  Allow dying and OOM-killed tasks to
2277          * bypass the last charges so that they can exit quickly and
2278          * free their memory.
2279          */
2280         if (unlikely(test_thread_flag(TIF_MEMDIE) ||
2281                      fatal_signal_pending(current) ||
2282                      current->flags & PF_EXITING))
2283                 goto bypass;
2284
2285         if (unlikely(task_in_memcg_oom(current)))
2286                 goto nomem;
2287
2288         if (!(gfp_mask & __GFP_WAIT))
2289                 goto nomem;
2290
2291         mem_cgroup_events(mem_over_limit, MEMCG_MAX, 1);
2292
2293         nr_reclaimed = try_to_free_mem_cgroup_pages(mem_over_limit, nr_pages,
2294                                                     gfp_mask, may_swap);
2295
2296         if (mem_cgroup_margin(mem_over_limit) >= nr_pages)
2297                 goto retry;
2298
2299         if (!drained) {
2300                 drain_all_stock(mem_over_limit);
2301                 drained = true;
2302                 goto retry;
2303         }
2304
2305         if (gfp_mask & __GFP_NORETRY)
2306                 goto nomem;
2307         /*
2308          * Even though the limit is exceeded at this point, reclaim
2309          * may have been able to free some pages.  Retry the charge
2310          * before killing the task.
2311          *
2312          * Only for regular pages, though: huge pages are rather
2313          * unlikely to succeed so close to the limit, and we fall back
2314          * to regular pages anyway in case of failure.
2315          */
2316         if (nr_reclaimed && nr_pages <= (1 << PAGE_ALLOC_COSTLY_ORDER))
2317                 goto retry;
2318         /*
2319          * At task move, charge accounts can be doubly counted. So, it's
2320          * better to wait until the end of task_move if something is going on.
2321          */
2322         if (mem_cgroup_wait_acct_move(mem_over_limit))
2323                 goto retry;
2324
2325         if (nr_retries--)
2326                 goto retry;
2327
2328         if (gfp_mask & __GFP_NOFAIL)
2329                 goto bypass;
2330
2331         if (fatal_signal_pending(current))
2332                 goto bypass;
2333
2334         mem_cgroup_events(mem_over_limit, MEMCG_OOM, 1);
2335
2336         mem_cgroup_oom(mem_over_limit, gfp_mask, get_order(nr_pages));
2337 nomem:
2338         if (!(gfp_mask & __GFP_NOFAIL))
2339                 return -ENOMEM;
2340 bypass:
2341         return -EINTR;
2342
2343 done_restock:
2344         css_get_many(&memcg->css, batch);
2345         if (batch > nr_pages)
2346                 refill_stock(memcg, batch - nr_pages);
2347         /*
2348          * If the hierarchy is above the normal consumption range,
2349          * make the charging task trim their excess contribution.
2350          */
2351         do {
2352                 if (page_counter_read(&memcg->memory) <= memcg->high)
2353                         continue;
2354                 mem_cgroup_events(memcg, MEMCG_HIGH, 1);
2355                 try_to_free_mem_cgroup_pages(memcg, nr_pages, gfp_mask, true);
2356         } while ((memcg = parent_mem_cgroup(memcg)));
2357 done:
2358         return ret;
2359 }
2360
2361 static void cancel_charge(struct mem_cgroup *memcg, unsigned int nr_pages)
2362 {
2363         if (mem_cgroup_is_root(memcg))
2364                 return;
2365
2366         page_counter_uncharge(&memcg->memory, nr_pages);
2367         if (do_swap_account)
2368                 page_counter_uncharge(&memcg->memsw, nr_pages);
2369
2370         css_put_many(&memcg->css, nr_pages);
2371 }
2372
2373 /*
2374  * A helper function to get mem_cgroup from ID. must be called under
2375  * rcu_read_lock().  The caller is responsible for calling
2376  * css_tryget_online() if the mem_cgroup is used for charging. (dropping
2377  * refcnt from swap can be called against removed memcg.)
2378  */
2379 static struct mem_cgroup *mem_cgroup_lookup(unsigned short id)
2380 {
2381         /* ID 0 is unused ID */
2382         if (!id)
2383                 return NULL;
2384         return mem_cgroup_from_id(id);
2385 }
2386
2387 /*
2388  * try_get_mem_cgroup_from_page - look up page's memcg association
2389  * @page: the page
2390  *
2391  * Look up, get a css reference, and return the memcg that owns @page.
2392  *
2393  * The page must be locked to prevent racing with swap-in and page
2394  * cache charges.  If coming from an unlocked page table, the caller
2395  * must ensure the page is on the LRU or this can race with charging.
2396  */
2397 struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page)
2398 {
2399         struct mem_cgroup *memcg;
2400         unsigned short id;
2401         swp_entry_t ent;
2402
2403         VM_BUG_ON_PAGE(!PageLocked(page), page);
2404
2405         memcg = page->mem_cgroup;
2406         if (memcg) {
2407                 if (!css_tryget_online(&memcg->css))
2408                         memcg = NULL;
2409         } else if (PageSwapCache(page)) {
2410                 ent.val = page_private(page);
2411                 id = lookup_swap_cgroup_id(ent);
2412                 rcu_read_lock();
2413                 memcg = mem_cgroup_lookup(id);
2414                 if (memcg && !css_tryget_online(&memcg->css))
2415                         memcg = NULL;
2416                 rcu_read_unlock();
2417         }
2418         return memcg;
2419 }
2420
2421 static void lock_page_lru(struct page *page, int *isolated)
2422 {
2423         struct zone *zone = page_zone(page);
2424
2425         spin_lock_irq(&zone->lru_lock);
2426         if (PageLRU(page)) {
2427                 struct lruvec *lruvec;
2428
2429                 lruvec = mem_cgroup_page_lruvec(page, zone);
2430                 ClearPageLRU(page);
2431                 del_page_from_lru_list(page, lruvec, page_lru(page));
2432                 *isolated = 1;
2433         } else
2434                 *isolated = 0;
2435 }
2436
2437 static void unlock_page_lru(struct page *page, int isolated)
2438 {
2439         struct zone *zone = page_zone(page);
2440
2441         if (isolated) {
2442                 struct lruvec *lruvec;
2443
2444                 lruvec = mem_cgroup_page_lruvec(page, zone);
2445                 VM_BUG_ON_PAGE(PageLRU(page), page);
2446                 SetPageLRU(page);
2447                 add_page_to_lru_list(page, lruvec, page_lru(page));
2448         }
2449         spin_unlock_irq(&zone->lru_lock);
2450 }
2451
2452 static void commit_charge(struct page *page, struct mem_cgroup *memcg,
2453                           bool lrucare)
2454 {
2455         int isolated;
2456
2457         VM_BUG_ON_PAGE(page->mem_cgroup, page);
2458
2459         /*
2460          * In some cases, SwapCache and FUSE(splice_buf->radixtree), the page
2461          * may already be on some other mem_cgroup's LRU.  Take care of it.
2462          */
2463         if (lrucare)
2464                 lock_page_lru(page, &isolated);
2465
2466         /*
2467          * Nobody should be changing or seriously looking at
2468          * page->mem_cgroup at this point:
2469          *
2470          * - the page is uncharged
2471          *
2472          * - the page is off-LRU
2473          *
2474          * - an anonymous fault has exclusive page access, except for
2475          *   a locked page table
2476          *
2477          * - a page cache insertion, a swapin fault, or a migration
2478          *   have the page locked
2479          */
2480         page->mem_cgroup = memcg;
2481
2482         if (lrucare)
2483                 unlock_page_lru(page, isolated);
2484 }
2485
2486 #ifdef CONFIG_MEMCG_KMEM
2487 int memcg_charge_kmem(struct mem_cgroup *memcg, gfp_t gfp,
2488                       unsigned long nr_pages)
2489 {
2490         struct page_counter *counter;
2491         int ret = 0;
2492
2493         ret = page_counter_try_charge(&memcg->kmem, nr_pages, &counter);
2494         if (ret < 0)
2495                 return ret;
2496
2497         ret = try_charge(memcg, gfp, nr_pages);
2498         if (ret == -EINTR)  {
2499                 /*
2500                  * try_charge() chose to bypass to root due to OOM kill or
2501                  * fatal signal.  Since our only options are to either fail
2502                  * the allocation or charge it to this cgroup, do it as a
2503                  * temporary condition. But we can't fail. From a kmem/slab
2504                  * perspective, the cache has already been selected, by
2505                  * mem_cgroup_kmem_get_cache(), so it is too late to change
2506                  * our minds.
2507                  *
2508                  * This condition will only trigger if the task entered
2509                  * memcg_charge_kmem in a sane state, but was OOM-killed
2510                  * during try_charge() above. Tasks that were already dying
2511                  * when the allocation triggers should have been already
2512                  * directed to the root cgroup in memcontrol.h
2513                  */
2514                 page_counter_charge(&memcg->memory, nr_pages);
2515                 if (do_swap_account)
2516                         page_counter_charge(&memcg->memsw, nr_pages);
2517                 css_get_many(&memcg->css, nr_pages);
2518                 ret = 0;
2519         } else if (ret)
2520                 page_counter_uncharge(&memcg->kmem, nr_pages);
2521
2522         return ret;
2523 }
2524
2525 void memcg_uncharge_kmem(struct mem_cgroup *memcg, unsigned long nr_pages)
2526 {
2527         page_counter_uncharge(&memcg->memory, nr_pages);
2528         if (do_swap_account)
2529                 page_counter_uncharge(&memcg->memsw, nr_pages);
2530
2531         page_counter_uncharge(&memcg->kmem, nr_pages);
2532
2533         css_put_many(&memcg->css, nr_pages);
2534 }
2535
2536 /*
2537  * helper for acessing a memcg's index. It will be used as an index in the
2538  * child cache array in kmem_cache, and also to derive its name. This function
2539  * will return -1 when this is not a kmem-limited memcg.
2540  */
2541 int memcg_cache_id(struct mem_cgroup *memcg)
2542 {
2543         return memcg ? memcg->kmemcg_id : -1;
2544 }
2545
2546 static int memcg_alloc_cache_id(void)
2547 {
2548         int id, size;
2549         int err;
2550
2551         id = ida_simple_get(&memcg_cache_ida,
2552                             0, MEMCG_CACHES_MAX_SIZE, GFP_KERNEL);
2553         if (id < 0)
2554                 return id;
2555
2556         if (id < memcg_nr_cache_ids)
2557                 return id;
2558
2559         /*
2560          * There's no space for the new id in memcg_caches arrays,
2561          * so we have to grow them.
2562          */
2563         down_write(&memcg_cache_ids_sem);
2564
2565         size = 2 * (id + 1);
2566         if (size < MEMCG_CACHES_MIN_SIZE)
2567                 size = MEMCG_CACHES_MIN_SIZE;
2568         else if (size > MEMCG_CACHES_MAX_SIZE)
2569                 size = MEMCG_CACHES_MAX_SIZE;
2570
2571         err = memcg_update_all_caches(size);
2572         if (!err)
2573                 err = memcg_update_all_list_lrus(size);
2574         if (!err)
2575                 memcg_nr_cache_ids = size;
2576
2577         up_write(&memcg_cache_ids_sem);
2578
2579         if (err) {
2580                 ida_simple_remove(&memcg_cache_ida, id);
2581                 return err;
2582         }
2583         return id;
2584 }
2585
2586 static void memcg_free_cache_id(int id)
2587 {
2588         ida_simple_remove(&memcg_cache_ida, id);
2589 }
2590
2591 struct memcg_kmem_cache_create_work {
2592         struct mem_cgroup *memcg;
2593         struct kmem_cache *cachep;
2594         struct work_struct work;
2595 };
2596
2597 static void memcg_kmem_cache_create_func(struct work_struct *w)
2598 {
2599         struct memcg_kmem_cache_create_work *cw =
2600                 container_of(w, struct memcg_kmem_cache_create_work, work);
2601         struct mem_cgroup *memcg = cw->memcg;
2602         struct kmem_cache *cachep = cw->cachep;
2603
2604         memcg_create_kmem_cache(memcg, cachep);
2605
2606         css_put(&memcg->css);
2607         kfree(cw);
2608 }
2609
2610 /*
2611  * Enqueue the creation of a per-memcg kmem_cache.
2612  */
2613 static void __memcg_schedule_kmem_cache_create(struct mem_cgroup *memcg,
2614                                                struct kmem_cache *cachep)
2615 {
2616         struct memcg_kmem_cache_create_work *cw;
2617
2618         cw = kmalloc(sizeof(*cw), GFP_NOWAIT);
2619         if (!cw)
2620                 return;
2621
2622         css_get(&memcg->css);
2623
2624         cw->memcg = memcg;
2625         cw->cachep = cachep;
2626         INIT_WORK(&cw->work, memcg_kmem_cache_create_func);
2627
2628         schedule_work(&cw->work);
2629 }
2630
2631 static void memcg_schedule_kmem_cache_create(struct mem_cgroup *memcg,
2632                                              struct kmem_cache *cachep)
2633 {
2634         /*
2635          * We need to stop accounting when we kmalloc, because if the
2636          * corresponding kmalloc cache is not yet created, the first allocation
2637          * in __memcg_schedule_kmem_cache_create will recurse.
2638          *
2639          * However, it is better to enclose the whole function. Depending on
2640          * the debugging options enabled, INIT_WORK(), for instance, can
2641          * trigger an allocation. This too, will make us recurse. Because at
2642          * this point we can't allow ourselves back into memcg_kmem_get_cache,
2643          * the safest choice is to do it like this, wrapping the whole function.
2644          */
2645         current->memcg_kmem_skip_account = 1;
2646         __memcg_schedule_kmem_cache_create(memcg, cachep);
2647         current->memcg_kmem_skip_account = 0;
2648 }
2649
2650 /*
2651  * Return the kmem_cache we're supposed to use for a slab allocation.
2652  * We try to use the current memcg's version of the cache.
2653  *
2654  * If the cache does not exist yet, if we are the first user of it,
2655  * we either create it immediately, if possible, or create it asynchronously
2656  * in a workqueue.
2657  * In the latter case, we will let the current allocation go through with
2658  * the original cache.
2659  *
2660  * Can't be called in interrupt context or from kernel threads.
2661  * This function needs to be called with rcu_read_lock() held.
2662  */
2663 struct kmem_cache *__memcg_kmem_get_cache(struct kmem_cache *cachep)
2664 {
2665         struct mem_cgroup *memcg;
2666         struct kmem_cache *memcg_cachep;
2667         int kmemcg_id;
2668
2669         VM_BUG_ON(!is_root_cache(cachep));
2670
2671         if (current->memcg_kmem_skip_account)
2672                 return cachep;
2673
2674         memcg = get_mem_cgroup_from_mm(current->mm);
2675         kmemcg_id = ACCESS_ONCE(memcg->kmemcg_id);
2676         if (kmemcg_id < 0)
2677                 goto out;
2678
2679         memcg_cachep = cache_from_memcg_idx(cachep, kmemcg_id);
2680         if (likely(memcg_cachep))
2681                 return memcg_cachep;
2682
2683         /*
2684          * If we are in a safe context (can wait, and not in interrupt
2685          * context), we could be be predictable and return right away.
2686          * This would guarantee that the allocation being performed
2687          * already belongs in the new cache.
2688          *
2689          * However, there are some clashes that can arrive from locking.
2690          * For instance, because we acquire the slab_mutex while doing
2691          * memcg_create_kmem_cache, this means no further allocation
2692          * could happen with the slab_mutex held. So it's better to
2693          * defer everything.
2694          */
2695         memcg_schedule_kmem_cache_create(memcg, cachep);
2696 out:
2697         css_put(&memcg->css);
2698         return cachep;
2699 }
2700
2701 void __memcg_kmem_put_cache(struct kmem_cache *cachep)
2702 {
2703         if (!is_root_cache(cachep))
2704                 css_put(&cachep->memcg_params.memcg->css);
2705 }
2706
2707 /*
2708  * We need to verify if the allocation against current->mm->owner's memcg is
2709  * possible for the given order. But the page is not allocated yet, so we'll
2710  * need a further commit step to do the final arrangements.
2711  *
2712  * It is possible for the task to switch cgroups in this mean time, so at
2713  * commit time, we can't rely on task conversion any longer.  We'll then use
2714  * the handle argument to return to the caller which cgroup we should commit
2715  * against. We could also return the memcg directly and avoid the pointer
2716  * passing, but a boolean return value gives better semantics considering
2717  * the compiled-out case as well.
2718  *
2719  * Returning true means the allocation is possible.
2720  */
2721 bool
2722 __memcg_kmem_newpage_charge(gfp_t gfp, struct mem_cgroup **_memcg, int order)
2723 {
2724         struct mem_cgroup *memcg;
2725         int ret;
2726
2727         *_memcg = NULL;
2728
2729         memcg = get_mem_cgroup_from_mm(current->mm);
2730
2731         if (!memcg_kmem_is_active(memcg)) {
2732                 css_put(&memcg->css);
2733                 return true;
2734         }
2735
2736         ret = memcg_charge_kmem(memcg, gfp, 1 << order);
2737         if (!ret)
2738                 *_memcg = memcg;
2739
2740         css_put(&memcg->css);
2741         return (ret == 0);
2742 }
2743
2744 void __memcg_kmem_commit_charge(struct page *page, struct mem_cgroup *memcg,
2745                               int order)
2746 {
2747         VM_BUG_ON(mem_cgroup_is_root(memcg));
2748
2749         /* The page allocation failed. Revert */
2750         if (!page) {
2751                 memcg_uncharge_kmem(memcg, 1 << order);
2752                 return;
2753         }
2754         page->mem_cgroup = memcg;
2755 }
2756
2757 void __memcg_kmem_uncharge_pages(struct page *page, int order)
2758 {
2759         struct mem_cgroup *memcg = page->mem_cgroup;
2760
2761         if (!memcg)
2762                 return;
2763
2764         VM_BUG_ON_PAGE(mem_cgroup_is_root(memcg), page);
2765
2766         memcg_uncharge_kmem(memcg, 1 << order);
2767         page->mem_cgroup = NULL;
2768 }
2769
2770 struct mem_cgroup *__mem_cgroup_from_kmem(void *ptr)
2771 {
2772         struct mem_cgroup *memcg = NULL;
2773         struct kmem_cache *cachep;
2774         struct page *page;
2775
2776         page = virt_to_head_page(ptr);
2777         if (PageSlab(page)) {
2778                 cachep = page->slab_cache;
2779                 if (!is_root_cache(cachep))
2780                         memcg = cachep->memcg_params.memcg;
2781         } else
2782                 /* page allocated by alloc_kmem_pages */
2783                 memcg = page->mem_cgroup;
2784
2785         return memcg;
2786 }
2787 #endif /* CONFIG_MEMCG_KMEM */
2788
2789 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
2790
2791 /*
2792  * Because tail pages are not marked as "used", set it. We're under
2793  * zone->lru_lock, 'splitting on pmd' and compound_lock.
2794  * charge/uncharge will be never happen and move_account() is done under
2795  * compound_lock(), so we don't have to take care of races.
2796  */
2797 void mem_cgroup_split_huge_fixup(struct page *head)
2798 {
2799         int i;
2800
2801         if (mem_cgroup_disabled())
2802                 return;
2803
2804         for (i = 1; i < HPAGE_PMD_NR; i++)
2805                 head[i].mem_cgroup = head->mem_cgroup;
2806
2807         __this_cpu_sub(head->mem_cgroup->stat->count[MEM_CGROUP_STAT_RSS_HUGE],
2808                        HPAGE_PMD_NR);
2809 }
2810 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
2811
2812 /**
2813  * mem_cgroup_move_account - move account of the page
2814  * @page: the page
2815  * @nr_pages: number of regular pages (>1 for huge pages)
2816  * @from: mem_cgroup which the page is moved from.
2817  * @to: mem_cgroup which the page is moved to. @from != @to.
2818  *
2819  * The caller must confirm following.
2820  * - page is not on LRU (isolate_page() is useful.)
2821  * - compound_lock is held when nr_pages > 1
2822  *
2823  * This function doesn't do "charge" to new cgroup and doesn't do "uncharge"
2824  * from old cgroup.
2825  */
2826 static int mem_cgroup_move_account(struct page *page,
2827                                    unsigned int nr_pages,
2828                                    struct mem_cgroup *from,
2829                                    struct mem_cgroup *to)
2830 {
2831         unsigned long flags;
2832         int ret;
2833
2834         VM_BUG_ON(from == to);
2835         VM_BUG_ON_PAGE(PageLRU(page), page);
2836         /*
2837          * The page is isolated from LRU. So, collapse function
2838          * will not handle this page. But page splitting can happen.
2839          * Do this check under compound_page_lock(). The caller should
2840          * hold it.
2841          */
2842         ret = -EBUSY;
2843         if (nr_pages > 1 && !PageTransHuge(page))
2844                 goto out;
2845
2846         /*
2847          * Prevent mem_cgroup_migrate() from looking at page->mem_cgroup
2848          * of its source page while we change it: page migration takes
2849          * both pages off the LRU, but page cache replacement doesn't.
2850          */
2851         if (!trylock_page(page))
2852                 goto out;
2853
2854         ret = -EINVAL;
2855         if (page->mem_cgroup != from)
2856                 goto out_unlock;
2857
2858         spin_lock_irqsave(&from->move_lock, flags);
2859
2860         if (!PageAnon(page) && page_mapped(page)) {
2861                 __this_cpu_sub(from->stat->count[MEM_CGROUP_STAT_FILE_MAPPED],
2862                                nr_pages);
2863                 __this_cpu_add(to->stat->count[MEM_CGROUP_STAT_FILE_MAPPED],
2864                                nr_pages);
2865         }
2866
2867         if (PageWriteback(page)) {
2868                 __this_cpu_sub(from->stat->count[MEM_CGROUP_STAT_WRITEBACK],
2869                                nr_pages);
2870                 __this_cpu_add(to->stat->count[MEM_CGROUP_STAT_WRITEBACK],
2871                                nr_pages);
2872         }
2873
2874         /*
2875          * It is safe to change page->mem_cgroup here because the page
2876          * is referenced, charged, and isolated - we can't race with
2877          * uncharging, charging, migration, or LRU putback.
2878          */
2879
2880         /* caller should have done css_get */
2881         page->mem_cgroup = to;
2882         spin_unlock_irqrestore(&from->move_lock, flags);
2883
2884         ret = 0;
2885
2886         local_irq_disable();
2887         mem_cgroup_charge_statistics(to, page, nr_pages);
2888         memcg_check_events(to, page);
2889         mem_cgroup_charge_statistics(from, page, -nr_pages);
2890         memcg_check_events(from, page);
2891         local_irq_enable();
2892 out_unlock:
2893         unlock_page(page);
2894 out:
2895         return ret;
2896 }
2897
2898 #ifdef CONFIG_MEMCG_SWAP
2899 static void mem_cgroup_swap_statistics(struct mem_cgroup *memcg,
2900                                          bool charge)
2901 {
2902         int val = (charge) ? 1 : -1;
2903         this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_SWAP], val);
2904 }
2905
2906 /**
2907  * mem_cgroup_move_swap_account - move swap charge and swap_cgroup's record.
2908  * @entry: swap entry to be moved
2909  * @from:  mem_cgroup which the entry is moved from
2910  * @to:  mem_cgroup which the entry is moved to
2911  *
2912  * It succeeds only when the swap_cgroup's record for this entry is the same
2913  * as the mem_cgroup's id of @from.
2914  *
2915  * Returns 0 on success, -EINVAL on failure.
2916  *
2917  * The caller must have charged to @to, IOW, called page_counter_charge() about
2918  * both res and memsw, and called css_get().
2919  */
2920 static int mem_cgroup_move_swap_account(swp_entry_t entry,
2921                                 struct mem_cgroup *from, struct mem_cgroup *to)
2922 {
2923         unsigned short old_id, new_id;
2924
2925         old_id = mem_cgroup_id(from);
2926         new_id = mem_cgroup_id(to);
2927
2928         if (swap_cgroup_cmpxchg(entry, old_id, new_id) == old_id) {
2929                 mem_cgroup_swap_statistics(from, false);
2930                 mem_cgroup_swap_statistics(to, true);
2931                 return 0;
2932         }
2933         return -EINVAL;
2934 }
2935 #else
2936 static inline int mem_cgroup_move_swap_account(swp_entry_t entry,
2937                                 struct mem_cgroup *from, struct mem_cgroup *to)
2938 {
2939         return -EINVAL;
2940 }
2941 #endif
2942
2943 static DEFINE_MUTEX(memcg_limit_mutex);
2944
2945 static int mem_cgroup_resize_limit(struct mem_cgroup *memcg,
2946                                    unsigned long limit)
2947 {
2948         unsigned long curusage;
2949         unsigned long oldusage;
2950         bool enlarge = false;
2951         int retry_count;
2952         int ret;
2953
2954         /*
2955          * For keeping hierarchical_reclaim simple, how long we should retry
2956          * is depends on callers. We set our retry-count to be function
2957          * of # of children which we should visit in this loop.
2958          */
2959         retry_count = MEM_CGROUP_RECLAIM_RETRIES *
2960                       mem_cgroup_count_children(memcg);
2961
2962         oldusage = page_counter_read(&memcg->memory);
2963
2964         do {
2965                 if (signal_pending(current)) {
2966                         ret = -EINTR;
2967                         break;
2968                 }
2969
2970                 mutex_lock(&memcg_limit_mutex);
2971                 if (limit > memcg->memsw.limit) {
2972                         mutex_unlock(&memcg_limit_mutex);
2973                         ret = -EINVAL;
2974                         break;
2975                 }
2976                 if (limit > memcg->memory.limit)
2977                         enlarge = true;
2978                 ret = page_counter_limit(&memcg->memory, limit);
2979                 mutex_unlock(&memcg_limit_mutex);
2980
2981                 if (!ret)
2982                         break;
2983
2984                 try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL, true);
2985
2986                 curusage = page_counter_read(&memcg->memory);
2987                 /* Usage is reduced ? */
2988                 if (curusage >= oldusage)
2989                         retry_count--;
2990                 else
2991                         oldusage = curusage;
2992         } while (retry_count);
2993
2994         if (!ret && enlarge)
2995                 memcg_oom_recover(memcg);
2996
2997         return ret;
2998 }
2999
3000 static int mem_cgroup_resize_memsw_limit(struct mem_cgroup *memcg,
3001                                          unsigned long limit)
3002 {
3003         unsigned long curusage;
3004         unsigned long oldusage;
3005         bool enlarge = false;
3006         int retry_count;
3007         int ret;
3008
3009         /* see mem_cgroup_resize_res_limit */
3010         retry_count = MEM_CGROUP_RECLAIM_RETRIES *
3011                       mem_cgroup_count_children(memcg);
3012
3013         oldusage = page_counter_read(&memcg->memsw);
3014
3015         do {
3016                 if (signal_pending(current)) {
3017                         ret = -EINTR;
3018                         break;
3019                 }
3020
3021                 mutex_lock(&memcg_limit_mutex);
3022                 if (limit < memcg->memory.limit) {
3023                         mutex_unlock(&memcg_limit_mutex);
3024                         ret = -EINVAL;
3025                         break;
3026                 }
3027                 if (limit > memcg->memsw.limit)
3028                         enlarge = true;
3029                 ret = page_counter_limit(&memcg->memsw, limit);
3030                 mutex_unlock(&memcg_limit_mutex);
3031
3032                 if (!ret)
3033                         break;
3034
3035                 try_to_free_mem_cgroup_pages(memcg, 1, GFP_KERNEL, false);
3036
3037                 curusage = page_counter_read(&memcg->memsw);
3038                 /* Usage is reduced ? */
3039                 if (curusage >= oldusage)
3040                         retry_count--;
3041                 else
3042                         oldusage = curusage;
3043         } while (retry_count);
3044
3045         if (!ret && enlarge)
3046                 memcg_oom_recover(memcg);
3047
3048         return ret;
3049 }
3050
3051 unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order,
3052                                             gfp_t gfp_mask,
3053                                             unsigned long *total_scanned)
3054 {
3055         unsigned long nr_reclaimed = 0;
3056         struct mem_cgroup_per_zone *mz, *next_mz = NULL;
3057         unsigned long reclaimed;
3058         int loop = 0;
3059         struct mem_cgroup_tree_per_zone *mctz;
3060         unsigned long excess;
3061         unsigned long nr_scanned;
3062
3063         if (order > 0)
3064                 return 0;
3065
3066         mctz = soft_limit_tree_node_zone(zone_to_nid(zone), zone_idx(zone));
3067         /*
3068          * This loop can run a while, specially if mem_cgroup's continuously
3069          * keep exceeding their soft limit and putting the system under
3070          * pressure
3071          */
3072         do {
3073                 if (next_mz)
3074                         mz = next_mz;
3075                 else
3076                         mz = mem_cgroup_largest_soft_limit_node(mctz);
3077                 if (!mz)
3078                         break;
3079
3080                 nr_scanned = 0;
3081                 reclaimed = mem_cgroup_soft_reclaim(mz->memcg, zone,
3082                                                     gfp_mask, &nr_scanned);
3083                 nr_reclaimed += reclaimed;
3084                 *total_scanned += nr_scanned;
3085                 spin_lock_irq(&mctz->lock);
3086                 __mem_cgroup_remove_exceeded(mz, mctz);
3087
3088                 /*
3089                  * If we failed to reclaim anything from this memory cgroup
3090                  * it is time to move on to the next cgroup
3091                  */
3092                 next_mz = NULL;
3093                 if (!reclaimed)
3094                         next_mz = __mem_cgroup_largest_soft_limit_node(mctz);
3095
3096                 excess = soft_limit_excess(mz->memcg);
3097                 /*
3098                  * One school of thought says that we should not add
3099                  * back the node to the tree if reclaim returns 0.
3100                  * But our reclaim could return 0, simply because due
3101                  * to priority we are exposing a smaller subset of
3102                  * memory to reclaim from. Consider this as a longer
3103                  * term TODO.
3104                  */
3105                 /* If excess == 0, no tree ops */
3106                 __mem_cgroup_insert_exceeded(mz, mctz, excess);
3107                 spin_unlock_irq(&mctz->lock);
3108                 css_put(&mz->memcg->css);
3109                 loop++;
3110                 /*
3111                  * Could not reclaim anything and there are no more
3112                  * mem cgroups to try or we seem to be looping without
3113                  * reclaiming anything.
3114                  */
3115                 if (!nr_reclaimed &&
3116                         (next_mz == NULL ||
3117                         loop > MEM_CGROUP_MAX_SOFT_LIMIT_RECLAIM_LOOPS))
3118                         break;
3119         } while (!nr_reclaimed);
3120         if (next_mz)
3121                 css_put(&next_mz->memcg->css);
3122         return nr_reclaimed;
3123 }
3124
3125 /*
3126  * Test whether @memcg has children, dead or alive.  Note that this
3127  * function doesn't care whether @memcg has use_hierarchy enabled and
3128  * returns %true if there are child csses according to the cgroup
3129  * hierarchy.  Testing use_hierarchy is the caller's responsiblity.
3130  */
3131 static inline bool memcg_has_children(struct mem_cgroup *memcg)
3132 {
3133         bool ret;
3134
3135         /*
3136          * The lock does not prevent addition or deletion of children, but
3137          * it prevents a new child from being initialized based on this
3138          * parent in css_online(), so it's enough to decide whether
3139          * hierarchically inherited attributes can still be changed or not.
3140          */
3141         lockdep_assert_held(&memcg_create_mutex);
3142
3143         rcu_read_lock();
3144         ret = css_next_child(NULL, &memcg->css);
3145         rcu_read_unlock();
3146         return ret;
3147 }
3148
3149 /*
3150  * Reclaims as many pages from the given memcg as possible and moves
3151  * the rest to the parent.
3152  *
3153  * Caller is responsible for holding css reference for memcg.
3154  */
3155 static int mem_cgroup_force_empty(struct mem_cgroup *memcg)
3156 {
3157         int nr_retries = MEM_CGROUP_RECLAIM_RETRIES;
3158
3159         /* we call try-to-free pages for make this cgroup empty */
3160         lru_add_drain_all();
3161         /* try to free all pages in this cgroup */
3162         while (nr_retries && page_counter_read(&memcg->memory)) {
3163                 int progress;
3164
3165                 if (signal_pending(current))
3166                         return -EINTR;
3167
3168                 progress = try_to_free_mem_cgroup_pages(memcg, 1,
3169                                                         GFP_KERNEL, true);
3170                 if (!progress) {
3171                         nr_retries--;
3172                         /* maybe some writeback is necessary */
3173                         congestion_wait(BLK_RW_ASYNC, HZ/10);
3174                 }
3175
3176         }
3177
3178         return 0;
3179 }
3180
3181 static ssize_t mem_cgroup_force_empty_write(struct kernfs_open_file *of,
3182                                             char *buf, size_t nbytes,
3183                                             loff_t off)
3184 {
3185         struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
3186
3187         if (mem_cgroup_is_root(memcg))
3188                 return -EINVAL;
3189         return mem_cgroup_force_empty(memcg) ?: nbytes;
3190 }
3191
3192 static u64 mem_cgroup_hierarchy_read(struct cgroup_subsys_state *css,
3193                                      struct cftype *cft)
3194 {
3195         return mem_cgroup_from_css(css)->use_hierarchy;
3196 }
3197
3198 static int mem_cgroup_hierarchy_write(struct cgroup_subsys_state *css,
3199                                       struct cftype *cft, u64 val)
3200 {
3201         int retval = 0;
3202         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3203         struct mem_cgroup *parent_memcg = mem_cgroup_from_css(memcg->css.parent);
3204
3205         mutex_lock(&memcg_create_mutex);
3206
3207         if (memcg->use_hierarchy == val)
3208                 goto out;
3209
3210         /*
3211          * If parent's use_hierarchy is set, we can't make any modifications
3212          * in the child subtrees. If it is unset, then the change can
3213          * occur, provided the current cgroup has no children.
3214          *
3215          * For the root cgroup, parent_mem is NULL, we allow value to be
3216          * set if there are no children.
3217          */
3218         if ((!parent_memcg || !parent_memcg->use_hierarchy) &&
3219                                 (val == 1 || val == 0)) {
3220                 if (!memcg_has_children(memcg))
3221                         memcg->use_hierarchy = val;
3222                 else
3223                         retval = -EBUSY;
3224         } else
3225                 retval = -EINVAL;
3226
3227 out:
3228         mutex_unlock(&memcg_create_mutex);
3229
3230         return retval;
3231 }
3232
3233 static unsigned long tree_stat(struct mem_cgroup *memcg,
3234                                enum mem_cgroup_stat_index idx)
3235 {
3236         struct mem_cgroup *iter;
3237         long val = 0;
3238
3239         /* Per-cpu values can be negative, use a signed accumulator */
3240         for_each_mem_cgroup_tree(iter, memcg)
3241                 val += mem_cgroup_read_stat(iter, idx);
3242
3243         if (val < 0) /* race ? */
3244                 val = 0;
3245         return val;
3246 }
3247
3248 static inline u64 mem_cgroup_usage(struct mem_cgroup *memcg, bool swap)
3249 {
3250         u64 val;
3251
3252         if (mem_cgroup_is_root(memcg)) {
3253                 val = tree_stat(memcg, MEM_CGROUP_STAT_CACHE);
3254                 val += tree_stat(memcg, MEM_CGROUP_STAT_RSS);
3255                 if (swap)
3256                         val += tree_stat(memcg, MEM_CGROUP_STAT_SWAP);
3257         } else {
3258                 if (!swap)
3259                         val = page_counter_read(&memcg->memory);
3260                 else
3261                         val = page_counter_read(&memcg->memsw);
3262         }
3263         return val << PAGE_SHIFT;
3264 }
3265
3266 enum {
3267         RES_USAGE,
3268         RES_LIMIT,
3269         RES_MAX_USAGE,
3270         RES_FAILCNT,
3271         RES_SOFT_LIMIT,
3272 };
3273
3274 static u64 mem_cgroup_read_u64(struct cgroup_subsys_state *css,
3275                                struct cftype *cft)
3276 {
3277         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3278         struct page_counter *counter;
3279
3280         switch (MEMFILE_TYPE(cft->private)) {
3281         case _MEM:
3282                 counter = &memcg->memory;
3283                 break;
3284         case _MEMSWAP:
3285                 counter = &memcg->memsw;
3286                 break;
3287         case _KMEM:
3288                 counter = &memcg->kmem;
3289                 break;
3290         default:
3291                 BUG();
3292         }
3293
3294         switch (MEMFILE_ATTR(cft->private)) {
3295         case RES_USAGE:
3296                 if (counter == &memcg->memory)
3297                         return mem_cgroup_usage(memcg, false);
3298                 if (counter == &memcg->memsw)
3299                         return mem_cgroup_usage(memcg, true);
3300                 return (u64)page_counter_read(counter) * PAGE_SIZE;
3301         case RES_LIMIT:
3302                 return (u64)counter->limit * PAGE_SIZE;
3303         case RES_MAX_USAGE:
3304                 return (u64)counter->watermark * PAGE_SIZE;
3305         case RES_FAILCNT:
3306                 return counter->failcnt;
3307         case RES_SOFT_LIMIT:
3308                 return (u64)memcg->soft_limit * PAGE_SIZE;
3309         default:
3310                 BUG();
3311         }
3312 }
3313
3314 #ifdef CONFIG_MEMCG_KMEM
3315 static int memcg_activate_kmem(struct mem_cgroup *memcg,
3316                                unsigned long nr_pages)
3317 {
3318         int err = 0;
3319         int memcg_id;
3320
3321         BUG_ON(memcg->kmemcg_id >= 0);
3322         BUG_ON(memcg->kmem_acct_activated);
3323         BUG_ON(memcg->kmem_acct_active);
3324
3325         /*
3326          * For simplicity, we won't allow this to be disabled.  It also can't
3327          * be changed if the cgroup has children already, or if tasks had
3328          * already joined.
3329          *
3330          * If tasks join before we set the limit, a person looking at
3331          * kmem.usage_in_bytes will have no way to determine when it took
3332          * place, which makes the value quite meaningless.
3333          *
3334          * After it first became limited, changes in the value of the limit are
3335          * of course permitted.
3336          */
3337         mutex_lock(&memcg_create_mutex);
3338         if (cgroup_has_tasks(memcg->css.cgroup) ||
3339             (memcg->use_hierarchy && memcg_has_children(memcg)))
3340                 err = -EBUSY;
3341         mutex_unlock(&memcg_create_mutex);
3342         if (err)
3343                 goto out;
3344
3345         memcg_id = memcg_alloc_cache_id();
3346         if (memcg_id < 0) {
3347                 err = memcg_id;
3348                 goto out;
3349         }
3350
3351         /*
3352          * We couldn't have accounted to this cgroup, because it hasn't got
3353          * activated yet, so this should succeed.
3354          */
3355         err = page_counter_limit(&memcg->kmem, nr_pages);
3356         VM_BUG_ON(err);
3357
3358         static_key_slow_inc(&memcg_kmem_enabled_key);
3359         /*
3360          * A memory cgroup is considered kmem-active as soon as it gets
3361          * kmemcg_id. Setting the id after enabling static branching will
3362          * guarantee no one starts accounting before all call sites are
3363          * patched.
3364          */
3365         memcg->kmemcg_id = memcg_id;
3366         memcg->kmem_acct_activated = true;
3367         memcg->kmem_acct_active = true;
3368 out:
3369         return err;
3370 }
3371
3372 static int memcg_update_kmem_limit(struct mem_cgroup *memcg,
3373                                    unsigned long limit)
3374 {
3375         int ret;
3376
3377         mutex_lock(&memcg_limit_mutex);
3378         if (!memcg_kmem_is_active(memcg))
3379                 ret = memcg_activate_kmem(memcg, limit);
3380         else
3381                 ret = page_counter_limit(&memcg->kmem, limit);
3382         mutex_unlock(&memcg_limit_mutex);
3383         return ret;
3384 }
3385
3386 static int memcg_propagate_kmem(struct mem_cgroup *memcg)
3387 {
3388         int ret = 0;
3389         struct mem_cgroup *parent = parent_mem_cgroup(memcg);
3390
3391         if (!parent)
3392                 return 0;
3393
3394         mutex_lock(&memcg_limit_mutex);
3395         /*
3396          * If the parent cgroup is not kmem-active now, it cannot be activated
3397          * after this point, because it has at least one child already.
3398          */
3399         if (memcg_kmem_is_active(parent))
3400                 ret = memcg_activate_kmem(memcg, PAGE_COUNTER_MAX);
3401         mutex_unlock(&memcg_limit_mutex);
3402         return ret;
3403 }
3404 #else
3405 static int memcg_update_kmem_limit(struct mem_cgroup *memcg,
3406                                    unsigned long limit)
3407 {
3408         return -EINVAL;
3409 }
3410 #endif /* CONFIG_MEMCG_KMEM */
3411
3412 /*
3413  * The user of this function is...
3414  * RES_LIMIT.
3415  */
3416 static ssize_t mem_cgroup_write(struct kernfs_open_file *of,
3417                                 char *buf, size_t nbytes, loff_t off)
3418 {
3419         struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
3420         unsigned long nr_pages;
3421         int ret;
3422
3423         buf = strstrip(buf);
3424         ret = page_counter_memparse(buf, "-1", &nr_pages);
3425         if (ret)
3426                 return ret;
3427
3428         switch (MEMFILE_ATTR(of_cft(of)->private)) {
3429         case RES_LIMIT:
3430                 if (mem_cgroup_is_root(memcg)) { /* Can't set limit on root */
3431                         ret = -EINVAL;
3432                         break;
3433                 }
3434                 switch (MEMFILE_TYPE(of_cft(of)->private)) {
3435                 case _MEM:
3436                         ret = mem_cgroup_resize_limit(memcg, nr_pages);
3437                         break;
3438                 case _MEMSWAP:
3439                         ret = mem_cgroup_resize_memsw_limit(memcg, nr_pages);
3440                         break;
3441                 case _KMEM:
3442                         ret = memcg_update_kmem_limit(memcg, nr_pages);
3443                         break;
3444                 }
3445                 break;
3446         case RES_SOFT_LIMIT:
3447                 memcg->soft_limit = nr_pages;
3448                 ret = 0;
3449                 break;
3450         }
3451         return ret ?: nbytes;
3452 }
3453
3454 static ssize_t mem_cgroup_reset(struct kernfs_open_file *of, char *buf,
3455                                 size_t nbytes, loff_t off)
3456 {
3457         struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
3458         struct page_counter *counter;
3459
3460         switch (MEMFILE_TYPE(of_cft(of)->private)) {
3461         case _MEM:
3462                 counter = &memcg->memory;
3463                 break;
3464         case _MEMSWAP:
3465                 counter = &memcg->memsw;
3466                 break;
3467         case _KMEM:
3468                 counter = &memcg->kmem;
3469                 break;
3470         default:
3471                 BUG();
3472         }
3473
3474         switch (MEMFILE_ATTR(of_cft(of)->private)) {
3475         case RES_MAX_USAGE:
3476                 page_counter_reset_watermark(counter);
3477                 break;
3478         case RES_FAILCNT:
3479                 counter->failcnt = 0;
3480                 break;
3481         default:
3482                 BUG();
3483         }
3484
3485         return nbytes;
3486 }
3487
3488 static u64 mem_cgroup_move_charge_read(struct cgroup_subsys_state *css,
3489                                         struct cftype *cft)
3490 {
3491         return mem_cgroup_from_css(css)->move_charge_at_immigrate;
3492 }
3493
3494 #ifdef CONFIG_MMU
3495 static int mem_cgroup_move_charge_write(struct cgroup_subsys_state *css,
3496                                         struct cftype *cft, u64 val)
3497 {
3498         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3499
3500         if (val & ~MOVE_MASK)
3501                 return -EINVAL;
3502
3503         /*
3504          * No kind of locking is needed in here, because ->can_attach() will
3505          * check this value once in the beginning of the process, and then carry
3506          * on with stale data. This means that changes to this value will only
3507          * affect task migrations starting after the change.
3508          */
3509         memcg->move_charge_at_immigrate = val;
3510         return 0;
3511 }
3512 #else
3513 static int mem_cgroup_move_charge_write(struct cgroup_subsys_state *css,
3514                                         struct cftype *cft, u64 val)
3515 {
3516         return -ENOSYS;
3517 }
3518 #endif
3519
3520 #ifdef CONFIG_NUMA
3521 static int memcg_numa_stat_show(struct seq_file *m, void *v)
3522 {
3523         struct numa_stat {
3524                 const char *name;
3525                 unsigned int lru_mask;
3526         };
3527
3528         static const struct numa_stat stats[] = {
3529                 { "total", LRU_ALL },
3530                 { "file", LRU_ALL_FILE },
3531                 { "anon", LRU_ALL_ANON },
3532                 { "unevictable", BIT(LRU_UNEVICTABLE) },
3533         };
3534         const struct numa_stat *stat;
3535         int nid;
3536         unsigned long nr;
3537         struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
3538
3539         for (stat = stats; stat < stats + ARRAY_SIZE(stats); stat++) {
3540                 nr = mem_cgroup_nr_lru_pages(memcg, stat->lru_mask);
3541                 seq_printf(m, "%s=%lu", stat->name, nr);
3542                 for_each_node_state(nid, N_MEMORY) {
3543                         nr = mem_cgroup_node_nr_lru_pages(memcg, nid,
3544                                                           stat->lru_mask);
3545                         seq_printf(m, " N%d=%lu", nid, nr);
3546                 }
3547                 seq_putc(m, '\n');
3548         }
3549
3550         for (stat = stats; stat < stats + ARRAY_SIZE(stats); stat++) {
3551                 struct mem_cgroup *iter;
3552
3553                 nr = 0;
3554                 for_each_mem_cgroup_tree(iter, memcg)
3555                         nr += mem_cgroup_nr_lru_pages(iter, stat->lru_mask);
3556                 seq_printf(m, "hierarchical_%s=%lu", stat->name, nr);
3557                 for_each_node_state(nid, N_MEMORY) {
3558                         nr = 0;
3559                         for_each_mem_cgroup_tree(iter, memcg)
3560                                 nr += mem_cgroup_node_nr_lru_pages(
3561                                         iter, nid, stat->lru_mask);
3562                         seq_printf(m, " N%d=%lu", nid, nr);
3563                 }
3564                 seq_putc(m, '\n');
3565         }
3566
3567         return 0;
3568 }
3569 #endif /* CONFIG_NUMA */
3570
3571 static int memcg_stat_show(struct seq_file *m, void *v)
3572 {
3573         struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
3574         unsigned long memory, memsw;
3575         struct mem_cgroup *mi;
3576         unsigned int i;
3577
3578         BUILD_BUG_ON(ARRAY_SIZE(mem_cgroup_stat_names) !=
3579                      MEM_CGROUP_STAT_NSTATS);
3580         BUILD_BUG_ON(ARRAY_SIZE(mem_cgroup_events_names) !=
3581                      MEM_CGROUP_EVENTS_NSTATS);
3582         BUILD_BUG_ON(ARRAY_SIZE(mem_cgroup_lru_names) != NR_LRU_LISTS);
3583
3584         for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) {
3585                 if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account)
3586                         continue;
3587                 seq_printf(m, "%s %ld\n", mem_cgroup_stat_names[i],
3588                            mem_cgroup_read_stat(memcg, i) * PAGE_SIZE);
3589         }
3590
3591         for (i = 0; i < MEM_CGROUP_EVENTS_NSTATS; i++)
3592                 seq_printf(m, "%s %lu\n", mem_cgroup_events_names[i],
3593                            mem_cgroup_read_events(memcg, i));
3594
3595         for (i = 0; i < NR_LRU_LISTS; i++)
3596                 seq_printf(m, "%s %lu\n", mem_cgroup_lru_names[i],
3597                            mem_cgroup_nr_lru_pages(memcg, BIT(i)) * PAGE_SIZE);
3598
3599         /* Hierarchical information */
3600         memory = memsw = PAGE_COUNTER_MAX;
3601         for (mi = memcg; mi; mi = parent_mem_cgroup(mi)) {
3602                 memory = min(memory, mi->memory.limit);
3603                 memsw = min(memsw, mi->memsw.limit);
3604         }
3605         seq_printf(m, "hierarchical_memory_limit %llu\n",
3606                    (u64)memory * PAGE_SIZE);
3607         if (do_swap_account)
3608                 seq_printf(m, "hierarchical_memsw_limit %llu\n",
3609                            (u64)memsw * PAGE_SIZE);
3610
3611         for (i = 0; i < MEM_CGROUP_STAT_NSTATS; i++) {
3612                 long long val = 0;
3613
3614                 if (i == MEM_CGROUP_STAT_SWAP && !do_swap_account)
3615                         continue;
3616                 for_each_mem_cgroup_tree(mi, memcg)
3617                         val += mem_cgroup_read_stat(mi, i) * PAGE_SIZE;
3618                 seq_printf(m, "total_%s %lld\n", mem_cgroup_stat_names[i], val);
3619         }
3620
3621         for (i = 0; i < MEM_CGROUP_EVENTS_NSTATS; i++) {
3622                 unsigned long long val = 0;
3623
3624                 for_each_mem_cgroup_tree(mi, memcg)
3625                         val += mem_cgroup_read_events(mi, i);
3626                 seq_printf(m, "total_%s %llu\n",
3627                            mem_cgroup_events_names[i], val);
3628         }
3629
3630         for (i = 0; i < NR_LRU_LISTS; i++) {
3631                 unsigned long long val = 0;
3632
3633                 for_each_mem_cgroup_tree(mi, memcg)
3634                         val += mem_cgroup_nr_lru_pages(mi, BIT(i)) * PAGE_SIZE;
3635                 seq_printf(m, "total_%s %llu\n", mem_cgroup_lru_names[i], val);
3636         }
3637
3638 #ifdef CONFIG_DEBUG_VM
3639         {
3640                 int nid, zid;
3641                 struct mem_cgroup_per_zone *mz;
3642                 struct zone_reclaim_stat *rstat;
3643                 unsigned long recent_rotated[2] = {0, 0};
3644                 unsigned long recent_scanned[2] = {0, 0};
3645
3646                 for_each_online_node(nid)
3647                         for (zid = 0; zid < MAX_NR_ZONES; zid++) {
3648                                 mz = &memcg->nodeinfo[nid]->zoneinfo[zid];
3649                                 rstat = &mz->lruvec.reclaim_stat;
3650
3651                                 recent_rotated[0] += rstat->recent_rotated[0];
3652                                 recent_rotated[1] += rstat->recent_rotated[1];
3653                                 recent_scanned[0] += rstat->recent_scanned[0];
3654                                 recent_scanned[1] += rstat->recent_scanned[1];
3655                         }
3656                 seq_printf(m, "recent_rotated_anon %lu\n", recent_rotated[0]);
3657                 seq_printf(m, "recent_rotated_file %lu\n", recent_rotated[1]);
3658                 seq_printf(m, "recent_scanned_anon %lu\n", recent_scanned[0]);
3659                 seq_printf(m, "recent_scanned_file %lu\n", recent_scanned[1]);
3660         }
3661 #endif
3662
3663         return 0;
3664 }
3665
3666 static u64 mem_cgroup_swappiness_read(struct cgroup_subsys_state *css,
3667                                       struct cftype *cft)
3668 {
3669         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3670
3671         return mem_cgroup_swappiness(memcg);
3672 }
3673
3674 static int mem_cgroup_swappiness_write(struct cgroup_subsys_state *css,
3675                                        struct cftype *cft, u64 val)
3676 {
3677         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
3678
3679         if (val > 100)
3680                 return -EINVAL;
3681
3682         if (css->parent)
3683                 memcg->swappiness = val;
3684         else
3685                 vm_swappiness = val;
3686
3687         return 0;
3688 }
3689
3690 static void __mem_cgroup_threshold(struct mem_cgroup *memcg, bool swap)
3691 {
3692         struct mem_cgroup_threshold_ary *t;
3693         unsigned long usage;
3694         int i;
3695
3696         rcu_read_lock();
3697         if (!swap)
3698                 t = rcu_dereference(memcg->thresholds.primary);
3699         else
3700                 t = rcu_dereference(memcg->memsw_thresholds.primary);
3701
3702         if (!t)
3703                 goto unlock;
3704
3705         usage = mem_cgroup_usage(memcg, swap);
3706
3707         /*
3708          * current_threshold points to threshold just below or equal to usage.
3709          * If it's not true, a threshold was crossed after last
3710          * call of __mem_cgroup_threshold().
3711          */
3712         i = t->current_threshold;
3713
3714         /*
3715          * Iterate backward over array of thresholds starting from
3716          * current_threshold and check if a threshold is crossed.
3717          * If none of thresholds below usage is crossed, we read
3718          * only one element of the array here.
3719          */
3720         for (; i >= 0 && unlikely(t->entries[i].threshold > usage); i--)
3721                 eventfd_signal(t->entries[i].eventfd, 1);
3722
3723         /* i = current_threshold + 1 */
3724         i++;
3725
3726         /*
3727          * Iterate forward over array of thresholds starting from
3728          * current_threshold+1 and check if a threshold is crossed.
3729          * If none of thresholds above usage is crossed, we read
3730          * only one element of the array here.
3731          */
3732         for (; i < t->size && unlikely(t->entries[i].threshold <= usage); i++)
3733                 eventfd_signal(t->entries[i].eventfd, 1);
3734
3735         /* Update current_threshold */
3736         t->current_threshold = i - 1;
3737 unlock:
3738         rcu_read_unlock();
3739 }
3740
3741 static void mem_cgroup_threshold(struct mem_cgroup *memcg)
3742 {
3743         while (memcg) {
3744                 __mem_cgroup_threshold(memcg, false);
3745                 if (do_swap_account)
3746                         __mem_cgroup_threshold(memcg, true);
3747
3748                 memcg = parent_mem_cgroup(memcg);
3749         }
3750 }
3751
3752 static int compare_thresholds(const void *a, const void *b)
3753 {
3754         const struct mem_cgroup_threshold *_a = a;
3755         const struct mem_cgroup_threshold *_b = b;
3756
3757         if (_a->threshold > _b->threshold)
3758                 return 1;
3759
3760         if (_a->threshold < _b->threshold)
3761                 return -1;
3762
3763         return 0;
3764 }
3765
3766 static int mem_cgroup_oom_notify_cb(struct mem_cgroup *memcg)
3767 {
3768         struct mem_cgroup_eventfd_list *ev;
3769
3770         spin_lock(&memcg_oom_lock);
3771
3772         list_for_each_entry(ev, &memcg->oom_notify, list)
3773                 eventfd_signal(ev->eventfd, 1);
3774
3775         spin_unlock(&memcg_oom_lock);
3776         return 0;
3777 }
3778
3779 static void mem_cgroup_oom_notify(struct mem_cgroup *memcg)
3780 {
3781         struct mem_cgroup *iter;
3782
3783         for_each_mem_cgroup_tree(iter, memcg)
3784                 mem_cgroup_oom_notify_cb(iter);
3785 }
3786
3787 static int __mem_cgroup_usage_register_event(struct mem_cgroup *memcg,
3788         struct eventfd_ctx *eventfd, const char *args, enum res_type type)
3789 {
3790         struct mem_cgroup_thresholds *thresholds;
3791         struct mem_cgroup_threshold_ary *new;
3792         unsigned long threshold;
3793         unsigned long usage;
3794         int i, size, ret;
3795
3796         ret = page_counter_memparse(args, "-1", &threshold);
3797         if (ret)
3798                 return ret;
3799
3800         mutex_lock(&memcg->thresholds_lock);
3801
3802         if (type == _MEM) {
3803                 thresholds = &memcg->thresholds;
3804                 usage = mem_cgroup_usage(memcg, false);
3805         } else if (type == _MEMSWAP) {
3806                 thresholds = &memcg->memsw_thresholds;
3807                 usage = mem_cgroup_usage(memcg, true);
3808         } else
3809                 BUG();
3810
3811         /* Check if a threshold crossed before adding a new one */
3812         if (thresholds->primary)
3813                 __mem_cgroup_threshold(memcg, type == _MEMSWAP);
3814
3815         size = thresholds->primary ? thresholds->primary->size + 1 : 1;
3816
3817         /* Allocate memory for new array of thresholds */
3818         new = kmalloc(sizeof(*new) + size * sizeof(struct mem_cgroup_threshold),
3819                         GFP_KERNEL);
3820         if (!new) {
3821                 ret = -ENOMEM;
3822                 goto unlock;
3823         }
3824         new->size = size;
3825
3826         /* Copy thresholds (if any) to new array */
3827         if (thresholds->primary) {
3828                 memcpy(new->entries, thresholds->primary->entries, (size - 1) *
3829                                 sizeof(struct mem_cgroup_threshold));
3830         }
3831
3832         /* Add new threshold */
3833         new->entries[size - 1].eventfd = eventfd;
3834         new->entries[size - 1].threshold = threshold;
3835
3836         /* Sort thresholds. Registering of new threshold isn't time-critical */
3837         sort(new->entries, size, sizeof(struct mem_cgroup_threshold),
3838                         compare_thresholds, NULL);
3839
3840         /* Find current threshold */
3841         new->current_threshold = -1;
3842         for (i = 0; i < size; i++) {
3843                 if (new->entries[i].threshold <= usage) {
3844                         /*
3845                          * new->current_threshold will not be used until
3846                          * rcu_assign_pointer(), so it's safe to increment
3847                          * it here.
3848                          */
3849                         ++new->current_threshold;
3850                 } else
3851                         break;
3852         }
3853
3854         /* Free old spare buffer and save old primary buffer as spare */
3855         kfree(thresholds->spare);
3856         thresholds->spare = thresholds->primary;
3857
3858         rcu_assign_pointer(thresholds->primary, new);
3859
3860         /* To be sure that nobody uses thresholds */
3861         synchronize_rcu();
3862
3863 unlock:
3864         mutex_unlock(&memcg->thresholds_lock);
3865
3866         return ret;
3867 }
3868
3869 static int mem_cgroup_usage_register_event(struct mem_cgroup *memcg,
3870         struct eventfd_ctx *eventfd, const char *args)
3871 {
3872         return __mem_cgroup_usage_register_event(memcg, eventfd, args, _MEM);
3873 }
3874
3875 static int memsw_cgroup_usage_register_event(struct mem_cgroup *memcg,
3876         struct eventfd_ctx *eventfd, const char *args)
3877 {
3878         return __mem_cgroup_usage_register_event(memcg, eventfd, args, _MEMSWAP);
3879 }
3880
3881 static void __mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
3882         struct eventfd_ctx *eventfd, enum res_type type)
3883 {
3884         struct mem_cgroup_thresholds *thresholds;
3885         struct mem_cgroup_threshold_ary *new;
3886         unsigned long usage;
3887         int i, j, size;
3888
3889         mutex_lock(&memcg->thresholds_lock);
3890
3891         if (type == _MEM) {
3892                 thresholds = &memcg->thresholds;
3893                 usage = mem_cgroup_usage(memcg, false);
3894         } else if (type == _MEMSWAP) {
3895                 thresholds = &memcg->memsw_thresholds;
3896                 usage = mem_cgroup_usage(memcg, true);
3897         } else
3898                 BUG();
3899
3900         if (!thresholds->primary)
3901                 goto unlock;
3902
3903         /* Check if a threshold crossed before removing */
3904         __mem_cgroup_threshold(memcg, type == _MEMSWAP);
3905
3906         /* Calculate new number of threshold */
3907         size = 0;
3908         for (i = 0; i < thresholds->primary->size; i++) {
3909                 if (thresholds->primary->entries[i].eventfd != eventfd)
3910                         size++;
3911         }
3912
3913         new = thresholds->spare;
3914
3915         /* Set thresholds array to NULL if we don't have thresholds */
3916         if (!size) {
3917                 kfree(new);
3918                 new = NULL;
3919                 goto swap_buffers;
3920         }
3921
3922         new->size = size;
3923
3924         /* Copy thresholds and find current threshold */
3925         new->current_threshold = -1;
3926         for (i = 0, j = 0; i < thresholds->primary->size; i++) {
3927                 if (thresholds->primary->entries[i].eventfd == eventfd)
3928                         continue;
3929
3930                 new->entries[j] = thresholds->primary->entries[i];
3931                 if (new->entries[j].threshold <= usage) {
3932                         /*
3933                          * new->current_threshold will not be used
3934                          * until rcu_assign_pointer(), so it's safe to increment
3935                          * it here.
3936                          */
3937                         ++new->current_threshold;
3938                 }
3939                 j++;
3940         }
3941
3942 swap_buffers:
3943         /* Swap primary and spare array */
3944         thresholds->spare = thresholds->primary;
3945         /* If all events are unregistered, free the spare array */
3946         if (!new) {
3947                 kfree(thresholds->spare);
3948                 thresholds->spare = NULL;
3949         }
3950
3951         rcu_assign_pointer(thresholds->primary, new);
3952
3953         /* To be sure that nobody uses thresholds */
3954         synchronize_rcu();
3955 unlock:
3956         mutex_unlock(&memcg->thresholds_lock);
3957 }
3958
3959 static void mem_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
3960         struct eventfd_ctx *eventfd)
3961 {
3962         return __mem_cgroup_usage_unregister_event(memcg, eventfd, _MEM);
3963 }
3964
3965 static void memsw_cgroup_usage_unregister_event(struct mem_cgroup *memcg,
3966         struct eventfd_ctx *eventfd)
3967 {
3968         return __mem_cgroup_usage_unregister_event(memcg, eventfd, _MEMSWAP);
3969 }
3970
3971 static int mem_cgroup_oom_register_event(struct mem_cgroup *memcg,
3972         struct eventfd_ctx *eventfd, const char *args)
3973 {
3974         struct mem_cgroup_eventfd_list *event;
3975
3976         event = kmalloc(sizeof(*event), GFP_KERNEL);
3977         if (!event)
3978                 return -ENOMEM;
3979
3980         spin_lock(&memcg_oom_lock);
3981
3982         event->eventfd = eventfd;
3983         list_add(&event->list, &memcg->oom_notify);
3984
3985         /* already in OOM ? */
3986         if (atomic_read(&memcg->under_oom))
3987                 eventfd_signal(eventfd, 1);
3988         spin_unlock(&memcg_oom_lock);
3989
3990         return 0;
3991 }
3992
3993 static void mem_cgroup_oom_unregister_event(struct mem_cgroup *memcg,
3994         struct eventfd_ctx *eventfd)
3995 {
3996         struct mem_cgroup_eventfd_list *ev, *tmp;
3997
3998         spin_lock(&memcg_oom_lock);
3999
4000         list_for_each_entry_safe(ev, tmp, &memcg->oom_notify, list) {
4001                 if (ev->eventfd == eventfd) {
4002                         list_del(&ev->list);
4003                         kfree(ev);
4004                 }
4005         }
4006
4007         spin_unlock(&memcg_oom_lock);
4008 }
4009
4010 static int mem_cgroup_oom_control_read(struct seq_file *sf, void *v)
4011 {
4012         struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(sf));
4013
4014         seq_printf(sf, "oom_kill_disable %d\n", memcg->oom_kill_disable);
4015         seq_printf(sf, "under_oom %d\n", (bool)atomic_read(&memcg->under_oom));
4016         return 0;
4017 }
4018
4019 static int mem_cgroup_oom_control_write(struct cgroup_subsys_state *css,
4020         struct cftype *cft, u64 val)
4021 {
4022         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4023
4024         /* cannot set to root cgroup and only 0 and 1 are allowed */
4025         if (!css->parent || !((val == 0) || (val == 1)))
4026                 return -EINVAL;
4027
4028         memcg->oom_kill_disable = val;
4029         if (!val)
4030                 memcg_oom_recover(memcg);
4031
4032         return 0;
4033 }
4034
4035 #ifdef CONFIG_MEMCG_KMEM
4036 static int memcg_init_kmem(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
4037 {
4038         int ret;
4039
4040         ret = memcg_propagate_kmem(memcg);
4041         if (ret)
4042                 return ret;
4043
4044         return mem_cgroup_sockets_init(memcg, ss);
4045 }
4046
4047 static void memcg_deactivate_kmem(struct mem_cgroup *memcg)
4048 {
4049         struct cgroup_subsys_state *css;
4050         struct mem_cgroup *parent, *child;
4051         int kmemcg_id;
4052
4053         if (!memcg->kmem_acct_active)
4054                 return;
4055
4056         /*
4057          * Clear the 'active' flag before clearing memcg_caches arrays entries.
4058          * Since we take the slab_mutex in memcg_deactivate_kmem_caches(), it
4059          * guarantees no cache will be created for this cgroup after we are
4060          * done (see memcg_create_kmem_cache()).
4061          */
4062         memcg->kmem_acct_active = false;
4063
4064         memcg_deactivate_kmem_caches(memcg);
4065
4066         kmemcg_id = memcg->kmemcg_id;
4067         BUG_ON(kmemcg_id < 0);
4068
4069         parent = parent_mem_cgroup(memcg);
4070         if (!parent)
4071                 parent = root_mem_cgroup;
4072
4073         /*
4074          * Change kmemcg_id of this cgroup and all its descendants to the
4075          * parent's id, and then move all entries from this cgroup's list_lrus
4076          * to ones of the parent. After we have finished, all list_lrus
4077          * corresponding to this cgroup are guaranteed to remain empty. The
4078          * ordering is imposed by list_lru_node->lock taken by
4079          * memcg_drain_all_list_lrus().
4080          */
4081         css_for_each_descendant_pre(css, &memcg->css) {
4082                 child = mem_cgroup_from_css(css);
4083                 BUG_ON(child->kmemcg_id != kmemcg_id);
4084                 child->kmemcg_id = parent->kmemcg_id;
4085                 if (!memcg->use_hierarchy)
4086                         break;
4087         }
4088         memcg_drain_all_list_lrus(kmemcg_id, parent->kmemcg_id);
4089
4090         memcg_free_cache_id(kmemcg_id);
4091 }
4092
4093 static void memcg_destroy_kmem(struct mem_cgroup *memcg)
4094 {
4095         memcg_destroy_kmem_caches(memcg);
4096         mem_cgroup_sockets_destroy(memcg);
4097 }
4098 #else
4099 static int memcg_init_kmem(struct mem_cgroup *memcg, struct cgroup_subsys *ss)
4100 {
4101         return 0;
4102 }
4103
4104 static void memcg_deactivate_kmem(struct mem_cgroup *memcg)
4105 {
4106 }
4107
4108 static void memcg_destroy_kmem(struct mem_cgroup *memcg)
4109 {
4110 }
4111 #endif
4112
4113 /*
4114  * DO NOT USE IN NEW FILES.
4115  *
4116  * "cgroup.event_control" implementation.
4117  *
4118  * This is way over-engineered.  It tries to support fully configurable
4119  * events for each user.  Such level of flexibility is completely
4120  * unnecessary especially in the light of the planned unified hierarchy.
4121  *
4122  * Please deprecate this and replace with something simpler if at all
4123  * possible.
4124  */
4125
4126 /*
4127  * Unregister event and free resources.
4128  *
4129  * Gets called from workqueue.
4130  */
4131 static void memcg_event_remove(struct work_struct *work)
4132 {
4133         struct mem_cgroup_event *event =
4134                 container_of(work, struct mem_cgroup_event, remove);
4135         struct mem_cgroup *memcg = event->memcg;
4136
4137         remove_wait_queue(event->wqh, &event->wait);
4138
4139         event->unregister_event(memcg, event->eventfd);
4140
4141         /* Notify userspace the event is going away. */
4142         eventfd_signal(event->eventfd, 1);
4143
4144         eventfd_ctx_put(event->eventfd);
4145         kfree(event);
4146         css_put(&memcg->css);
4147 }
4148
4149 /*
4150  * Gets called on POLLHUP on eventfd when user closes it.
4151  *
4152  * Called with wqh->lock held and interrupts disabled.
4153  */
4154 static int memcg_event_wake(wait_queue_t *wait, unsigned mode,
4155                             int sync, void *key)
4156 {
4157         struct mem_cgroup_event *event =
4158                 container_of(wait, struct mem_cgroup_event, wait);
4159         struct mem_cgroup *memcg = event->memcg;
4160         unsigned long flags = (unsigned long)key;
4161
4162         if (flags & POLLHUP) {
4163                 /*
4164                  * If the event has been detached at cgroup removal, we
4165                  * can simply return knowing the other side will cleanup
4166                  * for us.
4167                  *
4168                  * We can't race against event freeing since the other
4169                  * side will require wqh->lock via remove_wait_queue(),
4170                  * which we hold.
4171                  */
4172                 spin_lock(&memcg->event_list_lock);
4173                 if (!list_empty(&event->list)) {
4174                         list_del_init(&event->list);
4175                         /*
4176                          * We are in atomic context, but cgroup_event_remove()
4177                          * may sleep, so we have to call it in workqueue.
4178                          */
4179                         schedule_work(&event->remove);
4180                 }
4181                 spin_unlock(&memcg->event_list_lock);
4182         }
4183
4184         return 0;
4185 }
4186
4187 static void memcg_event_ptable_queue_proc(struct file *file,
4188                 wait_queue_head_t *wqh, poll_table *pt)
4189 {
4190         struct mem_cgroup_event *event =
4191                 container_of(pt, struct mem_cgroup_event, pt);
4192
4193         event->wqh = wqh;
4194         add_wait_queue(wqh, &event->wait);
4195 }
4196
4197 /*
4198  * DO NOT USE IN NEW FILES.
4199  *
4200  * Parse input and register new cgroup event handler.
4201  *
4202  * Input must be in format '<event_fd> <control_fd> <args>'.
4203  * Interpretation of args is defined by control file implementation.
4204  */
4205 static ssize_t memcg_write_event_control(struct kernfs_open_file *of,
4206                                          char *buf, size_t nbytes, loff_t off)
4207 {
4208         struct cgroup_subsys_state *css = of_css(of);
4209         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4210         struct mem_cgroup_event *event;
4211         struct cgroup_subsys_state *cfile_css;
4212         unsigned int efd, cfd;
4213         struct fd efile;
4214         struct fd cfile;
4215         const char *name;
4216         char *endp;
4217         int ret;
4218
4219         buf = strstrip(buf);
4220
4221         efd = simple_strtoul(buf, &endp, 10);
4222         if (*endp != ' ')
4223                 return -EINVAL;
4224         buf = endp + 1;
4225
4226         cfd = simple_strtoul(buf, &endp, 10);
4227         if ((*endp != ' ') && (*endp != '\0'))
4228                 return -EINVAL;
4229         buf = endp + 1;
4230
4231         event = kzalloc(sizeof(*event), GFP_KERNEL);
4232         if (!event)
4233                 return -ENOMEM;
4234
4235         event->memcg = memcg;
4236         INIT_LIST_HEAD(&event->list);
4237         init_poll_funcptr(&event->pt, memcg_event_ptable_queue_proc);
4238         init_waitqueue_func_entry(&event->wait, memcg_event_wake);
4239         INIT_WORK(&event->remove, memcg_event_remove);
4240
4241         efile = fdget(efd);
4242         if (!efile.file) {
4243                 ret = -EBADF;
4244                 goto out_kfree;
4245         }
4246
4247         event->eventfd = eventfd_ctx_fileget(efile.file);
4248         if (IS_ERR(event->eventfd)) {
4249                 ret = PTR_ERR(event->eventfd);
4250                 goto out_put_efile;
4251         }
4252
4253         cfile = fdget(cfd);
4254         if (!cfile.file) {
4255                 ret = -EBADF;
4256                 goto out_put_eventfd;
4257         }
4258
4259         /* the process need read permission on control file */
4260         /* AV: shouldn't we check that it's been opened for read instead? */
4261         ret = inode_permission(file_inode(cfile.file), MAY_READ);
4262         if (ret < 0)
4263                 goto out_put_cfile;
4264
4265         /*
4266          * Determine the event callbacks and set them in @event.  This used
4267          * to be done via struct cftype but cgroup core no longer knows
4268          * about these events.  The following is crude but the whole thing
4269          * is for compatibility anyway.
4270          *
4271          * DO NOT ADD NEW FILES.
4272          */
4273         name = cfile.file->f_path.dentry->d_name.name;
4274
4275         if (!strcmp(name, "memory.usage_in_bytes")) {
4276                 event->register_event = mem_cgroup_usage_register_event;
4277                 event->unregister_event = mem_cgroup_usage_unregister_event;
4278         } else if (!strcmp(name, "memory.oom_control")) {
4279                 event->register_event = mem_cgroup_oom_register_event;
4280                 event->unregister_event = mem_cgroup_oom_unregister_event;
4281         } else if (!strcmp(name, "memory.pressure_level")) {
4282                 event->register_event = vmpressure_register_event;
4283                 event->unregister_event = vmpressure_unregister_event;
4284         } else if (!strcmp(name, "memory.memsw.usage_in_bytes")) {
4285                 event->register_event = memsw_cgroup_usage_register_event;
4286                 event->unregister_event = memsw_cgroup_usage_unregister_event;
4287         } else {
4288                 ret = -EINVAL;
4289                 goto out_put_cfile;
4290         }
4291
4292         /*
4293          * Verify @cfile should belong to @css.  Also, remaining events are
4294          * automatically removed on cgroup destruction but the removal is
4295          * asynchronous, so take an extra ref on @css.
4296          */
4297         cfile_css = css_tryget_online_from_dir(cfile.file->f_path.dentry->d_parent,
4298                                                &memory_cgrp_subsys);
4299         ret = -EINVAL;
4300         if (IS_ERR(cfile_css))
4301                 goto out_put_cfile;
4302         if (cfile_css != css) {
4303                 css_put(cfile_css);
4304                 goto out_put_cfile;
4305         }
4306
4307         ret = event->register_event(memcg, event->eventfd, buf);
4308         if (ret)
4309                 goto out_put_css;
4310
4311         efile.file->f_op->poll(efile.file, &event->pt);
4312
4313         spin_lock(&memcg->event_list_lock);
4314         list_add(&event->list, &memcg->event_list);
4315         spin_unlock(&memcg->event_list_lock);
4316
4317         fdput(cfile);
4318         fdput(efile);
4319
4320         return nbytes;
4321
4322 out_put_css:
4323         css_put(css);
4324 out_put_cfile:
4325         fdput(cfile);
4326 out_put_eventfd:
4327         eventfd_ctx_put(event->eventfd);
4328 out_put_efile:
4329         fdput(efile);
4330 out_kfree:
4331         kfree(event);
4332
4333         return ret;
4334 }
4335
4336 static struct cftype mem_cgroup_legacy_files[] = {
4337         {
4338                 .name = "usage_in_bytes",
4339                 .private = MEMFILE_PRIVATE(_MEM, RES_USAGE),
4340                 .read_u64 = mem_cgroup_read_u64,
4341         },
4342         {
4343                 .name = "max_usage_in_bytes",
4344                 .private = MEMFILE_PRIVATE(_MEM, RES_MAX_USAGE),
4345                 .write = mem_cgroup_reset,
4346                 .read_u64 = mem_cgroup_read_u64,
4347         },
4348         {
4349                 .name = "limit_in_bytes",
4350                 .private = MEMFILE_PRIVATE(_MEM, RES_LIMIT),
4351                 .write = mem_cgroup_write,
4352                 .read_u64 = mem_cgroup_read_u64,
4353         },
4354         {
4355                 .name = "soft_limit_in_bytes",
4356                 .private = MEMFILE_PRIVATE(_MEM, RES_SOFT_LIMIT),
4357                 .write = mem_cgroup_write,
4358                 .read_u64 = mem_cgroup_read_u64,
4359         },
4360         {
4361                 .name = "failcnt",
4362                 .private = MEMFILE_PRIVATE(_MEM, RES_FAILCNT),
4363                 .write = mem_cgroup_reset,
4364                 .read_u64 = mem_cgroup_read_u64,
4365         },
4366         {
4367                 .name = "stat",
4368                 .seq_show = memcg_stat_show,
4369         },
4370         {
4371                 .name = "force_empty",
4372                 .write = mem_cgroup_force_empty_write,
4373         },
4374         {
4375                 .name = "use_hierarchy",
4376                 .write_u64 = mem_cgroup_hierarchy_write,
4377                 .read_u64 = mem_cgroup_hierarchy_read,
4378         },
4379         {
4380                 .name = "cgroup.event_control",         /* XXX: for compat */
4381                 .write = memcg_write_event_control,
4382                 .flags = CFTYPE_NO_PREFIX,
4383                 .mode = S_IWUGO,
4384         },
4385         {
4386                 .name = "swappiness",
4387                 .read_u64 = mem_cgroup_swappiness_read,
4388                 .write_u64 = mem_cgroup_swappiness_write,
4389         },
4390         {
4391                 .name = "move_charge_at_immigrate",
4392                 .read_u64 = mem_cgroup_move_charge_read,
4393                 .write_u64 = mem_cgroup_move_charge_write,
4394         },
4395         {
4396                 .name = "oom_control",
4397                 .seq_show = mem_cgroup_oom_control_read,
4398                 .write_u64 = mem_cgroup_oom_control_write,
4399                 .private = MEMFILE_PRIVATE(_OOM_TYPE, OOM_CONTROL),
4400         },
4401         {
4402                 .name = "pressure_level",
4403         },
4404 #ifdef CONFIG_NUMA
4405         {
4406                 .name = "numa_stat",
4407                 .seq_show = memcg_numa_stat_show,
4408         },
4409 #endif
4410 #ifdef CONFIG_MEMCG_KMEM
4411         {
4412                 .name = "kmem.limit_in_bytes",
4413                 .private = MEMFILE_PRIVATE(_KMEM, RES_LIMIT),
4414                 .write = mem_cgroup_write,
4415                 .read_u64 = mem_cgroup_read_u64,
4416         },
4417         {
4418                 .name = "kmem.usage_in_bytes",
4419                 .private = MEMFILE_PRIVATE(_KMEM, RES_USAGE),
4420                 .read_u64 = mem_cgroup_read_u64,
4421         },
4422         {
4423                 .name = "kmem.failcnt",
4424                 .private = MEMFILE_PRIVATE(_KMEM, RES_FAILCNT),
4425                 .write = mem_cgroup_reset,
4426                 .read_u64 = mem_cgroup_read_u64,
4427         },
4428         {
4429                 .name = "kmem.max_usage_in_bytes",
4430                 .private = MEMFILE_PRIVATE(_KMEM, RES_MAX_USAGE),
4431                 .write = mem_cgroup_reset,
4432                 .read_u64 = mem_cgroup_read_u64,
4433         },
4434 #ifdef CONFIG_SLABINFO
4435         {
4436                 .name = "kmem.slabinfo",
4437                 .seq_start = slab_start,
4438                 .seq_next = slab_next,
4439                 .seq_stop = slab_stop,
4440                 .seq_show = memcg_slab_show,
4441         },
4442 #endif
4443 #endif
4444         { },    /* terminate */
4445 };
4446
4447 static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *memcg, int node)
4448 {
4449         struct mem_cgroup_per_node *pn;
4450         struct mem_cgroup_per_zone *mz;
4451         int zone, tmp = node;
4452         /*
4453          * This routine is called against possible nodes.
4454          * But it's BUG to call kmalloc() against offline node.
4455          *
4456          * TODO: this routine can waste much memory for nodes which will
4457          *       never be onlined. It's better to use memory hotplug callback
4458          *       function.
4459          */
4460         if (!node_state(node, N_NORMAL_MEMORY))
4461                 tmp = -1;
4462         pn = kzalloc_node(sizeof(*pn), GFP_KERNEL, tmp);
4463         if (!pn)
4464                 return 1;
4465
4466         for (zone = 0; zone < MAX_NR_ZONES; zone++) {
4467                 mz = &pn->zoneinfo[zone];
4468                 lruvec_init(&mz->lruvec);
4469                 mz->usage_in_excess = 0;
4470                 mz->on_tree = false;
4471                 mz->memcg = memcg;
4472         }
4473         memcg->nodeinfo[node] = pn;
4474         return 0;
4475 }
4476
4477 static void free_mem_cgroup_per_zone_info(struct mem_cgroup *memcg, int node)
4478 {
4479         kfree(memcg->nodeinfo[node]);
4480 }
4481
4482 static struct mem_cgroup *mem_cgroup_alloc(void)
4483 {
4484         struct mem_cgroup *memcg;
4485         size_t size;
4486
4487         size = sizeof(struct mem_cgroup);
4488         size += nr_node_ids * sizeof(struct mem_cgroup_per_node *);
4489
4490         memcg = kzalloc(size, GFP_KERNEL);
4491         if (!memcg)
4492                 return NULL;
4493
4494         memcg->stat = alloc_percpu(struct mem_cgroup_stat_cpu);
4495         if (!memcg->stat)
4496                 goto out_free;
4497         spin_lock_init(&memcg->pcp_counter_lock);
4498         return memcg;
4499
4500 out_free:
4501         kfree(memcg);
4502         return NULL;
4503 }
4504
4505 /*
4506  * At destroying mem_cgroup, references from swap_cgroup can remain.
4507  * (scanning all at force_empty is too costly...)
4508  *
4509  * Instead of clearing all references at force_empty, we remember
4510  * the number of reference from swap_cgroup and free mem_cgroup when
4511  * it goes down to 0.
4512  *
4513  * Removal of cgroup itself succeeds regardless of refs from swap.
4514  */
4515
4516 static void __mem_cgroup_free(struct mem_cgroup *memcg)
4517 {
4518         int node;
4519
4520         mem_cgroup_remove_from_trees(memcg);
4521
4522         for_each_node(node)
4523                 free_mem_cgroup_per_zone_info(memcg, node);
4524
4525         free_percpu(memcg->stat);
4526
4527         disarm_static_keys(memcg);
4528         kfree(memcg);
4529 }
4530
4531 /*
4532  * Returns the parent mem_cgroup in memcgroup hierarchy with hierarchy enabled.
4533  */
4534 struct mem_cgroup *parent_mem_cgroup(struct mem_cgroup *memcg)
4535 {
4536         if (!memcg->memory.parent)
4537                 return NULL;
4538         return mem_cgroup_from_counter(memcg->memory.parent, memory);
4539 }
4540 EXPORT_SYMBOL(parent_mem_cgroup);
4541
4542 static struct cgroup_subsys_state * __ref
4543 mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css)
4544 {
4545         struct mem_cgroup *memcg;
4546         long error = -ENOMEM;
4547         int node;
4548
4549         memcg = mem_cgroup_alloc();
4550         if (!memcg)
4551                 return ERR_PTR(error);
4552
4553         for_each_node(node)
4554                 if (alloc_mem_cgroup_per_zone_info(memcg, node))
4555                         goto free_out;
4556
4557         /* root ? */
4558         if (parent_css == NULL) {
4559                 root_mem_cgroup = memcg;
4560                 page_counter_init(&memcg->memory, NULL);
4561                 memcg->high = PAGE_COUNTER_MAX;
4562                 memcg->soft_limit = PAGE_COUNTER_MAX;
4563                 page_counter_init(&memcg->memsw, NULL);
4564                 page_counter_init(&memcg->kmem, NULL);
4565         }
4566
4567         memcg->last_scanned_node = MAX_NUMNODES;
4568         INIT_LIST_HEAD(&memcg->oom_notify);
4569         memcg->move_charge_at_immigrate = 0;
4570         mutex_init(&memcg->thresholds_lock);
4571         spin_lock_init(&memcg->move_lock);
4572         vmpressure_init(&memcg->vmpressure);
4573         INIT_LIST_HEAD(&memcg->event_list);
4574         spin_lock_init(&memcg->event_list_lock);
4575 #ifdef CONFIG_MEMCG_KMEM
4576         memcg->kmemcg_id = -1;
4577 #endif
4578
4579         return &memcg->css;
4580
4581 free_out:
4582         __mem_cgroup_free(memcg);
4583         return ERR_PTR(error);
4584 }
4585
4586 static int
4587 mem_cgroup_css_online(struct cgroup_subsys_state *css)
4588 {
4589         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4590         struct mem_cgroup *parent = mem_cgroup_from_css(css->parent);
4591         int ret;
4592
4593         if (css->id > MEM_CGROUP_ID_MAX)
4594                 return -ENOSPC;
4595
4596         if (!parent)
4597                 return 0;
4598
4599         mutex_lock(&memcg_create_mutex);
4600
4601         memcg->use_hierarchy = parent->use_hierarchy;
4602         memcg->oom_kill_disable = parent->oom_kill_disable;
4603         memcg->swappiness = mem_cgroup_swappiness(parent);
4604
4605         if (parent->use_hierarchy) {
4606                 page_counter_init(&memcg->memory, &parent->memory);
4607                 memcg->high = PAGE_COUNTER_MAX;
4608                 memcg->soft_limit = PAGE_COUNTER_MAX;
4609                 page_counter_init(&memcg->memsw, &parent->memsw);
4610                 page_counter_init(&memcg->kmem, &parent->kmem);
4611
4612                 /*
4613                  * No need to take a reference to the parent because cgroup
4614                  * core guarantees its existence.
4615                  */
4616         } else {
4617                 page_counter_init(&memcg->memory, NULL);
4618                 memcg->high = PAGE_COUNTER_MAX;
4619                 memcg->soft_limit = PAGE_COUNTER_MAX;
4620                 page_counter_init(&memcg->memsw, NULL);
4621                 page_counter_init(&memcg->kmem, NULL);
4622                 /*
4623                  * Deeper hierachy with use_hierarchy == false doesn't make
4624                  * much sense so let cgroup subsystem know about this
4625                  * unfortunate state in our controller.
4626                  */
4627                 if (parent != root_mem_cgroup)
4628                         memory_cgrp_subsys.broken_hierarchy = true;
4629         }
4630         mutex_unlock(&memcg_create_mutex);
4631
4632         ret = memcg_init_kmem(memcg, &memory_cgrp_subsys);
4633         if (ret)
4634                 return ret;
4635
4636         /*
4637          * Make sure the memcg is initialized: mem_cgroup_iter()
4638          * orders reading memcg->initialized against its callers
4639          * reading the memcg members.
4640          */
4641         smp_store_release(&memcg->initialized, 1);
4642
4643         return 0;
4644 }
4645
4646 static void mem_cgroup_css_offline(struct cgroup_subsys_state *css)
4647 {
4648         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4649         struct mem_cgroup_event *event, *tmp;
4650
4651         /*
4652          * Unregister events and notify userspace.
4653          * Notify userspace about cgroup removing only after rmdir of cgroup
4654          * directory to avoid race between userspace and kernelspace.
4655          */
4656         spin_lock(&memcg->event_list_lock);
4657         list_for_each_entry_safe(event, tmp, &memcg->event_list, list) {
4658                 list_del_init(&event->list);
4659                 schedule_work(&event->remove);
4660         }
4661         spin_unlock(&memcg->event_list_lock);
4662
4663         vmpressure_cleanup(&memcg->vmpressure);
4664
4665         memcg_deactivate_kmem(memcg);
4666 }
4667
4668 static void mem_cgroup_css_free(struct cgroup_subsys_state *css)
4669 {
4670         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4671
4672         memcg_destroy_kmem(memcg);
4673         __mem_cgroup_free(memcg);
4674 }
4675
4676 /**
4677  * mem_cgroup_css_reset - reset the states of a mem_cgroup
4678  * @css: the target css
4679  *
4680  * Reset the states of the mem_cgroup associated with @css.  This is
4681  * invoked when the userland requests disabling on the default hierarchy
4682  * but the memcg is pinned through dependency.  The memcg should stop
4683  * applying policies and should revert to the vanilla state as it may be
4684  * made visible again.
4685  *
4686  * The current implementation only resets the essential configurations.
4687  * This needs to be expanded to cover all the visible parts.
4688  */
4689 static void mem_cgroup_css_reset(struct cgroup_subsys_state *css)
4690 {
4691         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
4692
4693         mem_cgroup_resize_limit(memcg, PAGE_COUNTER_MAX);
4694         mem_cgroup_resize_memsw_limit(memcg, PAGE_COUNTER_MAX);
4695         memcg_update_kmem_limit(memcg, PAGE_COUNTER_MAX);
4696         memcg->low = 0;
4697         memcg->high = PAGE_COUNTER_MAX;
4698         memcg->soft_limit = PAGE_COUNTER_MAX;
4699 }
4700
4701 #ifdef CONFIG_MMU
4702 /* Handlers for move charge at task migration. */
4703 static int mem_cgroup_do_precharge(unsigned long count)
4704 {
4705         int ret;
4706
4707         /* Try a single bulk charge without reclaim first */
4708         ret = try_charge(mc.to, GFP_KERNEL & ~__GFP_WAIT, count);
4709         if (!ret) {
4710                 mc.precharge += count;
4711                 return ret;
4712         }
4713         if (ret == -EINTR) {
4714                 cancel_charge(root_mem_cgroup, count);
4715                 return ret;
4716         }
4717
4718         /* Try charges one by one with reclaim */
4719         while (count--) {
4720                 ret = try_charge(mc.to, GFP_KERNEL & ~__GFP_NORETRY, 1);
4721                 /*
4722                  * In case of failure, any residual charges against
4723                  * mc.to will be dropped by mem_cgroup_clear_mc()
4724                  * later on.  However, cancel any charges that are
4725                  * bypassed to root right away or they'll be lost.
4726                  */
4727                 if (ret == -EINTR)
4728                         cancel_charge(root_mem_cgroup, 1);
4729                 if (ret)
4730                         return ret;
4731                 mc.precharge++;
4732                 cond_resched();
4733         }
4734         return 0;
4735 }
4736
4737 /**
4738  * get_mctgt_type - get target type of moving charge
4739  * @vma: the vma the pte to be checked belongs
4740  * @addr: the address corresponding to the pte to be checked
4741  * @ptent: the pte to be checked
4742  * @target: the pointer the target page or swap ent will be stored(can be NULL)
4743  *
4744  * Returns
4745  *   0(MC_TARGET_NONE): if the pte is not a target for move charge.
4746  *   1(MC_TARGET_PAGE): if the page corresponding to this pte is a target for
4747  *     move charge. if @target is not NULL, the page is stored in target->page
4748  *     with extra refcnt got(Callers should handle it).
4749  *   2(MC_TARGET_SWAP): if the swap entry corresponding to this pte is a
4750  *     target for charge migration. if @target is not NULL, the entry is stored
4751  *     in target->ent.
4752  *
4753  * Called with pte lock held.
4754  */
4755 union mc_target {
4756         struct page     *page;
4757         swp_entry_t     ent;
4758 };
4759
4760 enum mc_target_type {
4761         MC_TARGET_NONE = 0,
4762         MC_TARGET_PAGE,
4763         MC_TARGET_SWAP,
4764 };
4765
4766 static struct page *mc_handle_present_pte(struct vm_area_struct *vma,
4767                                                 unsigned long addr, pte_t ptent)
4768 {
4769         struct page *page = vm_normal_page(vma, addr, ptent);
4770
4771         if (!page || !page_mapped(page))
4772                 return NULL;
4773         if (PageAnon(page)) {
4774                 if (!(mc.flags & MOVE_ANON))
4775                         return NULL;
4776         } else {
4777                 if (!(mc.flags & MOVE_FILE))
4778                         return NULL;
4779         }
4780         if (!get_page_unless_zero(page))
4781                 return NULL;
4782
4783         return page;
4784 }
4785
4786 #ifdef CONFIG_SWAP
4787 static struct page *mc_handle_swap_pte(struct vm_area_struct *vma,
4788                         unsigned long addr, pte_t ptent, swp_entry_t *entry)
4789 {
4790         struct page *page = NULL;
4791         swp_entry_t ent = pte_to_swp_entry(ptent);
4792
4793         if (!(mc.flags & MOVE_ANON) || non_swap_entry(ent))
4794                 return NULL;
4795         /*
4796          * Because lookup_swap_cache() updates some statistics counter,
4797          * we call find_get_page() with swapper_space directly.
4798          */
4799         page = find_get_page(swap_address_space(ent), ent.val);
4800         if (do_swap_account)
4801                 entry->val = ent.val;
4802
4803         return page;
4804 }
4805 #else
4806 static struct page *mc_handle_swap_pte(struct vm_area_struct *vma,
4807                         unsigned long addr, pte_t ptent, swp_entry_t *entry)
4808 {
4809         return NULL;
4810 }
4811 #endif
4812
4813 static struct page *mc_handle_file_pte(struct vm_area_struct *vma,
4814                         unsigned long addr, pte_t ptent, swp_entry_t *entry)
4815 {
4816         struct page *page = NULL;
4817         struct address_space *mapping;
4818         pgoff_t pgoff;
4819
4820         if (!vma->vm_file) /* anonymous vma */
4821                 return NULL;
4822         if (!(mc.flags & MOVE_FILE))
4823                 return NULL;
4824
4825         mapping = vma->vm_file->f_mapping;
4826         pgoff = linear_page_index(vma, addr);
4827
4828         /* page is moved even if it's not RSS of this task(page-faulted). */
4829 #ifdef CONFIG_SWAP
4830         /* shmem/tmpfs may report page out on swap: account for that too. */
4831         if (shmem_mapping(mapping)) {
4832                 page = find_get_entry(mapping, pgoff);
4833                 if (radix_tree_exceptional_entry(page)) {
4834                         swp_entry_t swp = radix_to_swp_entry(page);
4835                         if (do_swap_account)
4836                                 *entry = swp;
4837                         page = find_get_page(swap_address_space(swp), swp.val);
4838                 }
4839         } else
4840                 page = find_get_page(mapping, pgoff);
4841 #else
4842         page = find_get_page(mapping, pgoff);
4843 #endif
4844         return page;
4845 }
4846
4847 static enum mc_target_type get_mctgt_type(struct vm_area_struct *vma,
4848                 unsigned long addr, pte_t ptent, union mc_target *target)
4849 {
4850         struct page *page = NULL;
4851         enum mc_target_type ret = MC_TARGET_NONE;
4852         swp_entry_t ent = { .val = 0 };
4853
4854         if (pte_present(ptent))
4855                 page = mc_handle_present_pte(vma, addr, ptent);
4856         else if (is_swap_pte(ptent))
4857                 page = mc_handle_swap_pte(vma, addr, ptent, &ent);
4858         else if (pte_none(ptent))
4859                 page = mc_handle_file_pte(vma, addr, ptent, &ent);
4860
4861         if (!page && !ent.val)
4862                 return ret;
4863         if (page) {
4864                 /*
4865                  * Do only loose check w/o serialization.
4866                  * mem_cgroup_move_account() checks the page is valid or
4867                  * not under LRU exclusion.
4868                  */
4869                 if (page->mem_cgroup == mc.from) {
4870                         ret = MC_TARGET_PAGE;
4871                         if (target)
4872                                 target->page = page;
4873                 }
4874                 if (!ret || !target)
4875                         put_page(page);
4876         }
4877         /* There is a swap entry and a page doesn't exist or isn't charged */
4878         if (ent.val && !ret &&
4879             mem_cgroup_id(mc.from) == lookup_swap_cgroup_id(ent)) {
4880                 ret = MC_TARGET_SWAP;
4881                 if (target)
4882                         target->ent = ent;
4883         }
4884         return ret;
4885 }
4886
4887 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
4888 /*
4889  * We don't consider swapping or file mapped pages because THP does not
4890  * support them for now.
4891  * Caller should make sure that pmd_trans_huge(pmd) is true.
4892  */
4893 static enum mc_target_type get_mctgt_type_thp(struct vm_area_struct *vma,
4894                 unsigned long addr, pmd_t pmd, union mc_target *target)
4895 {
4896         struct page *page = NULL;
4897         enum mc_target_type ret = MC_TARGET_NONE;
4898
4899         page = pmd_page(pmd);
4900         VM_BUG_ON_PAGE(!page || !PageHead(page), page);
4901         if (!(mc.flags & MOVE_ANON))
4902                 return ret;
4903         if (page->mem_cgroup == mc.from) {
4904                 ret = MC_TARGET_PAGE;
4905                 if (target) {
4906                         get_page(page);
4907                         target->page = page;
4908                 }
4909         }
4910         return ret;
4911 }
4912 #else
4913 static inline enum mc_target_type get_mctgt_type_thp(struct vm_area_struct *vma,
4914                 unsigned long addr, pmd_t pmd, union mc_target *target)
4915 {
4916         return MC_TARGET_NONE;
4917 }
4918 #endif
4919
4920 static int mem_cgroup_count_precharge_pte_range(pmd_t *pmd,
4921                                         unsigned long addr, unsigned long end,
4922                                         struct mm_walk *walk)
4923 {
4924         struct vm_area_struct *vma = walk->vma;
4925         pte_t *pte;
4926         spinlock_t *ptl;
4927
4928         if (pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
4929                 if (get_mctgt_type_thp(vma, addr, *pmd, NULL) == MC_TARGET_PAGE)
4930                         mc.precharge += HPAGE_PMD_NR;
4931                 spin_unlock(ptl);
4932                 return 0;
4933         }
4934
4935         if (pmd_trans_unstable(pmd))
4936                 return 0;
4937         pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
4938         for (; addr != end; pte++, addr += PAGE_SIZE)
4939                 if (get_mctgt_type(vma, addr, *pte, NULL))
4940                         mc.precharge++; /* increment precharge temporarily */
4941         pte_unmap_unlock(pte - 1, ptl);
4942         cond_resched();
4943
4944         return 0;
4945 }
4946
4947 static unsigned long mem_cgroup_count_precharge(struct mm_struct *mm)
4948 {
4949         unsigned long precharge;
4950
4951         struct mm_walk mem_cgroup_count_precharge_walk = {
4952                 .pmd_entry = mem_cgroup_count_precharge_pte_range,
4953                 .mm = mm,
4954         };
4955         down_read(&mm->mmap_sem);
4956         walk_page_range(0, ~0UL, &mem_cgroup_count_precharge_walk);
4957         up_read(&mm->mmap_sem);
4958
4959         precharge = mc.precharge;
4960         mc.precharge = 0;
4961
4962         return precharge;
4963 }
4964
4965 static int mem_cgroup_precharge_mc(struct mm_struct *mm)
4966 {
4967         unsigned long precharge = mem_cgroup_count_precharge(mm);
4968
4969         VM_BUG_ON(mc.moving_task);
4970         mc.moving_task = current;
4971         return mem_cgroup_do_precharge(precharge);
4972 }
4973
4974 /* cancels all extra charges on mc.from and mc.to, and wakes up all waiters. */
4975 static void __mem_cgroup_clear_mc(void)
4976 {
4977         struct mem_cgroup *from = mc.from;
4978         struct mem_cgroup *to = mc.to;
4979
4980         /* we must uncharge all the leftover precharges from mc.to */
4981         if (mc.precharge) {
4982                 cancel_charge(mc.to, mc.precharge);
4983                 mc.precharge = 0;
4984         }
4985         /*
4986          * we didn't uncharge from mc.from at mem_cgroup_move_account(), so
4987          * we must uncharge here.
4988          */
4989         if (mc.moved_charge) {
4990                 cancel_charge(mc.from, mc.moved_charge);
4991                 mc.moved_charge = 0;
4992         }
4993         /* we must fixup refcnts and charges */
4994         if (mc.moved_swap) {
4995                 /* uncharge swap account from the old cgroup */
4996                 if (!mem_cgroup_is_root(mc.from))
4997                         page_counter_uncharge(&mc.from->memsw, mc.moved_swap);
4998
4999                 /*
5000                  * we charged both to->memory and to->memsw, so we
5001                  * should uncharge to->memory.
5002                  */
5003                 if (!mem_cgroup_is_root(mc.to))
5004                         page_counter_uncharge(&mc.to->memory, mc.moved_swap);
5005
5006                 css_put_many(&mc.from->css, mc.moved_swap);
5007
5008                 /* we've already done css_get(mc.to) */
5009                 mc.moved_swap = 0;
5010         }
5011         memcg_oom_recover(from);
5012         memcg_oom_recover(to);
5013         wake_up_all(&mc.waitq);
5014 }
5015
5016 static void mem_cgroup_clear_mc(void)
5017 {
5018         /*
5019          * we must clear moving_task before waking up waiters at the end of
5020          * task migration.
5021          */
5022         mc.moving_task = NULL;
5023         __mem_cgroup_clear_mc();
5024         spin_lock(&mc.lock);
5025         mc.from = NULL;
5026         mc.to = NULL;
5027         spin_unlock(&mc.lock);
5028 }
5029
5030 static int mem_cgroup_can_attach(struct cgroup_subsys_state *css,
5031                                  struct cgroup_taskset *tset)
5032 {
5033         struct task_struct *p = cgroup_taskset_first(tset);
5034         int ret = 0;
5035         struct mem_cgroup *memcg = mem_cgroup_from_css(css);
5036         unsigned long move_flags;
5037
5038         /*
5039          * We are now commited to this value whatever it is. Changes in this
5040          * tunable will only affect upcoming migrations, not the current one.
5041          * So we need to save it, and keep it going.
5042          */
5043         move_flags = ACCESS_ONCE(memcg->move_charge_at_immigrate);
5044         if (move_flags) {
5045                 struct mm_struct *mm;
5046                 struct mem_cgroup *from = mem_cgroup_from_task(p);
5047
5048                 VM_BUG_ON(from == memcg);
5049
5050                 mm = get_task_mm(p);
5051                 if (!mm)
5052                         return 0;
5053                 /* We move charges only when we move a owner of the mm */
5054                 if (mm->owner == p) {
5055                         VM_BUG_ON(mc.from);
5056                         VM_BUG_ON(mc.to);
5057                         VM_BUG_ON(mc.precharge);
5058                         VM_BUG_ON(mc.moved_charge);
5059                         VM_BUG_ON(mc.moved_swap);
5060
5061                         spin_lock(&mc.lock);
5062                         mc.from = from;
5063                         mc.to = memcg;
5064                         mc.flags = move_flags;
5065                         spin_unlock(&mc.lock);
5066                         /* We set mc.moving_task later */
5067
5068                         ret = mem_cgroup_precharge_mc(mm);
5069                         if (ret)
5070                                 mem_cgroup_clear_mc();
5071                 }
5072                 mmput(mm);
5073         }
5074         return ret;
5075 }
5076
5077 static void mem_cgroup_cancel_attach(struct cgroup_subsys_state *css,
5078                                      struct cgroup_taskset *tset)
5079 {
5080         if (mc.to)
5081                 mem_cgroup_clear_mc();
5082 }
5083
5084 static int mem_cgroup_move_charge_pte_range(pmd_t *pmd,
5085                                 unsigned long addr, unsigned long end,
5086                                 struct mm_walk *walk)
5087 {
5088         int ret = 0;
5089         struct vm_area_struct *vma = walk->vma;
5090         pte_t *pte;
5091         spinlock_t *ptl;
5092         enum mc_target_type target_type;
5093         union mc_target target;
5094         struct page *page;
5095
5096         /*
5097          * We don't take compound_lock() here but no race with splitting thp
5098          * happens because:
5099          *  - if pmd_trans_huge_lock() returns 1, the relevant thp is not
5100          *    under splitting, which means there's no concurrent thp split,
5101          *  - if another thread runs into split_huge_page() just after we
5102          *    entered this if-block, the thread must wait for page table lock
5103          *    to be unlocked in __split_huge_page_splitting(), where the main
5104          *    part of thp split is not executed yet.
5105          */
5106         if (pmd_trans_huge_lock(pmd, vma, &ptl) == 1) {
5107                 if (mc.precharge < HPAGE_PMD_NR) {
5108                         spin_unlock(ptl);
5109                         return 0;
5110                 }
5111                 target_type = get_mctgt_type_thp(vma, addr, *pmd, &target);
5112                 if (target_type == MC_TARGET_PAGE) {
5113                         page = target.page;
5114                         if (!isolate_lru_page(page)) {
5115                                 if (!mem_cgroup_move_account(page, HPAGE_PMD_NR,
5116                                                              mc.from, mc.to)) {
5117                                         mc.precharge -= HPAGE_PMD_NR;
5118                                         mc.moved_charge += HPAGE_PMD_NR;
5119                                 }
5120                                 putback_lru_page(page);
5121                         }
5122                         put_page(page);
5123                 }
5124                 spin_unlock(ptl);
5125                 return 0;
5126         }
5127
5128         if (pmd_trans_unstable(pmd))
5129                 return 0;
5130 retry:
5131         pte = pte_offset_map_lock(vma->vm_mm, pmd, addr, &ptl);
5132         for (; addr != end; addr += PAGE_SIZE) {
5133                 pte_t ptent = *(pte++);
5134                 swp_entry_t ent;
5135
5136                 if (!mc.precharge)
5137                         break;
5138
5139                 switch (get_mctgt_type(vma, addr, ptent, &target)) {
5140                 case MC_TARGET_PAGE:
5141                         page = target.page;
5142                         if (isolate_lru_page(page))
5143                                 goto put;
5144                         if (!mem_cgroup_move_account(page, 1, mc.from, mc.to)) {
5145                                 mc.precharge--;
5146                                 /* we uncharge from mc.from later. */
5147                                 mc.moved_charge++;
5148                         }
5149                         putback_lru_page(page);
5150 put:                    /* get_mctgt_type() gets the page */
5151                         put_page(page);
5152                         break;
5153                 case MC_TARGET_SWAP:
5154                         ent = target.ent;
5155                         if (!mem_cgroup_move_swap_account(ent, mc.from, mc.to)) {
5156                                 mc.precharge--;
5157                                 /* we fixup refcnts and charges later. */
5158                                 mc.moved_swap++;
5159                         }
5160                         break;
5161                 default:
5162                         break;
5163                 }
5164         }
5165         pte_unmap_unlock(pte - 1, ptl);
5166         cond_resched();
5167
5168         if (addr != end) {
5169                 /*
5170                  * We have consumed all precharges we got in can_attach().
5171                  * We try charge one by one, but don't do any additional
5172                  * charges to mc.to if we have failed in charge once in attach()
5173                  * phase.
5174                  */
5175                 ret = mem_cgroup_do_precharge(1);
5176                 if (!ret)
5177                         goto retry;
5178         }
5179
5180         return ret;
5181 }
5182
5183 static void mem_cgroup_move_charge(struct mm_struct *mm)
5184 {
5185         struct mm_walk mem_cgroup_move_charge_walk = {
5186                 .pmd_entry = mem_cgroup_move_charge_pte_range,
5187                 .mm = mm,
5188         };
5189
5190         lru_add_drain_all();
5191         /*
5192          * Signal mem_cgroup_begin_page_stat() to take the memcg's
5193          * move_lock while we're moving its pages to another memcg.
5194          * Then wait for already started RCU-only updates to finish.
5195          */
5196         atomic_inc(&mc.from->moving_account);
5197         synchronize_rcu();
5198 retry:
5199         if (unlikely(!down_read_trylock(&mm->mmap_sem))) {
5200                 /*
5201                  * Someone who are holding the mmap_sem might be waiting in
5202                  * waitq. So we cancel all extra charges, wake up all waiters,
5203                  * and retry. Because we cancel precharges, we might not be able
5204                  * to move enough charges, but moving charge is a best-effort
5205                  * feature anyway, so it wouldn't be a big problem.
5206                  */
5207                 __mem_cgroup_clear_mc();
5208                 cond_resched();
5209                 goto retry;
5210         }
5211         /*
5212          * When we have consumed all precharges and failed in doing
5213          * additional charge, the page walk just aborts.
5214          */
5215         walk_page_range(0, ~0UL, &mem_cgroup_move_charge_walk);
5216         up_read(&mm->mmap_sem);
5217         atomic_dec(&mc.from->moving_account);
5218 }
5219
5220 static void mem_cgroup_move_task(struct cgroup_subsys_state *css,
5221                                  struct cgroup_taskset *tset)
5222 {
5223         struct task_struct *p = cgroup_taskset_first(tset);
5224         struct mm_struct *mm = get_task_mm(p);
5225
5226         if (mm) {
5227                 if (mc.to)
5228                         mem_cgroup_move_charge(mm);
5229                 mmput(mm);
5230         }
5231         if (mc.to)
5232                 mem_cgroup_clear_mc();
5233 }
5234 #else   /* !CONFIG_MMU */
5235 static int mem_cgroup_can_attach(struct cgroup_subsys_state *css,
5236                                  struct cgroup_taskset *tset)
5237 {
5238         return 0;
5239 }
5240 static void mem_cgroup_cancel_attach(struct cgroup_subsys_state *css,
5241                                      struct cgroup_taskset *tset)
5242 {
5243 }
5244 static void mem_cgroup_move_task(struct cgroup_subsys_state *css,
5245                                  struct cgroup_taskset *tset)
5246 {
5247 }
5248 #endif
5249
5250 /*
5251  * Cgroup retains root cgroups across [un]mount cycles making it necessary
5252  * to verify whether we're attached to the default hierarchy on each mount
5253  * attempt.
5254  */
5255 static void mem_cgroup_bind(struct cgroup_subsys_state *root_css)
5256 {
5257         /*
5258          * use_hierarchy is forced on the default hierarchy.  cgroup core
5259          * guarantees that @root doesn't have any children, so turning it
5260          * on for the root memcg is enough.
5261          */
5262         if (cgroup_on_dfl(root_css->cgroup))
5263                 mem_cgroup_from_css(root_css)->use_hierarchy = true;
5264 }
5265
5266 static u64 memory_current_read(struct cgroup_subsys_state *css,
5267                                struct cftype *cft)
5268 {
5269         return mem_cgroup_usage(mem_cgroup_from_css(css), false);
5270 }
5271
5272 static int memory_low_show(struct seq_file *m, void *v)
5273 {
5274         struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5275         unsigned long low = ACCESS_ONCE(memcg->low);
5276
5277         if (low == PAGE_COUNTER_MAX)
5278                 seq_puts(m, "infinity\n");
5279         else
5280                 seq_printf(m, "%llu\n", (u64)low * PAGE_SIZE);
5281
5282         return 0;
5283 }
5284
5285 static ssize_t memory_low_write(struct kernfs_open_file *of,
5286                                 char *buf, size_t nbytes, loff_t off)
5287 {
5288         struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
5289         unsigned long low;
5290         int err;
5291
5292         buf = strstrip(buf);
5293         err = page_counter_memparse(buf, "infinity", &low);
5294         if (err)
5295                 return err;
5296
5297         memcg->low = low;
5298
5299         return nbytes;
5300 }
5301
5302 static int memory_high_show(struct seq_file *m, void *v)
5303 {
5304         struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5305         unsigned long high = ACCESS_ONCE(memcg->high);
5306
5307         if (high == PAGE_COUNTER_MAX)
5308                 seq_puts(m, "infinity\n");
5309         else
5310                 seq_printf(m, "%llu\n", (u64)high * PAGE_SIZE);
5311
5312         return 0;
5313 }
5314
5315 static ssize_t memory_high_write(struct kernfs_open_file *of,
5316                                  char *buf, size_t nbytes, loff_t off)
5317 {
5318         struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
5319         unsigned long high;
5320         int err;
5321
5322         buf = strstrip(buf);
5323         err = page_counter_memparse(buf, "infinity", &high);
5324         if (err)
5325                 return err;
5326
5327         memcg->high = high;
5328
5329         return nbytes;
5330 }
5331
5332 static int memory_max_show(struct seq_file *m, void *v)
5333 {
5334         struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5335         unsigned long max = ACCESS_ONCE(memcg->memory.limit);
5336
5337         if (max == PAGE_COUNTER_MAX)
5338                 seq_puts(m, "infinity\n");
5339         else
5340                 seq_printf(m, "%llu\n", (u64)max * PAGE_SIZE);
5341
5342         return 0;
5343 }
5344
5345 static ssize_t memory_max_write(struct kernfs_open_file *of,
5346                                 char *buf, size_t nbytes, loff_t off)
5347 {
5348         struct mem_cgroup *memcg = mem_cgroup_from_css(of_css(of));
5349         unsigned long max;
5350         int err;
5351
5352         buf = strstrip(buf);
5353         err = page_counter_memparse(buf, "infinity", &max);
5354         if (err)
5355                 return err;
5356
5357         err = mem_cgroup_resize_limit(memcg, max);
5358         if (err)
5359                 return err;
5360
5361         return nbytes;
5362 }
5363
5364 static int memory_events_show(struct seq_file *m, void *v)
5365 {
5366         struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
5367
5368         seq_printf(m, "low %lu\n", mem_cgroup_read_events(memcg, MEMCG_LOW));
5369         seq_printf(m, "high %lu\n", mem_cgroup_read_events(memcg, MEMCG_HIGH));
5370         seq_printf(m, "max %lu\n", mem_cgroup_read_events(memcg, MEMCG_MAX));
5371         seq_printf(m, "oom %lu\n", mem_cgroup_read_events(memcg, MEMCG_OOM));
5372
5373         return 0;
5374 }
5375
5376 static struct cftype memory_files[] = {
5377         {
5378                 .name = "current",
5379                 .read_u64 = memory_current_read,
5380         },
5381         {
5382                 .name = "low",
5383                 .flags = CFTYPE_NOT_ON_ROOT,
5384                 .seq_show = memory_low_show,
5385                 .write = memory_low_write,
5386         },
5387         {
5388                 .name = "high",
5389                 .flags = CFTYPE_NOT_ON_ROOT,
5390                 .seq_show = memory_high_show,
5391                 .write = memory_high_write,
5392         },
5393         {
5394                 .name = "max",
5395                 .flags = CFTYPE_NOT_ON_ROOT,
5396                 .seq_show = memory_max_show,
5397                 .write = memory_max_write,
5398         },
5399         {
5400                 .name = "events",
5401                 .flags = CFTYPE_NOT_ON_ROOT,
5402                 .seq_show = memory_events_show,
5403         },
5404         { }     /* terminate */
5405 };
5406
5407 struct cgroup_subsys memory_cgrp_subsys = {
5408         .css_alloc = mem_cgroup_css_alloc,
5409         .css_online = mem_cgroup_css_online,
5410         .css_offline = mem_cgroup_css_offline,
5411         .css_free = mem_cgroup_css_free,
5412         .css_reset = mem_cgroup_css_reset,
5413         .can_attach = mem_cgroup_can_attach,
5414         .cancel_attach = mem_cgroup_cancel_attach,
5415         .attach = mem_cgroup_move_task,
5416         .bind = mem_cgroup_bind,
5417         .dfl_cftypes = memory_files,
5418         .legacy_cftypes = mem_cgroup_legacy_files,
5419         .early_init = 0,
5420 };
5421
5422 /**
5423  * mem_cgroup_events - count memory events against a cgroup
5424  * @memcg: the memory cgroup
5425  * @idx: the event index
5426  * @nr: the number of events to account for
5427  */
5428 void mem_cgroup_events(struct mem_cgroup *memcg,
5429                        enum mem_cgroup_events_index idx,
5430                        unsigned int nr)
5431 {
5432         this_cpu_add(memcg->stat->events[idx], nr);
5433 }
5434
5435 /**
5436  * mem_cgroup_low - check if memory consumption is below the normal range
5437  * @root: the highest ancestor to consider
5438  * @memcg: the memory cgroup to check
5439  *
5440  * Returns %true if memory consumption of @memcg, and that of all
5441  * configurable ancestors up to @root, is below the normal range.
5442  */
5443 bool mem_cgroup_low(struct mem_cgroup *root, struct mem_cgroup *memcg)
5444 {
5445         if (mem_cgroup_disabled())
5446                 return false;
5447
5448         /*
5449          * The toplevel group doesn't have a configurable range, so
5450          * it's never low when looked at directly, and it is not
5451          * considered an ancestor when assessing the hierarchy.
5452          */
5453
5454         if (memcg == root_mem_cgroup)
5455                 return false;
5456
5457         if (page_counter_read(&memcg->memory) > memcg->low)
5458                 return false;
5459
5460         while (memcg != root) {
5461                 memcg = parent_mem_cgroup(memcg);
5462
5463                 if (memcg == root_mem_cgroup)
5464                         break;
5465
5466                 if (page_counter_read(&memcg->memory) > memcg->low)
5467                         return false;
5468         }
5469         return true;
5470 }
5471
5472 /**
5473  * mem_cgroup_try_charge - try charging a page
5474  * @page: page to charge
5475  * @mm: mm context of the victim
5476  * @gfp_mask: reclaim mode
5477  * @memcgp: charged memcg return
5478  *
5479  * Try to charge @page to the memcg that @mm belongs to, reclaiming
5480  * pages according to @gfp_mask if necessary.
5481  *
5482  * Returns 0 on success, with *@memcgp pointing to the charged memcg.
5483  * Otherwise, an error code is returned.
5484  *
5485  * After page->mapping has been set up, the caller must finalize the
5486  * charge with mem_cgroup_commit_charge().  Or abort the transaction
5487  * with mem_cgroup_cancel_charge() in case page instantiation fails.
5488  */
5489 int mem_cgroup_try_charge(struct page *page, struct mm_struct *mm,
5490                           gfp_t gfp_mask, struct mem_cgroup **memcgp)
5491 {
5492         struct mem_cgroup *memcg = NULL;
5493         unsigned int nr_pages = 1;
5494         int ret = 0;
5495
5496         if (mem_cgroup_disabled())
5497                 goto out;
5498
5499         if (PageSwapCache(page)) {
5500                 /*
5501                  * Every swap fault against a single page tries to charge the
5502                  * page, bail as early as possible.  shmem_unuse() encounters
5503                  * already charged pages, too.  The USED bit is protected by
5504                  * the page lock, which serializes swap cache removal, which
5505                  * in turn serializes uncharging.
5506                  */
5507                 if (page->mem_cgroup)
5508                         goto out;
5509         }
5510
5511         if (PageTransHuge(page)) {
5512                 nr_pages <<= compound_order(page);
5513                 VM_BUG_ON_PAGE(!PageTransHuge(page), page);
5514         }
5515
5516         if (do_swap_account && PageSwapCache(page))
5517                 memcg = try_get_mem_cgroup_from_page(page);
5518         if (!memcg)
5519                 memcg = get_mem_cgroup_from_mm(mm);
5520
5521         ret = try_charge(memcg, gfp_mask, nr_pages);
5522
5523         css_put(&memcg->css);
5524
5525         if (ret == -EINTR) {
5526                 memcg = root_mem_cgroup;
5527                 ret = 0;
5528         }
5529 out:
5530         *memcgp = memcg;
5531         return ret;
5532 }
5533
5534 /**
5535  * mem_cgroup_commit_charge - commit a page charge
5536  * @page: page to charge
5537  * @memcg: memcg to charge the page to
5538  * @lrucare: page might be on LRU already
5539  *
5540  * Finalize a charge transaction started by mem_cgroup_try_charge(),
5541  * after page->mapping has been set up.  This must happen atomically
5542  * as part of the page instantiation, i.e. under the page table lock
5543  * for anonymous pages, under the page lock for page and swap cache.
5544  *
5545  * In addition, the page must not be on the LRU during the commit, to
5546  * prevent racing with task migration.  If it might be, use @lrucare.
5547  *
5548  * Use mem_cgroup_cancel_charge() to cancel the transaction instead.
5549  */
5550 void mem_cgroup_commit_charge(struct page *page, struct mem_cgroup *memcg,
5551                               bool lrucare)
5552 {
5553         unsigned int nr_pages = 1;
5554
5555         VM_BUG_ON_PAGE(!page->mapping, page);
5556         VM_BUG_ON_PAGE(PageLRU(page) && !lrucare, page);
5557
5558         if (mem_cgroup_disabled())
5559                 return;
5560         /*
5561          * Swap faults will attempt to charge the same page multiple
5562          * times.  But reuse_swap_page() might have removed the page
5563          * from swapcache already, so we can't check PageSwapCache().
5564          */
5565         if (!memcg)
5566                 return;
5567
5568         commit_charge(page, memcg, lrucare);
5569
5570         if (PageTransHuge(page)) {
5571                 nr_pages <<= compound_order(page);
5572                 VM_BUG_ON_PAGE(!PageTransHuge(page), page);
5573         }
5574
5575         local_irq_disable();
5576         mem_cgroup_charge_statistics(memcg, page, nr_pages);
5577         memcg_check_events(memcg, page);
5578         local_irq_enable();
5579
5580         if (do_swap_account && PageSwapCache(page)) {
5581                 swp_entry_t entry = { .val = page_private(page) };
5582                 /*
5583                  * The swap entry might not get freed for a long time,
5584                  * let's not wait for it.  The page already received a
5585                  * memory+swap charge, drop the swap entry duplicate.
5586                  */
5587                 mem_cgroup_uncharge_swap(entry);
5588         }
5589 }
5590
5591 /**
5592  * mem_cgroup_cancel_charge - cancel a page charge
5593  * @page: page to charge
5594  * @memcg: memcg to charge the page to
5595  *
5596  * Cancel a charge transaction started by mem_cgroup_try_charge().
5597  */
5598 void mem_cgroup_cancel_charge(struct page *page, struct mem_cgroup *memcg)
5599 {
5600         unsigned int nr_pages = 1;
5601
5602         if (mem_cgroup_disabled())
5603                 return;
5604         /*
5605          * Swap faults will attempt to charge the same page multiple
5606          * times.  But reuse_swap_page() might have removed the page
5607          * from swapcache already, so we can't check PageSwapCache().
5608          */
5609         if (!memcg)
5610                 return;
5611
5612         if (PageTransHuge(page)) {
5613                 nr_pages <<= compound_order(page);
5614                 VM_BUG_ON_PAGE(!PageTransHuge(page), page);
5615         }
5616
5617         cancel_charge(memcg, nr_pages);
5618 }
5619
5620 static void uncharge_batch(struct mem_cgroup *memcg, unsigned long pgpgout,
5621                            unsigned long nr_anon, unsigned long nr_file,
5622                            unsigned long nr_huge, struct page *dummy_page)
5623 {
5624         unsigned long nr_pages = nr_anon + nr_file;
5625         unsigned long flags;
5626
5627         if (!mem_cgroup_is_root(memcg)) {
5628                 page_counter_uncharge(&memcg->memory, nr_pages);
5629                 if (do_swap_account)
5630                         page_counter_uncharge(&memcg->memsw, nr_pages);
5631                 memcg_oom_recover(memcg);
5632         }
5633
5634         local_irq_save(flags);
5635         __this_cpu_sub(memcg->stat->count[MEM_CGROUP_STAT_RSS], nr_anon);
5636         __this_cpu_sub(memcg->stat->count[MEM_CGROUP_STAT_CACHE], nr_file);
5637         __this_cpu_sub(memcg->stat->count[MEM_CGROUP_STAT_RSS_HUGE], nr_huge);
5638         __this_cpu_add(memcg->stat->events[MEM_CGROUP_EVENTS_PGPGOUT], pgpgout);
5639         __this_cpu_add(memcg->stat->nr_page_events, nr_pages);
5640         memcg_check_events(memcg, dummy_page);
5641         local_irq_restore(flags);
5642
5643         if (!mem_cgroup_is_root(memcg))
5644                 css_put_many(&memcg->css, nr_pages);
5645 }
5646
5647 static void uncharge_list(struct list_head *page_list)
5648 {
5649         struct mem_cgroup *memcg = NULL;
5650         unsigned long nr_anon = 0;
5651         unsigned long nr_file = 0;
5652         unsigned long nr_huge = 0;
5653         unsigned long pgpgout = 0;
5654         struct list_head *next;
5655         struct page *page;
5656
5657         next = page_list->next;
5658         do {
5659                 unsigned int nr_pages = 1;
5660
5661                 page = list_entry(next, struct page, lru);
5662                 next = page->lru.next;
5663
5664                 VM_BUG_ON_PAGE(PageLRU(page), page);
5665                 VM_BUG_ON_PAGE(page_count(page), page);
5666
5667                 if (!page->mem_cgroup)
5668                         continue;
5669
5670                 /*
5671                  * Nobody should be changing or seriously looking at
5672                  * page->mem_cgroup at this point, we have fully
5673                  * exclusive access to the page.
5674                  */
5675
5676                 if (memcg != page->mem_cgroup) {
5677                         if (memcg) {
5678                                 uncharge_batch(memcg, pgpgout, nr_anon, nr_file,
5679                                                nr_huge, page);
5680                                 pgpgout = nr_anon = nr_file = nr_huge = 0;
5681                         }
5682                         memcg = page->mem_cgroup;
5683                 }
5684
5685                 if (PageTransHuge(page)) {
5686                         nr_pages <<= compound_order(page);
5687                         VM_BUG_ON_PAGE(!PageTransHuge(page), page);
5688                         nr_huge += nr_pages;
5689                 }
5690
5691                 if (PageAnon(page))
5692                         nr_anon += nr_pages;
5693                 else
5694                         nr_file += nr_pages;
5695
5696                 page->mem_cgroup = NULL;
5697
5698                 pgpgout++;
5699         } while (next != page_list);
5700
5701         if (memcg)
5702                 uncharge_batch(memcg, pgpgout, nr_anon, nr_file,
5703                                nr_huge, page);
5704 }
5705
5706 /**
5707  * mem_cgroup_uncharge - uncharge a page
5708  * @page: page to uncharge
5709  *
5710  * Uncharge a page previously charged with mem_cgroup_try_charge() and
5711  * mem_cgroup_commit_charge().
5712  */
5713 void mem_cgroup_uncharge(struct page *page)
5714 {
5715         if (mem_cgroup_disabled())
5716                 return;
5717
5718         /* Don't touch page->lru of any random page, pre-check: */
5719         if (!page->mem_cgroup)
5720                 return;
5721
5722         INIT_LIST_HEAD(&page->lru);
5723         uncharge_list(&page->lru);
5724 }
5725
5726 /**
5727  * mem_cgroup_uncharge_list - uncharge a list of page
5728  * @page_list: list of pages to uncharge
5729  *
5730  * Uncharge a list of pages previously charged with
5731  * mem_cgroup_try_charge() and mem_cgroup_commit_charge().
5732  */
5733 void mem_cgroup_uncharge_list(struct list_head *page_list)
5734 {
5735         if (mem_cgroup_disabled())
5736                 return;
5737
5738         if (!list_empty(page_list))
5739                 uncharge_list(page_list);
5740 }
5741
5742 /**
5743  * mem_cgroup_migrate - migrate a charge to another page
5744  * @oldpage: currently charged page
5745  * @newpage: page to transfer the charge to
5746  * @lrucare: either or both pages might be on the LRU already
5747  *
5748  * Migrate the charge from @oldpage to @newpage.
5749  *
5750  * Both pages must be locked, @newpage->mapping must be set up.
5751  */
5752 void mem_cgroup_migrate(struct page *oldpage, struct page *newpage,
5753                         bool lrucare)
5754 {
5755         struct mem_cgroup *memcg;
5756         int isolated;
5757
5758         VM_BUG_ON_PAGE(!PageLocked(oldpage), oldpage);
5759         VM_BUG_ON_PAGE(!PageLocked(newpage), newpage);
5760         VM_BUG_ON_PAGE(!lrucare && PageLRU(oldpage), oldpage);
5761         VM_BUG_ON_PAGE(!lrucare && PageLRU(newpage), newpage);
5762         VM_BUG_ON_PAGE(PageAnon(oldpage) != PageAnon(newpage), newpage);
5763         VM_BUG_ON_PAGE(PageTransHuge(oldpage) != PageTransHuge(newpage),
5764                        newpage);
5765
5766         if (mem_cgroup_disabled())
5767                 return;
5768
5769         /* Page cache replacement: new page already charged? */
5770         if (newpage->mem_cgroup)
5771                 return;
5772
5773         /*
5774          * Swapcache readahead pages can get migrated before being
5775          * charged, and migration from compaction can happen to an
5776          * uncharged page when the PFN walker finds a page that
5777          * reclaim just put back on the LRU but has not released yet.
5778          */
5779         memcg = oldpage->mem_cgroup;
5780         if (!memcg)
5781                 return;
5782
5783         if (lrucare)
5784                 lock_page_lru(oldpage, &isolated);
5785
5786         oldpage->mem_cgroup = NULL;
5787
5788         if (lrucare)
5789                 unlock_page_lru(oldpage, isolated);
5790
5791         commit_charge(newpage, memcg, lrucare);
5792 }
5793
5794 /*
5795  * subsys_initcall() for memory controller.
5796  *
5797  * Some parts like hotcpu_notifier() have to be initialized from this context
5798  * because of lock dependencies (cgroup_lock -> cpu hotplug) but basically
5799  * everything that doesn't depend on a specific mem_cgroup structure should
5800  * be initialized from here.
5801  */
5802 static int __init mem_cgroup_init(void)
5803 {
5804         int cpu, node;
5805
5806         hotcpu_notifier(memcg_cpu_hotplug_callback, 0);
5807
5808         for_each_possible_cpu(cpu)
5809                 INIT_WORK(&per_cpu_ptr(&memcg_stock, cpu)->work,
5810                           drain_local_stock);
5811
5812         for_each_node(node) {
5813                 struct mem_cgroup_tree_per_node *rtpn;
5814                 int zone;
5815
5816                 rtpn = kzalloc_node(sizeof(*rtpn), GFP_KERNEL,
5817                                     node_online(node) ? node : NUMA_NO_NODE);
5818
5819                 for (zone = 0; zone < MAX_NR_ZONES; zone++) {
5820                         struct mem_cgroup_tree_per_zone *rtpz;
5821
5822                         rtpz = &rtpn->rb_tree_per_zone[zone];
5823                         rtpz->rb_root = RB_ROOT;
5824                         spin_lock_init(&rtpz->lock);
5825                 }
5826                 soft_limit_tree.rb_tree_per_node[node] = rtpn;
5827         }
5828
5829         return 0;
5830 }
5831 subsys_initcall(mem_cgroup_init);
5832
5833 #ifdef CONFIG_MEMCG_SWAP
5834 /**
5835  * mem_cgroup_swapout - transfer a memsw charge to swap
5836  * @page: page whose memsw charge to transfer
5837  * @entry: swap entry to move the charge to
5838  *
5839  * Transfer the memsw charge of @page to @entry.
5840  */
5841 void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
5842 {
5843         struct mem_cgroup *memcg;
5844         unsigned short oldid;
5845
5846         VM_BUG_ON_PAGE(PageLRU(page), page);
5847         VM_BUG_ON_PAGE(page_count(page), page);
5848
5849         if (!do_swap_account)
5850                 return;
5851
5852         memcg = page->mem_cgroup;
5853
5854         /* Readahead page, never charged */
5855         if (!memcg)
5856                 return;
5857
5858         oldid = swap_cgroup_record(entry, mem_cgroup_id(memcg));
5859         VM_BUG_ON_PAGE(oldid, page);
5860         mem_cgroup_swap_statistics(memcg, true);
5861
5862         page->mem_cgroup = NULL;
5863
5864         if (!mem_cgroup_is_root(memcg))
5865                 page_counter_uncharge(&memcg->memory, 1);
5866
5867         /* XXX: caller holds IRQ-safe mapping->tree_lock */
5868         VM_BUG_ON(!irqs_disabled());
5869
5870         mem_cgroup_charge_statistics(memcg, page, -1);
5871         memcg_check_events(memcg, page);
5872 }
5873
5874 /**
5875  * mem_cgroup_uncharge_swap - uncharge a swap entry
5876  * @entry: swap entry to uncharge
5877  *
5878  * Drop the memsw charge associated with @entry.
5879  */
5880 void mem_cgroup_uncharge_swap(swp_entry_t entry)
5881 {
5882         struct mem_cgroup *memcg;
5883         unsigned short id;
5884
5885         if (!do_swap_account)
5886                 return;
5887
5888         id = swap_cgroup_record(entry, 0);
5889         rcu_read_lock();
5890         memcg = mem_cgroup_lookup(id);
5891         if (memcg) {
5892                 if (!mem_cgroup_is_root(memcg))
5893                         page_counter_uncharge(&memcg->memsw, 1);
5894                 mem_cgroup_swap_statistics(memcg, false);
5895                 css_put(&memcg->css);
5896         }
5897         rcu_read_unlock();
5898 }
5899
5900 /* for remember boot option*/
5901 #ifdef CONFIG_MEMCG_SWAP_ENABLED
5902 static int really_do_swap_account __initdata = 1;
5903 #else
5904 static int really_do_swap_account __initdata;
5905 #endif
5906
5907 static int __init enable_swap_account(char *s)
5908 {
5909         if (!strcmp(s, "1"))
5910                 really_do_swap_account = 1;
5911         else if (!strcmp(s, "0"))
5912                 really_do_swap_account = 0;
5913         return 1;
5914 }
5915 __setup("swapaccount=", enable_swap_account);
5916
5917 static struct cftype memsw_cgroup_files[] = {
5918         {
5919                 .name = "memsw.usage_in_bytes",
5920                 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_USAGE),
5921                 .read_u64 = mem_cgroup_read_u64,
5922         },
5923         {
5924                 .name = "memsw.max_usage_in_bytes",
5925                 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_MAX_USAGE),
5926                 .write = mem_cgroup_reset,
5927                 .read_u64 = mem_cgroup_read_u64,
5928         },
5929         {
5930                 .name = "memsw.limit_in_bytes",
5931                 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_LIMIT),
5932                 .write = mem_cgroup_write,
5933                 .read_u64 = mem_cgroup_read_u64,
5934         },
5935         {
5936                 .name = "memsw.failcnt",
5937                 .private = MEMFILE_PRIVATE(_MEMSWAP, RES_FAILCNT),
5938                 .write = mem_cgroup_reset,
5939                 .read_u64 = mem_cgroup_read_u64,
5940         },
5941         { },    /* terminate */
5942 };
5943
5944 static int __init mem_cgroup_swap_init(void)
5945 {
5946         if (!mem_cgroup_disabled() && really_do_swap_account) {
5947                 do_swap_account = 1;
5948                 WARN_ON(cgroup_add_legacy_cftypes(&memory_cgrp_subsys,
5949                                                   memsw_cgroup_files));
5950         }
5951         return 0;
5952 }
5953 subsys_initcall(mem_cgroup_swap_init);
5954
5955 #endif /* CONFIG_MEMCG_SWAP */