)]}'
{
  "log": [
    {
      "commit": "4e5f01c2b9b94321992acb09c35d34f5ee5bb274",
      "tree": "4e6ac9d29539dc26468fe2630d0e64cd022b1155",
      "parents": [
        "36b62ad539498d00c2d280a151abad5f7630fa73"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 12 17:18:58 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:07 2012 -0800"
      },
      "message": "memcg: clear pc-\u003emem_cgroup if necessary.\n\nThis is a preparation before removing a flag PCG_ACCT_LRU in page_cgroup\nand reducing atomic ops/complexity in memcg LRU handling.\n\nIn some cases, pages are added to lru before charge to memcg and pages\nare not classfied to memory cgroup at lru addtion.  Now, the lru where\nthe page should be added is determined a bit in page_cgroup-\u003eflags and\npc-\u003emem_cgroup.  I\u0027d like to remove the check of flag.\n\nTo handle the case pc-\u003emem_cgroup may contain stale pointers if pages\nare added to LRU before classification.  This patch resets\npc-\u003emem_cgroup to root_mem_cgroup before lru additions.\n\n[akpm@linux-foundation.org: fix CONFIG_CGROUP_MEM_CONT\u003dn build]\n[hughd@google.com: fix CONFIG_CGROUP_MEM_RES_CTLR\u003dy CONFIG_CGROUP_MEM_RES_CTLR_SWAP\u003dn build]\n[akpm@linux-foundation.org: ksm.c needs memcontrol.h, per Michal]\n[hughd@google.com: stop oops in mem_cgroup_reset_owner()]\n[hughd@google.com: fix page migration to reset_owner]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72835c86ca15d0126354b73d5f29ce9194931c9b",
      "tree": "369f31168b405e4d597b3cd067a1fd0ac2025dbc",
      "parents": [
        "ec0fffd84b162e0563a28a81aa049f946b31a8e2"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:18:32 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:06 2012 -0800"
      },
      "message": "mm: unify remaining mem_cont, mem, etc. variable names to memcg\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e94c8a9cbce1aee4af9e1285802785481b7f93c5",
      "tree": "14d496e62c2e8d59a8954ff10368d59d8dfaea03",
      "parents": [
        "6b208e3f6e35aa76d254c395bdcd984b17c6b626"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 12 17:18:20 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "memcg: make mem_cgroup_split_huge_fixup() more efficient\n\nIn split_huge_page(), mem_cgroup_split_huge_fixup() is called to handle\npage_cgroup modifcations.  It takes move_lock_page_cgroup() and modifies\npage_cgroup and LRU accounting jobs and called HPAGE_PMD_SIZE - 1 times.\n\nBut thinking again,\n  - compound_lock() is held at move_accout...then, it\u0027s not necessary\n    to take move_lock_page_cgroup().\n  - LRU is locked and all tail pages will go into the same LRU as\n    head is now on.\n  - page_cgroup is contiguous in huge page range.\n\nThis patch fixes mem_cgroup_split_huge_fixup() as to be called once per\nhugepage and reduce costs for spliting.\n\n[akpm@linux-foundation.org: fix typo, per Michal]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "925b7673cce39116ce61e7a06683a4a0dad1e72a",
      "tree": "66c134db836e531e196ee3dfc23c124ff74ac827",
      "parents": [
        "6290df545814990ca2663baf6e894669132d5f73"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:18:15 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "mm: make per-memcg LRU lists exclusive\n\nNow that all code that operated on global per-zone LRU lists is\nconverted to operate on per-memory cgroup LRU lists instead, there is no\nreason to keep the double-LRU scheme around any longer.\n\nThe pc-\u003elru member is removed and page-\u003elru is linked directly to the\nper-memory cgroup LRU lists, which removes two pointers from a\ndescriptor that exists for every page frame in the system.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5660048ccac8735d9bc0a46325a02e6a6518b5b2",
      "tree": "4b2269ddd6ca001843187a89fb91278192028d87",
      "parents": [
        "527a5ec9a53471d855291ba9f1fdf1dd4e12a184"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Thu Jan 12 17:17:59 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:05 2012 -0800"
      },
      "message": "mm: move memcg hierarchy reclaim to generic reclaim code\n\nMemory cgroup limit reclaim and traditional global pressure reclaim will\nsoon share the same code to reclaim from a hierarchical tree of memory\ncgroups.\n\nIn preparation of this, move the two right next to each other in\nshrink_zone().\n\nThe mem_cgroup_hierarchical_reclaim() polymath is split into a soft\nlimit reclaim function, which still does hierarchy walking on its own,\nand a limit (shrinking) reclaim function, which relies on generic\nreclaim code to walk the hierarchy.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nReviewed-by: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Greg Thelen \u003cgthelen@google.com\u003e\nCc: Michel Lespinasse \u003cwalken@google.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab936cbcd02072a34b60d268f94440fd5cf1970b",
      "tree": "d37e3e3c54cc4cc691a428b6ceb71b4b40e4f42b",
      "parents": [
        "28d82dc1c4edbc352129f97f4ca22624d1fe61de"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 12 17:17:44 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 12 20:13:04 2012 -0800"
      },
      "message": "memcg: add mem_cgroup_replace_page_cache() to fix LRU issue\n\nCommit ef6a3c6311 (\"mm: add replace_page_cache_page() function\") added a\nfunction replace_page_cache_page().  This function replaces a page in the\nradix-tree with a new page.  WHen doing this, memory cgroup needs to fix\nup the accounting information.  memcg need to check PCG_USED bit etc.\n\nIn some(many?) cases, \u0027newpage\u0027 is on LRU before calling\nreplace_page_cache().  So, memcg\u0027s LRU accounting information should be\nfixed, too.\n\nThis patch adds mem_cgroup_replace_page_cache() and removes the old hooks.\n In that function, old pages will be unaccounted without touching\nres_counter and new page will be accounted to the memcg (of old page).\nWHen overwriting pc-\u003emem_cgroup of newpage, take zone-\u003elru_lock and avoid\nraces with LRU handling.\n\nBackground:\n  replace_page_cache_page() is called by FUSE code in its splice() handling.\n  Here, \u0027newpage\u0027 is replacing oldpage but this newpage is not a newly allocated\n  page and may be on LRU. LRU mis-accounting will be critical for memory cgroup\n  because rmdir() checks the whole LRU is empty and there is no account leak.\n  If a page is on the other LRU than it should be, rmdir() will fail.\n\nThis bug was added in March 2011, but no bug report yet.  I guess there\nare not many people who use memcg and FUSE at the same time with upstream\nkernels.\n\nThe result of this bug is that admin cannot destroy a memcg because of\naccount leak.  So, no panic, no deadlock.  And, even if an active cgroup\nexist, umount can succseed.  So no problem at shutdown.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3969eb3859e4fad4b32ca8f96d4ec8551c20704a",
      "tree": "06620d8c94d92ab187f6ce8e72f2d0453d734314",
      "parents": [
        "2429f7ac2ef429378536d87fcbbf6f424aa5b47f"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 09 13:44:23 2012 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Jan 09 13:44:23 2012 -0800"
      },
      "message": "net: Fix build with INET disabled.\n\n\u003e net/core/sock.c: In function \u0027sk_update_clone\u0027:\n\u003e net/core/sock.c:1278:3: error: implicit declaration of function \u0027sock_update_memcg\u0027\n\nReported-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "888bdaa9b2c426dcca214e6efd388080938082cb",
      "tree": "4f9d9ae8e99318effaaf4e12391cddecd4c9e9da",
      "parents": [
        "f943cbe6fb71d1389dd8684b9b4181e49f8e870c"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Wed Dec 14 23:34:31 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Dec 15 11:59:44 2011 -0500"
      },
      "message": "Move limit definitions outside CONFIG_INET\n\nThey need to be available for other protocols as well, since\nthey are used in sock.c openly\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nCC: Hiroyouki Kamezawa \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCC: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "d1a4c0b37c296e600ffe08edb0db2dc1b8f550d7",
      "tree": "5c3675582cbbdc99f720aa1dcc1821e26c2be1ab",
      "parents": [
        "e1aab161e0135aafcd439be20b4f35e4b0922d95"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Sun Dec 11 21:47:04 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 12 19:04:10 2011 -0500"
      },
      "message": "tcp memory pressure controls\n\nThis patch introduces memory pressure controls for the tcp\nprotocol. It uses the generic socket memory pressure code\nintroduced in earlier patches, and fills in the\nnecessary data in cg_proto struct.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtisu.com\u003e\nCC: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e1aab161e0135aafcd439be20b4f35e4b0922d95",
      "tree": "d0bcdf7a34a34020079238027b431ffc6dece307",
      "parents": [
        "180d8cd942ce336b2c869d324855c40c5db478ad"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@parallels.com",
        "time": "Sun Dec 11 21:47:03 2011 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Mon Dec 12 19:04:10 2011 -0500"
      },
      "message": "socket: initial cgroup code.\n\nThe goal of this work is to move the memory pressure tcp\ncontrols to a cgroup, instead of just relying on global\nconditions.\n\nTo avoid excessive overhead in the network fast paths,\nthe code that accounts allocated memory to a cgroup is\nhidden inside a static_branch(). This branch is patched out\nuntil the first non-root cgroup is created. So when nobody\nis using cgroups, even if it is mounted, no significant performance\npenalty should be seen.\n\nThis patch handles the generic part of the code, and has nothing\ntcp-specific.\n\nSigned-off-by: Glauber Costa \u003cglommer@parallels.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujtsu.com\u003e\nCC: Kirill A. Shutemov \u003ckirill@shutemov.name\u003e\nCC: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nCC: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "9b272977e3b99a8699361d214b51f98c8a9e0e7b",
      "tree": "2113cee95a42ea893aa6eddb01b14e563153fabb",
      "parents": [
        "0a619e58703b86d53d07e938eade9a91a4a863c6"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Wed Nov 02 13:38:23 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:07:00 2011 -0700"
      },
      "message": "memcg: skip scanning active lists based on individual size\n\nReclaim decides to skip scanning an active list when the corresponding\ninactive list is above a certain size in comparison to leave the assumed\nworking set alone while there are still enough reclaim candidates around.\n\nThe memcg implementation of comparing those lists instead reports whether\nthe whole memcg is low on the requested type of inactive pages,\nconsidering all nodes and zones.\n\nThis can lead to an oversized active list not being scanned because of the\nstate of the other lists in the memcg, as well as an active list being\nscanned while its corresponding inactive list has enough pages.\n\nNot only is this wrong, it\u0027s also a scalability hazard, because the global\nmemory state over all nodes and zones has to be gathered for each memcg\nand zone scanned.\n\nMake these calculations purely based on the size of the two LRU lists\nthat are actually affected by the outcome of the decision.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c0ff4b8540a5c158b8e5bafb7d767298b67b0b92",
      "tree": "a47a2bcd0b7b80056cde7ba6b1263aae78f77212",
      "parents": [
        "ff7ee93f47151e23601856e7eb5510babf956571"
      ],
      "author": {
        "name": "Raghavendra K T",
        "email": "raghavendra.kt@linux.vnet.ibm.com",
        "time": "Wed Nov 02 13:38:15 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 16:06:59 2011 -0700"
      },
      "message": "memcg: rename mem variable to memcg\n\nThe memcg code sometimes uses \"struct mem_cgroup *mem\" and sometimes uses\n\"struct mem_cgroup *memcg\".  Rename all mem variables to memcg in source\nfile.\n\nSigned-off-by: Raghavendra K T \u003craghavendra.kt@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Michal Hocko \u003cmhocko@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4356f21d09283dc6d39a6f7287a65ddab61e2808",
      "tree": "34822a1662ea83291455834556a4fb5bf98ecd72",
      "parents": [
        "b9e84ac1536d35aee03b2601f19694949f0bd506"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Oct 31 17:06:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 17:30:44 2011 -0700"
      },
      "message": "mm: change isolate mode from #define to bitwise type\n\nChange ISOLATE_XXX macro with bitwise isolate_mode_t type.  Normally,\nmacro isn\u0027t recommended as it\u0027s type-unsafe and making debugging harder as\nsymbol cannot be passed throught to the debugger.\n\nQuote from Johannes\n\" Hmm, it would probably be cleaner to fully convert the isolation mode\ninto independent flags.  INACTIVE, ACTIVE, BOTH is currently a\ntri-state among flags, which is a bit ugly.\"\n\nThis patch moves isolate mode from swap.h to mmzone.h by memcontrol.h\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmgorman@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "185efc0f9a1f2d6ad6d4782c5d9e529f3290567f",
      "tree": "9330dac6b7f17fad7d99e444b3544210109e2d99",
      "parents": [
        "a4d3e9e76337059406fcf3ead288c0df22a790e9"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "jweiner@redhat.com",
        "time": "Wed Sep 14 16:21:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Sep 14 18:09:38 2011 -0700"
      },
      "message": "memcg: Revert \"memcg: add memory.vmscan_stat\"\n\nRevert the post-3.0 commit 82f9d486e59f5 (\"memcg: add\nmemory.vmscan_stat\").\n\nThe implementation of per-memcg reclaim statistics violates how memcg\nhierarchies usually behave: hierarchically.\n\nThe reclaim statistics are accounted to child memcgs and the parent\nhitting the limit, but not to hierarchy levels in between.  Usually,\nhierarchical statistics are perfectly recursive, with each level\nrepresenting the sum of itself and all its children.\n\nSince this exports statistics to userspace, this may lead to confusion\nand problems with changing things after the release, so revert it now,\nwe can try again later.\n\nSigned-off-by: Johannes Weiner \u003cjweiner@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "aa3b189551ad8e5cc1d9c663735c131650238278",
      "tree": "c789ab5c7f890a6065811d8bba15a784caf9e859",
      "parents": [
        "54af60421822bb9cb664dd5cd7aac46c01ccfcf8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hughd@google.com",
        "time": "Wed Aug 03 16:21:24 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 03 14:25:24 2011 -1000"
      },
      "message": "tmpfs: convert mem_cgroup shmem to radix-swap\n\nRemove mem_cgroup_shmem_charge_fallback(): it was only required when we\nhad to move swappage to filecache with GFP_NOWAIT.\n\nRemove the GFP_NOWAIT special case from mem_cgroup_cache_charge(), by\nmoving its call out from shmem_add_to_page_cache() to two of thats three\ncallers.  But leave it doing mem_cgroup_uncharge_cache_page() on error:\nalthough asymmetrical, it\u0027s easier for all 3 callers to handle.\n\nThese two changes would also be appropriate if anyone were to start\nusing shmem_read_mapping_page_gfp() with GFP_NOWAIT.\n\nRemove mem_cgroup_get_shmem_target(): mc_handle_file_pte() can test\nradix_tree_exceptional_entry() to get what it needs for itself.\n\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82f9d486e59f588c7d100865c36510644abda356",
      "tree": "266f3dcf4f57538196bddd77a129adfb2752335b",
      "parents": [
        "108b6a78463bb8c7163e4f9779f36ad8bbade334"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jul 26 16:08:26 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:42 2011 -0700"
      },
      "message": "memcg: add memory.vmscan_stat\n\nThe commit log of 0ae5e89c60c9 (\"memcg: count the soft_limit reclaim\nin...\") says it adds scanning stats to memory.stat file.  But it doesn\u0027t\nbecause we considered we needed to make a concensus for such new APIs.\n\nThis patch is a trial to add memory.scan_stat. This shows\n  - the number of scanned pages(total, anon, file)\n  - the number of rotated pages(total, anon, file)\n  - the number of freed pages(total, anon, file)\n  - the number of elaplsed time (including sleep/pause time)\n\n  for both of direct/soft reclaim.\n\nThe biggest difference with oringinal Ying\u0027s one is that this file\ncan be reset by some write, as\n\n  # echo 0 ...../memory.scan_stat\n\nExample of output is here. This is a result after make -j 6 kernel\nunder 300M limit.\n\n  [kamezawa@bluextal ~]$ cat /cgroup/memory/A/memory.scan_stat\n  [kamezawa@bluextal ~]$ cat /cgroup/memory/A/memory.vmscan_stat\n  scanned_pages_by_limit 9471864\n  scanned_anon_pages_by_limit 6640629\n  scanned_file_pages_by_limit 2831235\n  rotated_pages_by_limit 4243974\n  rotated_anon_pages_by_limit 3971968\n  rotated_file_pages_by_limit 272006\n  freed_pages_by_limit 2318492\n  freed_anon_pages_by_limit 962052\n  freed_file_pages_by_limit 1356440\n  elapsed_ns_by_limit 351386416101\n  scanned_pages_by_system 0\n  scanned_anon_pages_by_system 0\n  scanned_file_pages_by_system 0\n  rotated_pages_by_system 0\n  rotated_anon_pages_by_system 0\n  rotated_file_pages_by_system 0\n  freed_pages_by_system 0\n  freed_anon_pages_by_system 0\n  freed_file_pages_by_system 0\n  elapsed_ns_by_system 0\n  scanned_pages_by_limit_under_hierarchy 9471864\n  scanned_anon_pages_by_limit_under_hierarchy 6640629\n  scanned_file_pages_by_limit_under_hierarchy 2831235\n  rotated_pages_by_limit_under_hierarchy 4243974\n  rotated_anon_pages_by_limit_under_hierarchy 3971968\n  rotated_file_pages_by_limit_under_hierarchy 272006\n  freed_pages_by_limit_under_hierarchy 2318492\n  freed_anon_pages_by_limit_under_hierarchy 962052\n  freed_file_pages_by_limit_under_hierarchy 1356440\n  elapsed_ns_by_limit_under_hierarchy 351386416101\n  scanned_pages_by_system_under_hierarchy 0\n  scanned_anon_pages_by_system_under_hierarchy 0\n  scanned_file_pages_by_system_under_hierarchy 0\n  rotated_pages_by_system_under_hierarchy 0\n  rotated_anon_pages_by_system_under_hierarchy 0\n  rotated_file_pages_by_system_under_hierarchy 0\n  freed_pages_by_system_under_hierarchy 0\n  freed_anon_pages_by_system_under_hierarchy 0\n  freed_file_pages_by_system_under_hierarchy 0\n  elapsed_ns_by_system_under_hierarchy 0\n\ntotal_xxxx is for hierarchy management.\n\nThis will be useful for further memcg developments and need to be\ndevelopped before we do some complicated rework on LRU/softlimit\nmanagement.\n\nThis patch adds a new struct memcg_scanrecord into scan_control struct.\nsc-\u003enr_scanned at el is not designed for exporting information.  For\nexample, nr_scanned is reset frequentrly and incremented +2 at scanning\nmapped pages.\n\nTo avoid complexity, I added a new param in scan_control which is for\nexporting scanning score.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nCc: Andrew Bresticker \u003cabrestic@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bb2a0de92c891b8feeedc0178acb3ae009d899a8",
      "tree": "c2c0b3ad66c8da0e48c021927b2d747fb08b7ef3",
      "parents": [
        "1f4c025b5a5520fd2571244196b1b01ad96d18f6"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jul 26 16:08:22 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:42 2011 -0700"
      },
      "message": "memcg: consolidate memory cgroup lru stat functions\n\nIn mm/memcontrol.c, there are many lru stat functions as..\n\n  mem_cgroup_zone_nr_lru_pages\n  mem_cgroup_node_nr_file_lru_pages\n  mem_cgroup_nr_file_lru_pages\n  mem_cgroup_node_nr_anon_lru_pages\n  mem_cgroup_nr_anon_lru_pages\n  mem_cgroup_node_nr_unevictable_lru_pages\n  mem_cgroup_nr_unevictable_lru_pages\n  mem_cgroup_node_nr_lru_pages\n  mem_cgroup_nr_lru_pages\n  mem_cgroup_get_local_zonestat\n\nSome of them are under #ifdef MAX_NUMNODES \u003e1 and others are not.\nThis seems bad. This patch consolidates all functions into\n\n  mem_cgroup_zone_nr_lru_pages()\n  mem_cgroup_node_nr_lru_pages()\n  mem_cgroup_nr_lru_pages()\n\nFor these functions, \"which LRU?\" information is passed by a mask.\n\nexample:\n  mem_cgroup_nr_lru_pages(mem, BIT(LRU_ACTIVE_ANON))\n\nAnd I added some macro as ALL_LRU, ALL_LRU_FILE, ALL_LRU_ANON.\n\nexample:\n  mem_cgroup_nr_lru_pages(mem, ALL_LRU)\n\nBTW, considering layout of NUMA memory placement of counters, this patch seems\nto be better.\n\nNow, when we gather all LRU information, we scan in following orer\n    for_each_lru -\u003e for_each_node -\u003e for_each_zone.\n\nThis means we\u0027ll touch cache lines in different node in turn.\n\nAfter patch, we\u0027ll scan\n    for_each_node -\u003e for_each_zone -\u003e for_each_lru(mask)\n\nThen, we\u0027ll gather information in the same cacheline at once.\n\n[akpm@linux-foundation.org: fix warnigns, build error]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbsingharora@gmail.com\u003e\nCc: Michal Hocko \u003cmhocko@suse.cz\u003e\nCc: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a433658c30974fc87ba3ff52d7e4e6299762aa3d",
      "tree": "8df65e22af520ca5c020281763e6874d0bb51bc5",
      "parents": [
        "e1bbd19bc4afef7adb80cca163800391c4f5773d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jun 15 15:08:13 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jun 15 20:03:59 2011 -0700"
      },
      "message": "vmscan,memcg: memcg aware swap token\n\nCurrently, memcg reclaim can disable swap token even if the swap token mm\ndoesn\u0027t belong in its memory cgroup.  It\u0027s slightly risky.  If an admin\ncreates very small mem-cgroup and silly guy runs contentious heavy memory\npressure workload, every tasks are going to lose swap token and then\nsystem may become unresponsive.  That\u0027s bad.\n\nThis patch adds \u0027memcg\u0027 parameter into disable_swap_token().  and if the\nparameter doesn\u0027t match swap token, VM doesn\u0027t disable it.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel\u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "456f998ec817ebfa254464be4f089542fa390645",
      "tree": "5976aa500638f0bbade1a672233cad71765b89b8",
      "parents": [
        "406eb0c9ba765eb066406fd5ce9d5e2b169a4d5a"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:38 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:36 2011 -0700"
      },
      "message": "memcg: add the pagefault count into memcg stats\n\nTwo new stats in per-memcg memory.stat which tracks the number of page\nfaults and number of major page faults.\n\n  \"pgfault\"\n  \"pgmajfault\"\n\nThey are different from \"pgpgin\"/\"pgpgout\" stat which count number of\npages charged/discharged to the cgroup and have no meaning of reading/\nwriting page to disk.\n\nIt is valuable to track the two stats for both measuring application\u0027s\nperformance as well as the efficiency of the kernel page reclaim path.\nCounting pagefaults per process is useful, but we also need the aggregated\nvalue since processes are monitored and controlled in cgroup basis in\nmemcg.\n\nFunctional test: check the total number of pgfault/pgmajfault of all\nmemcgs and compare with global vmstat value:\n\n  $ cat /proc/vmstat | grep fault\n  pgfault 1070751\n  pgmajfault 553\n\n  $ cat /dev/cgroup/memory.stat | grep fault\n  pgfault 1071138\n  pgmajfault 553\n  total_pgfault 1071142\n  total_pgmajfault 553\n\n  $ cat /dev/cgroup/A/memory.stat | grep fault\n  pgfault 199\n  pgmajfault 0\n  total_pgfault 199\n  total_pgmajfault 0\n\nPerformance test: run page fault test(pft) wit 16 thread on faulting in\n15G anon pages in 16G container.  There is no regression noticed on the\n\"flt/cpu/s\"\n\nSample output from pft:\n\n  TAG pft:anon-sys-default:\n    Gb  Thr CLine   User     System     Wall    flt/cpu/s fault/wsec\n    15   16   1     0.67s   233.41s    14.76s   16798.546 266356.260\n\n  +-------------------------------------------------------------------------+\n      N           Min           Max        Median           Avg        Stddev\n  x  10     16682.962     17344.027     16913.524     16928.812      166.5362\n  +  10     16695.568     16923.896     16820.604     16824.652     84.816568\n  No difference proven at 95.0% confidence\n\n[akpm@linux-foundation.org: fix build]\n[hughd@google.com: shmem fix]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1bac180bd29e03989f50054af97b53b8d37a364a",
      "tree": "6797cb73a27c1e8b7d1ea79764356dc69486dad4",
      "parents": [
        "4fd14ebf6e3b66423dfac2bc9defda7b83ee07b3"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:36 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: rename mem_cgroup_zone_nr_pages() to mem_cgroup_zone_nr_lru_pages()\n\nThe caller of the function has been renamed to zone_nr_lru_pages(), and\nthis is just fixing up in the memcg code.  The current name is easily to\nbe mis-read as zone\u0027s total number of pages.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "889976dbcb1218119fdd950fb7819084e37d7d37",
      "tree": "7508706ddb6bcbe0f673aca3744f30f281b17734",
      "parents": [
        "4e4c941c108eff10844d2b441d96dab44f32f424"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:33 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: reclaim memory from nodes in round-robin order\n\nPresently, memory cgroup\u0027s direct reclaim frees memory from the current\nnode.  But this has some troubles.  Usually when a set of threads works in\na cooperative way, they tend to operate on the same node.  So if they hit\nlimits under memcg they will reclaim memory from themselves, damaging the\nactive working set.\n\nFor example, assume 2 node system which has Node 0 and Node 1 and a memcg\nwhich has 1G limit.  After some work, file cache remains and the usages\nare\n\n   Node 0:  1M\n   Node 1:  998M.\n\nand run an application on Node 0, it will eat its foot before freeing\nunnecessary file caches.\n\nThis patch adds round-robin for NUMA and adds equal pressure to each node.\nWhen using cpuset\u0027s spread memory feature, this will work very well.\n\nBut yes, a better algorithm is needed.\n\n[akpm@linux-foundation.org: comment editing]\n[kamezawa.hiroyu@jp.fujitsu.com: fix time comparisons]\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ae5e89c60c9eb87da36a2614836bc434b0ec2ad",
      "tree": "0d509fd83ac7e7d2f52dfcbba769c43aeeb68b5f",
      "parents": [
        "f042e707ee671e4beb5389abeb9a1819a2cf5532"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Thu May 26 16:25:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 26 17:12:35 2011 -0700"
      },
      "message": "memcg: count the soft_limit reclaim in global background reclaim\n\nThe global kswapd scans per-zone LRU and reclaims pages regardless of the\ncgroup. It breaks memory isolation since one cgroup can end up reclaiming\npages from another cgroup. Instead we should rely on memcg-aware target\nreclaim including per-memcg kswapd and soft_limit hierarchical reclaim under\nmemory pressure.\n\nIn the global background reclaim, we do soft reclaim before scanning the\nper-zone LRU. However, the return value is ignored. This patch is the first\nstep to skip shrink_zone() if soft_limit reclaim does enough work.\n\nThis is part of the effort which tries to reduce reclaiming pages in global\nLRU in memcg. The per-memcg background reclaim patchset further enhances the\nper-cgroup targetting reclaim, which I should have V4 posted shortly.\n\nTry running multiple memory intensive workloads within seperate memcgs. Watch\nthe counters of soft_steal in memory.stat.\n\n  $ cat /dev/cgroup/A/memory.stat | grep \u0027soft\u0027\n  soft_steal 240000\n  soft_scan 240000\n  total_soft_steal 240000\n  total_soft_scan 240000\n\nThis patch:\n\nIn the global background reclaim, we do soft reclaim before scanning the\nper-zone LRU.  However, the return value is ignored.\n\nWe would like to skip shrink_zone() if soft_limit reclaim does enough\nwork.  Also, we need to make the memory pressure balanced across per-memcg\nzones, like the logic vm-core.  This patch is the first step where we\nstart with counting the nr_scanned and nr_reclaimed from soft_limit\nreclaim into the global scan_control.\n\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "67954fe95705a8ff80335964bd7e621d13fbc499",
      "tree": "07b2071264200953cedeb1ba63c18e000afad445",
      "parents": [
        "85f2e689a5c8fb6ed8fdbee00109e7f6e5fefcb6"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "eric.dumazet@gmail.com",
        "time": "Thu Apr 14 15:21:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 14 16:06:54 2011 -0700"
      },
      "message": "memcg: fix mem_cgroup_rotate_reclaimable_page()\n\ncommit 3f58a8294333 (\"move memcg reclaimable page into tail of inactive\nlist\") added inline keyword twice in its prototype.\n\n    CC      arch/x86/kernel/asm-offsets.s\n  In file included from include/linux/swap.h:8,\n                   from include/linux/suspend.h:4,\n                   from arch/x86/kernel/asm-offsets.c:12:\n  include/linux/memcontrol.h:220: error: duplicate `inline\u0027\n\nSigned-off-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f212ad7cf9c73f8a7fa160e223dcb3f074441a72",
      "tree": "95789ef7ce662e86a3e4aded5dfb97c51dc7b0a0",
      "parents": [
        "af4a662144884a7dbb19acbef70878b3b955f928"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Mar 23 16:42:25 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 23 19:46:25 2011 -0700"
      },
      "message": "memcg: add memcg sanity checks at allocating and freeing pages\n\nAdd checks at allocating or freeing a page whether the page is used (iow,\ncharged) from the view point of memcg.\n\nThis check may be useful in debugging a problem and we did similar checks\nbefore the commit 52d4b9ac(memcg: allocate all page_cgroup at boot).\n\nThis patch adds some overheads at allocating or freeing memory, so it\u0027s\nenabled only when CONFIG_DEBUG_VM is enabled.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f58a82943337fb6e79acfa5346719a97d3c0b98",
      "tree": "667441ac13c845edac93c937d0baba03a2021ea8",
      "parents": [
        "315601809d124d046abd6c3ffa346d0dbd7aa29d"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Mar 22 16:32:53 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:03 2011 -0700"
      },
      "message": "memcg: move memcg reclaimable page into tail of inactive list\n\nThe rotate_reclaimable_page function moves just written out pages, which\nthe VM wanted to reclaim, to the end of the inactive list.  That way the\nVM will find those pages first next time it needs to free memory.\n\nThis patch applies the rule in memcg.  It can help to prevent unnecessary\nworking page eviction of memcg.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ef6a3c63112e865d632ff7c478ba7c7160cad0d1",
      "tree": "d0bd3ee2b79674e22b8dd3f318814cd4789697b8",
      "parents": [
        "318b275fbca1ab9ec0862de71420e0e92c3d1aa7"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Mar 22 16:30:52 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Mar 22 17:44:02 2011 -0700"
      },
      "message": "mm: add replace_page_cache_page() function\n\nThis function basically does:\n\n     remove_from_page_cache(old);\n     page_cache_release(old);\n     add_to_page_cache_locked(new);\n\nExcept it does this atomically, so there\u0027s no possibility for the \"add\" to\nfail because of a race.\n\nIf memory cgroups are enabled, then the memory cgroup charge is also moved\nfrom the old page to the new.\n\nThis function is currently used by fuse to move pages into the page cache\non read, instead of copying the page contents.\n\n[minchan.kim@gmail.com: add freepage() hook to replace_page_cache_page()]\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ca3e021417eed30ec2b64ce88eb0acf64aa9bc29",
      "tree": "710590e51764d56c12d00744c402ab15c0d14a6b",
      "parents": [
        "e401f1761c0b01966e36e41e2c385d455a7b44ee"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 20 14:44:24 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 20 17:02:06 2011 -0800"
      },
      "message": "memcg: fix USED bit handling at uncharge in THP\n\nNow, under THP:\n\nat charge:\n  - PageCgroupUsed bit is set to all page_cgroup on a hugepage.\n    ....set to 512 pages.\nat uncharge\n  - PageCgroupUsed bit is unset on the head page.\n\nSo, some pages will remain with \"Used\" bit.\n\nThis patch fixes that Used bit is set only to the head page.\nUsed bits for tail pages will be set at splitting if necessary.\n\nThis patch adds this lock order:\n   compound_lock() -\u003e page_cgroup_move_lock().\n\n[akpm@linux-foundation.org: fix warning]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50de1dd967d4ba3b8a90ebe7a4f5feca24191317",
      "tree": "ed2aa4352ae3c2887a90ef6279588a7048397d1b",
      "parents": [
        "17295c88a160c6eea3fcf46cec9d08a0fcb02db9"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Thu Jan 13 15:47:43 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:51 2011 -0800"
      },
      "message": "memcg: fix memory migration of shmem swapcache\n\nIn the current implementation mem_cgroup_end_migration() decides whether\nthe page migration has succeeded or not by checking \"oldpage-\u003emapping\".\n\nBut if we are tring to migrate a shmem swapcache, the page-\u003emapping of it\nis NULL from the begining, so the check would be invalid.  As a result,\nmem_cgroup_end_migration() assumes the migration has succeeded even if\nit\u0027s not, so \"newpage\" would be freed while it\u0027s not uncharged.\n\nThis patch fixes it by passing mem_cgroup_end_migration() the result of\nthe page migration.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a7106f2cb0768d00fe8c1eb42a754a7d8518f08",
      "tree": "730bef06e752c1edcb2d475fd193f94bea00bf6a",
      "parents": [
        "ece72400c2a27a3d726cb0854449f991d9fcd2da"
      ],
      "author": {
        "name": "Greg Thelen",
        "email": "gthelen@google.com",
        "time": "Thu Jan 13 15:47:37 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 13 17:32:50 2011 -0800"
      },
      "message": "memcg: create extensible page stat update routines\n\nReplace usage of the mem_cgroup_update_file_mapped() memcg\nstatistic update routine with two new routines:\n* mem_cgroup_inc_page_stat()\n* mem_cgroup_dec_page_stat()\n\nAs before, only the file_mapped statistic is managed.  However, these more\ngeneral interfaces allow for new statistics to be more easily added.  New\nstatistics are added with memcg dirty page accounting.\n\nSigned-off-by: Greg Thelen \u003cgthelen@google.com\u003e\nSigned-off-by: Andrea Righi \u003carighi@develer.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00918b6ab89df8984ca06397cb77994dabd73f9b",
      "tree": "2ca2f0f0e7f3ca235c254f05759f96f160e3c0ab",
      "parents": [
        "14fec79680f7cc4617d6ba69324e63d4a732986c"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:05 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: remove nid and zid argument from mem_cgroup_soft_limit_reclaim()\n\nmem_cgroup_soft_limit_reclaim() has zone, nid and zid argument.  but nid\nand zid can be calculated from zone.  So remove it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Nishimura Daisuke \u003cd-nishimura@mtf.biglobe.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a63d83f427fbce97a6cea0db2e64b0eb8435cd10",
      "tree": "8ac229cdf6e2289d97e82e35774057106fe7f4a2",
      "parents": [
        "74bcbf40546bb7500f2a7ba4ff3cc056a6bd004a"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:19:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: badness heuristic rewrite\n\nThis a complete rewrite of the oom killer\u0027s badness() heuristic which is\nused to determine which task to kill in oom conditions.  The goal is to\nmake it as simple and predictable as possible so the results are better\nunderstood and we end up killing the task which will lead to the most\nmemory freeing while still respecting the fine-tuning from userspace.\n\nInstead of basing the heuristic on mm-\u003etotal_vm for each task, the task\u0027s\nrss and swap space is used instead.  This is a better indication of the\namount of memory that will be freeable if the oom killed task is chosen\nand subsequently exits.  This helps specifically in cases where KDE or\nGNOME is chosen for oom kill on desktop systems instead of a memory\nhogging task.\n\nThe baseline for the heuristic is a proportion of memory that each task is\ncurrently using in memory plus swap compared to the amount of \"allowable\"\nmemory.  \"Allowable,\" in this sense, means the system-wide resources for\nunconstrained oom conditions, the set of mempolicy nodes, the mems\nattached to current\u0027s cpuset, or a memory controller\u0027s limit.  The\nproportion is given on a scale of 0 (never kill) to 1000 (always kill),\nroughly meaning that if a task has a badness() score of 500 that the task\nconsumes approximately 50% of allowable memory resident in RAM or in swap\nspace.\n\nThe proportion is always relative to the amount of \"allowable\" memory and\nnot the total amount of RAM systemwide so that mempolicies and cpusets may\noperate in isolation; they shall not need to know the true size of the\nmachine on which they are running if they are bound to a specific set of\nnodes or mems, respectively.\n\nRoot tasks are given 3% extra memory just like __vm_enough_memory()\nprovides in LSMs.  In the event of two tasks consuming similar amounts of\nmemory, it is generally better to save root\u0027s task.\n\nBecause of the change in the badness() heuristic\u0027s baseline, it is also\nnecessary to introduce a new user interface to tune it.  It\u0027s not possible\nto redefine the meaning of /proc/pid/oom_adj with a new scale since the\nABI cannot be changed for backward compatability.  Instead, a new tunable,\n/proc/pid/oom_score_adj, is added that ranges from -1000 to +1000.  It may\nbe used to polarize the heuristic such that certain tasks are never\nconsidered for oom kill while others may always be considered.  The value\nis added directly into the badness() score so a value of -500, for\nexample, means to discount 50% of its memory consumption in comparison to\nother tasks either on the system, bound to the mempolicy, in the cpuset,\nor sharing the same memory controller.\n\n/proc/pid/oom_adj is changed so that its meaning is rescaled into the\nunits used by /proc/pid/oom_score_adj, and vice versa.  Changing one of\nthese per-task tunables will rescale the value of the other to an\nequivalent meaning.  Although /proc/pid/oom_adj was originally defined as\na bitshift on the badness score, it now shares the same linear growth as\n/proc/pid/oom_score_adj but with different granularity.  This is required\nso the ABI is not broken with userspace applications and allows oom_adj to\nbe deprecated for future removal.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25edde0332916ae706ccf83de688be57bcc844b7",
      "tree": "35a5b0e651f9cdb48d9a55a748970339c4f681bc",
      "parents": [
        "b898cc70019ce1835bbf6c47bdf978adc36faa42"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: kill prev_priority completely\n\nSince 2.6.28 zone-\u003eprev_priority is unused. Then it can be removed\nsafely. It reduce stack usage slightly.\n\nNow I have to say that I\u0027m sorry. 2 years ago, I thought prev_priority\ncan be integrate again, it\u0027s useful. but four (or more) times trying\nhaven\u0027t got good performance number. Thus I give up such approach.\n\nThe rest of this changelog is notes on prev_priority and why it existed in\nthe first place and why it might be not necessary any more. This information\nis based heavily on discussions between Andrew Morton, Rik van Riel and\nKosaki Motohiro who is heavily quotes from.\n\nHistorically prev_priority was important because it determined when the VM\nwould start unmapping PTE pages. i.e. there are no balances of note within\nthe VM, Anon vs File and Mapped vs Unmapped. Without prev_priority, there\nis a potential risk of unnecessarily increasing minor faults as a large\namount of read activity of use-once pages could push mapped pages to the\nend of the LRU and get unmapped.\n\nThere is no proof this is still a problem but currently it is not considered\nto be. Active files are not deactivated if the active file list is smaller\nthan the inactive list reducing the liklihood that file-mapped pages are\nbeing pushed off the LRU and referenced executable pages are kept on the\nactive list to avoid them getting pushed out by read activity.\n\nEven if it is a problem, prev_priority prev_priority wouldn\u0027t works\nnowadays. First of all, current vmscan still a lot of UP centric code. it\nexpose some weakness on some dozens CPUs machine. I think we need more and\nmore improvement.\n\nThe problem is, current vmscan mix up per-system-pressure, per-zone-pressure\nand per-task-pressure a bit. example, prev_priority try to boost priority to\nother concurrent priority. but if the another task have mempolicy restriction,\nit is unnecessary, but also makes wrong big latency and exceeding reclaim.\nper-task based priority + prev_priority adjustment make the emulation of\nper-system pressure. but it have two issue 1) too rough and brutal emulation\n2) we need per-zone pressure, not per-system.\n\nAnother example, currently DEF_PRIORITY is 12. it mean the lru rotate about\n2 cycle (1/4096 + 1/2048 + 1/1024 + .. + 1) before invoking OOM-Killer.\nbut if 10,0000 thrreads enter DEF_PRIORITY reclaim at the same time, the\nsystem have higher memory pressure than priority\u003d\u003d0 (1/4096*10,000 \u003e 2).\nprev_priority can\u0027t solve such multithreads workload issue. In other word,\nprev_priority concept assume the sysmtem don\u0027t have lots threads.\"\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ac39cf8cb86c45eeac6a592ce0d58f9021a97235",
      "tree": "7321cafb0a1f8f2727c86f9d29159751df856c59",
      "parents": [
        "315c1998e10527ff364a9883048455e609bc7232"
      ],
      "author": {
        "name": "akpm@linux-foundation.org",
        "email": "akpm@linux-foundation.org",
        "time": "Wed May 26 14:42:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:44 2010 -0700"
      },
      "message": "memcg: fix mis-accounting of file mapped racy with migration\n\nFILE_MAPPED per memcg of migrated file cache is not properly updated,\nbecause our hook in page_add_file_rmap() can\u0027t know to which memcg\nFILE_MAPPED should be counted.\n\nBasically, this patch is for fixing the bug but includes some big changes\nto fix up other messes.\n\nNow, at migrating mapped file, events happen in following sequence.\n\n 1. allocate a new page.\n 2. get memcg of an old page.\n 3. charge ageinst a new page before migration. But at this point,\n    no changes to new page\u0027s page_cgroup, no commit for the charge.\n    (IOW, PCG_USED bit is not set.)\n 4. page migration replaces radix-tree, old-page and new-page.\n 5. page migration remaps the new page if the old page was mapped.\n 6. Here, the new page is unlocked.\n 7. memcg commits the charge for newpage, Mark the new page\u0027s page_cgroup\n    as PCG_USED.\n\nBecause \"commit\" happens after page-remap, we can count FILE_MAPPED\nat \"5\", because we should avoid to trust page_cgroup-\u003emem_cgroup.\nif PCG_USED bit is unset.\n(Note: memcg\u0027s LRU removal code does that but LRU-isolation logic is used\n for helping it. When we overwrite page_cgroup-\u003emem_cgroup, page_cgroup is\n not on LRU or page_cgroup-\u003emem_cgroup is NULL.)\n\nWe can lose file_mapped accounting information at 5 because FILE_MAPPED\nis updated only when mapcount changes 0-\u003e1. So we should catch it.\n\nBTW, historically, above implemntation comes from migration-failure\nof anonymous page. Because we charge both of old page and new page\nwith mapcount\u003d0, we can\u0027t catch\n  - the page is really freed before remap.\n  - migration fails but it\u0027s freed before remap\nor .....corner cases.\n\nNew migration sequence with memcg is:\n\n 1. allocate a new page.\n 2. mark PageCgroupMigration to the old page.\n 3. charge against a new page onto the old page\u0027s memcg. (here, new page\u0027s pc\n    is marked as PageCgroupUsed.)\n 4. page migration replaces radix-tree, page table, etc...\n 5. At remapping, new page\u0027s page_cgroup is now makrked as \"USED\"\n    We can catch 0-\u003e1 event and FILE_MAPPED will be properly updated.\n\n    And we can catch SWAPOUT event after unlock this and freeing this\n    page by unmap() can be caught.\n\n 7. Clear PageCgroupMigration of the old page.\n\nSo, FILE_MAPPED will be correctly updated.\n\nThen, for what MIGRATION flag is ?\n  Without it, at migration failure, we may have to charge old page again\n  because it may be fully unmapped. \"charge\" means that we have to dive into\n  memory reclaim or something complated. So, it\u0027s better to avoid\n  charge it again. Before this patch, __commit_charge() was working for\n  both of the old/new page and fixed up all. But this technique has some\n  racy condtion around FILE_MAPPED and SWAPOUT etc...\n  Now, the kernel use MIGRATION flag and don\u0027t uncharge old page until\n  the end of migration.\n\nI hope this change will make memcg\u0027s page migration much simpler.  This\npage migration has caused several troubles.  Worth to add a flag for\nsimplification.\n\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReported-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: \"Kirill A. Shutemov\" \u003ckirill@shutemov.name\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b25c6d2231b978ccce9c401e771932bde79aa9f",
      "tree": "13845799e14e49465de1529680df7def59dcfeb8",
      "parents": [
        "0aeb2339e54e40d0788a7017ecaeac7f5271e262"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Mon May 24 14:32:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 25 08:07:00 2010 -0700"
      },
      "message": "vmscan: remove isolate_pages callback scan control\n\nFor now, we have global isolation vs.  memory control group isolation, do\nnot allow the reclaim entry function to set an arbitrary page isolation\ncallback, we do not need that flexibility.\n\nAnd since we already pass around the group descriptor for the memory\ncontrol group isolation case, just use it to decide which one of the two\nisolator functions to use.\n\nThe decisions can be merged into nearby branches, so no extra cost there.\nIn fact, we save the indirect calls.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "867578cbccb0893cc14fc29c670f7185809c90d6",
      "tree": "e4d0cefac265fc64399223bc82ed714a88ebe20c",
      "parents": [
        "0263c12c12ccc90edc9d856fa839f8936183e6d1"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Mar 10 15:22:39 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:38 2010 -0800"
      },
      "message": "memcg: fix oom kill behavior\n\nIn current page-fault code,\n\n\thandle_mm_fault()\n\t\t-\u003e ...\n\t\t-\u003e mem_cgroup_charge()\n\t\t-\u003e map page or handle error.\n\t-\u003e check return code.\n\nIf page fault\u0027s return code is VM_FAULT_OOM, page_fault_out_of_memory() is\ncalled.  But if it\u0027s caused by memcg, OOM should have been already\ninvoked.\n\nThen, I added a patch: a636b327f731143ccc544b966cfd8de6cb6d72c6.  That\npatch records last_oom_jiffies for memcg\u0027s sub-hierarchy and prevents\npage_fault_out_of_memory from being invoked in near future.\n\nBut Nishimura-san reported that check by jiffies is not enough when the\nsystem is terribly heavy.\n\nThis patch changes memcg\u0027s oom logic as.\n * If memcg causes OOM-kill, continue to retry.\n * remove jiffies check which is used now.\n * add memcg-oom-lock which works like perzone oom lock.\n * If current is killed(as a process), bypass charge.\n\nSomething more sophisticated can be added but this pactch does\nfundamental things.\nTODO:\n - add oom notifier\n - add permemcg disable-oom-kill flag and freezer at oom.\n - more chances for wake up oom waiter (when changing memory limit etc..)\n\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d4220f987cf473c65a342ca69e3eb13dea919a49",
      "tree": "dbb004a9c805d6de3f6e3955398fee1084a29f16",
      "parents": [
        "61cf693159d6a968a7014e24905143f71ed8ddcf",
        "f2c03debdfb387fa2e35cac6382779072b8b9209"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:36:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 12:36:49 2009 -0800"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (34 commits)\n  HWPOISON: Remove stray phrase in a comment\n  HWPOISON: Try to allocate migration page on the same node\n  HWPOISON: Don\u0027t do early filtering if filter is disabled\n  HWPOISON: Add a madvise() injector for soft page offlining\n  HWPOISON: Add soft page offline support\n  HWPOISON: Undefine short-hand macros after use to avoid namespace conflict\n  HWPOISON: Use new shake_page in memory_failure\n  HWPOISON: Use correct name for MADV_HWPOISON in documentation\n  HWPOISON: mention HWPoison in Kconfig entry\n  HWPOISON: Use get_user_page_fast in hwpoison madvise\n  HWPOISON: add an interface to switch off/on all the page filters\n  HWPOISON: add memory cgroup filter\n  memcg: add accessor to mem_cgroup.css\n  memcg: rename and export try_get_mem_cgroup_from_page()\n  HWPOISON: add page flags filter\n  mm: export stable page flags\n  HWPOISON: limit hwpoison injector to known page types\n  HWPOISON: add fs/device filters\n  HWPOISON: return 0 to indicate success reliably\n  HWPOISON: make semantics of IGNORED/DELAYED clear\n  ...\n"
    },
    {
      "commit": "d8046582d5ee24448800e71c6933fdb6813aa062",
      "tree": "857d014a850deee5ddb6da6550d81ce0122f03b1",
      "parents": [
        "cdec2e4265dfa09490601b00aeabd8a8d4af30f0"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Dec 15 16:47:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: make memcg\u0027s file mapped consistent with global VM\n\nIn global VM, FILE_MAPPED is used but memcg uses MAPPED_FILE.  This makes\ngrep difficult.  Replace memcg\u0027s MAPPED_FILE with FILE_MAPPED\n\nAnd in global VM, mapped shared memory is accounted into FILE_MAPPED.\nBut memcg doesn\u0027t. fix it.\nNote:\n  page_is_file_cache() just checks SwapBacked or not.\n  So, we need to check PageAnon.\n\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "569b846df54ffb2827b83ce3244c5f032394cba4",
      "tree": "77c5d373a5edf97710fab8777912971b99e84828",
      "parents": [
        "cd9b45b78a61e8df250e69385c74e729e5b66abf"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Dec 15 16:47:03 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:07 2009 -0800"
      },
      "message": "memcg: coalesce uncharge during unmap/truncate\n\nIn massive parallel enviroment, res_counter can be a performance\nbottleneck.  One strong techinque to reduce lock contention is reducing\ncalls by coalescing some amount of calls into one.\n\nConsidering charge/uncharge chatacteristic,\n\t- charge is done one by one via demand-paging.\n\t- uncharge is done by\n\t\t- in chunk at munmap, truncate, exit, execve...\n\t\t- one by one via vmscan/paging.\n\nIt seems we have a chance to coalesce uncharges for improving scalability\nat unmap/truncation.\n\nThis patch is a for coalescing uncharge.  For avoiding scattering memcg\u0027s\nstructure to functions under /mm, this patch adds memcg batch uncharge\ninformation to the task.  A reason for per-task batching is for making use\nof caller\u0027s context information.  We do batched uncharge (deleyed\nuncharge) when truncation/unmap occurs but do direct uncharge when\nuncharge is called by memory reclaim (vmscan.c).\n\nThe degree of coalescing depends on callers\n  - at invalidate/trucate... pagevec size\n  - at unmap ....ZAP_BLOCK_SIZE\n(memory itself will be freed in this degree.)\nThen, we\u0027ll not coalescing too much.\n\nOn x86-64 8cpu server, I tested overheads of memcg at page fault by\nrunning a program which does map/fault/unmap in a loop. Running\na task per a cpu by taskset and see sum of the number of page faults\nin 60secs.\n\n[without memcg config]\n  40156968  page-faults              #      0.085 M/sec   ( +-   0.046% )\n  27.67 cache-miss/faults\n[root cgroup]\n  36659599  page-faults              #      0.077 M/sec   ( +-   0.247% )\n  31.58 miss/faults\n[in a child cgroup]\n  18444157  page-faults              #      0.039 M/sec   ( +-   0.133% )\n  69.96 miss/faults\n[child with this patch]\n  27133719  page-faults              #      0.057 M/sec   ( +-   0.155% )\n  47.16 miss/faults\n\nWe can see some amounts of improvement.\n(root cgroup doesn\u0027t affected by this patch)\nAnother patch for \"charge\" will follow this and above will be improved more.\n\nChangelog(since 2009/10/02):\n - renamed filed of memcg_batch (as pages to bytes, memsw to memsw_bytes)\n - some clean up and commentary/description updates.\n - added initialize code to copy_process(). (possible bug fix)\n\nChangelog(old):\n - fixed !CONFIG_MEM_CGROUP case.\n - rebased onto the latest mmotm + softlimit fix patches.\n - unified patch for callers\n - added commetns.\n - make -\u003edo_batch as bool.\n - removed css_get() at el. We don\u0027t need it.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d324236b3333e87c8825b35f2104184734020d35",
      "tree": "e8ad6b50e50f975b692cc6a15d5812a51d0047ad",
      "parents": [
        "e42d9d5d47961fb5db0be65b56dd52fe7b2421f1"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "memcg: add accessor to mem_cgroup.css\n\nSo that an outside user can free the reference count grabbed by\ntry_get_mem_cgroup_from_page().\n\nCC: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCC: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCC: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "e42d9d5d47961fb5db0be65b56dd52fe7b2421f1",
      "tree": "6a898c8d43ee0533581076342b9a7a97cca0509e",
      "parents": [
        "478c5ffc0b50527bd2390f2daa46cc16276b8413"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Dec 16 12:19:59 2009 +0100"
      },
      "message": "memcg: rename and export try_get_mem_cgroup_from_page()\n\nSo that the hwpoison injector can get mem_cgroup for arbitrary page\nand thus know whether it is owned by some mem_cgroup task(s).\n\n[AK: Merged with latest git tree]\n\nCC: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCC: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCC: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "4e41695356fb4e0b153be1440ad027e46e0a7ea2",
      "tree": "547dae77d1655a1acb260ea8b266c7b8a48f2d2c",
      "parents": [
        "75822b4495b62e8721e9b88e3cf9e653a0c85b73"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Sep 23 15:56:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:20:59 2009 -0700"
      },
      "message": "memory controller: soft limit reclaim on contention\n\nImplement reclaim from groups over their soft limit\n\nPermit reclaim from memory cgroups on contention (via the direct reclaim\npath).\n\nmemory cgroup soft limit reclaim finds the group that exceeds its soft\nlimit by the largest number of pages and reclaims pages from it and then\nreinserts the cgroup into its correct place in the rbtree.\n\nAdd additional checks to mem_cgroup_hierarchical_reclaim() to detect long\nloops in case all swap is turned off.  The code has been refactored and\nthe loop check (loop \u003c 2) has been enhanced for soft limits.  For soft\nlimits, we try to do more targetted reclaim.  Instead of bailing out after\ntwo loops, the routine now reclaims memory proportional to the size by\nwhich the soft limit is exceeded.  The proportion has been empirically\ndetermined.\n\n[akpm@linux-foundation.org: build fix]\n[kamezawa.hiroyu@jp.fujitsu.com: fix softlimit css refcnt handling]\n[nishimura@mxp.nes.nec.co.jp: refcount of the \"victim\" should be decremented before exiting the loop]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d69b042f3d7406ddba560143b1796020df760800",
      "tree": "6b704864716240aa1282d06bb79c02ef4b77e16d",
      "parents": [
        "cd5008196f7e583f4c558531a2bca59f6c674c5b"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Wed Jun 17 16:26:34 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:47 2009 -0700"
      },
      "message": "memcg: add file-based RSS accounting\n\nAdd file RSS tracking per memory cgroup\n\nWe currently don\u0027t track file RSS, the RSS we report is actually anon RSS.\n All the file mapped pages, come in through the page cache and get\naccounted there.  This patch adds support for accounting file RSS pages.\nIt should\n\n1. Help improve the metrics reported by the memory resource controller\n2. Will form the basis for a future shared memory accounting heuristic\n   that has been proposed by Kamezawa.\n\nUnfortunately, we cannot rename the existing \"rss\" keyword used in\nmemory.stat to \"anon_rss\".  We however, add \"mapped_file\" data and hope to\neducate the end user through documentation.\n\n[hugh.dickins@tiscali.co.uk: fix mem_cgroup_update_mapped_file_stat oops]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.cn\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56e49d218890f49b0057710a4b6fef31f5ffbfec",
      "tree": "a0525dd9a140352276bdfb76a3d65230c3e5121d",
      "parents": [
        "35efa5e993a7a00a50b87d2b7725c3eafc80b083"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Tue Jun 16 15:32:28 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:38 2009 -0700"
      },
      "message": "vmscan: evict use-once pages first\n\nWhen the file LRU lists are dominated by streaming IO pages, evict those\npages first, before considering evicting other pages.\n\nThis should be safe from deadlocks or performance problems\nbecause only three things can happen to an inactive file page:\n\n1) referenced twice and promoted to the active list\n2) evicted by the pageout code\n3) under IO, after which it will get evicted or promoted\n\nThe pages freed in this way can either be reused for streaming IO, or\nallocated for something else.  If the pages are used for streaming IO,\nthis pageout pattern continues.  Otherwise, we will fall back to the\nnormal pageout pattern.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nReported-by: Elladan \u003celladan@eskimo.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae3abae64f177586be55b04a7fb7047a34b21a3e",
      "tree": "05ba2ef8dca958cc4a02ac08e5aae03b8bc82a81",
      "parents": [
        "0816178638c15ce5472d39d771a96860dff4141a"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Thu Apr 30 15:08:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 02 15:36:09 2009 -0700"
      },
      "message": "memcg: fix mem_cgroup_shrink_usage()\n\nCurrent mem_cgroup_shrink_usage() has two problems.\n\n1. It doesn\u0027t call mem_cgroup_out_of_memory and doesn\u0027t update\n   last_oom_jiffies, so pagefault_out_of_memory invokes global OOM.\n\n2. Considering hierarchy, shrinking has to be done from the\n   mem_over_limit, not from the memcg which the page would be charged to.\n\nmem_cgroup_try_charge_swapin() does all of these things properly, so we\nuse it and call cancel_charge_swapin when it succeeded.\n\nThe name of \"shrink_usage\" is not appropriate for this behavior, so we\nchange it too.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.cn\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e638c1394010859a015a3b533ee452d768e62cea",
      "tree": "b8db247c01e86835afe6b0d6cd897543e76c23d0",
      "parents": [
        "c12ddba09394c60e1120e6997794fa6ed52da884"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Apr 21 12:24:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 21 13:41:48 2009 -0700"
      },
      "message": "memcg: use rcu_dereference to access mm-\u003eowner\n\nmm-\u003eowner should be accessed with rcu_dereference().\n\nReported-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3918b96e03b2b8dd05889320623f6870e81d35ec",
      "tree": "b00b009a4e7b2a2605e592c5faf262c6006f74f5",
      "parents": [
        "c137b5ece4b111e46981aae7da77315b9909809f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Apr 02 16:57:41 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:56 2009 -0700"
      },
      "message": "memcg: remove mem_cgroup_reclaim_imbalance() remnants\n\ncommit 4f98a2fee8acdb4ac84545df98cccecfd130f8db (vmscan: split LRU lists\ninto anon \u0026 file sets) removed mem_cgroup_reclaim_imbalance(), but there\nare some leftovers in memcontrol.h.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c137b5ece4b111e46981aae7da77315b9909809f",
      "tree": "99677d3ae0f9016e83f257743ff04d5886a6e998",
      "parents": [
        "e222432bfa7dcf6ec008622a978c9f284ed5e3a9"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Thu Apr 02 16:57:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:55 2009 -0700"
      },
      "message": "memcg: remove mem_cgroup_calc_mapped_ratio()\n\nCurrently, mem_cgroup_calc_mapped_ratio() is unused at all.  it can be\nremoved and KAMEZAWA-san suggested it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e222432bfa7dcf6ec008622a978c9f284ed5e3a9",
      "tree": "b006f569cb66523a5644ad0ef1669b051ccda907",
      "parents": [
        "0b7f569e45bb6be142d87017030669a6a7d327a1"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Apr 02 16:57:39 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:55 2009 -0700"
      },
      "message": "memcg: show memcg information during OOM\n\nAdd RSS and swap to OOM output from memcg\n\nDisplay memcg values like failcnt, usage and limit when an OOM occurs due\nto memcg.\n\nThanks to Johannes Weiner, Li Zefan, David Rientjes, Kamezawa Hiroyuki,\nDaisuke Nishimura and KOSAKI Motohiro for review.\n\nSample output\n-------------\n\nTask in /a/x killed as a result of limit of /a\nmemory: usage 1048576kB, limit 1048576kB, failcnt 4183\nmemory+swap: usage 1400964kB, limit 9007199254740991kB, failcnt 0\n\n[akpm@linux-foundation.org: compilation fix]\n[akpm@linux-foundation.org: fix kerneldoc and whitespace]\n[akpm@linux-foundation.org: add printk facility level]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5a84319a4343a0db753436fd8147e61eaafa7ea",
      "tree": "5faae671b431b50a32a2d8c7a57cc9361d8f336d",
      "parents": [
        "544122e5e0ee27d5aac4a441f7746712afbf248c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:35 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:10 2009 -0800"
      },
      "message": "memcg: fix shmem\u0027s swap accounting\n\nNow, you can see following even when swap accounting is enabled.\n\n 1. Create Group 01, and 02.\n 2. allocate a \"file\" on tmpfs by a task under 01.\n 3. swap out the \"file\" (by memory pressure)\n 4. Read \"file\" from a task in group 02.\n 5. the charge of \"file\" is moved to group 02.\n\nThis is not ideal behavior. This is because SwapCache which was loaded\nby read-ahead is not taken into account..\n\nThis is a patch to fix shmem\u0027s swapcache behavior.\n  - remove mem_cgroup_cache_charge_swapin().\n  - Add SwapCache handler routine to mem_cgroup_cache_charge().\n    By this, shmem\u0027s file cache is charged at add_to_page_cache()\n    with GFP_NOWAIT.\n  - pass the page of swapcache to shrink_mem_cgroup.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a5e924f5f8abf97944e625d74967cc9452cfbce8",
      "tree": "3a90d35e270617933f352c8c748880a62fa6eeca",
      "parents": [
        "3bb4edf24b26358eccfc69ac8b9a9c36ccc312da"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Jan 07 18:08:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:09 2009 -0800"
      },
      "message": "memcg: remove mem_cgroup_try_charge\n\nAfter previous patch, mem_cgroup_try_charge is not used by anyone, so we\ncan remove it.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c772be939e078afd2505ede7d596a30f8f61de95",
      "tree": "2cf3157fdd2b3570e105f2d91576585750526fb3",
      "parents": [
        "a7885eb8ad465ec9db99ac5b5e6680f0ca8e11c8"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:09 2009 -0800"
      },
      "message": "memcg: fix calculation of active_ratio\n\nCurrently, inactive_ratio of memcg is calculated at setting limit.\nbecause page_alloc.c does so and current implementation is straightforward\nporting.\n\nHowever, memcg introduced hierarchy feature recently.  In hierarchy\nrestriction, memory limit is not only decided memory.limit_in_bytes of\ncurrent cgroup, but also parent limit and sibling memory usage.\n\nThen, The optimal inactive_ratio is changed frequently.  So, everytime\ncalculation is better.\n\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9439c1c95b5c25b8031b2a7eb7e1590eb84be7f5",
      "tree": "79eaae56278407e0a223e562a2d0079834ca5529",
      "parents": [
        "3e2f41f1f64744f7942980d93cc93dd3e5924560"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: remove mem_cgroup_cal_reclaim()\n\nNow, get_scan_ratio() return correct value although memcg reclaim.  Then,\nmem_cgroup_calc_reclaim() can be removed.\n\nSo, memcg reclaim get the same capability of anon/file reclaim balancing\nas global reclaim now.\n\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@redhat.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3e2f41f1f64744f7942980d93cc93dd3e5924560",
      "tree": "7b605c407b7470877fd9c5c853407f75edcbeb49",
      "parents": [
        "a3d8e0549d913e30968fa02e505dfe02c0a23e0d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: add zone_reclaim_stat\n\nIntroduce mem_cgroup_per_zone::reclaim_stat member and its statics\ncollecting function.\n\nNow, get_scan_ratio() can calculate correct value on memcg reclaim.\n\n[hugh@veritas.com: avoid reclaim_stat oops when disabled]\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a3d8e0549d913e30968fa02e505dfe02c0a23e0d",
      "tree": "e4d3df33666a18614289ae7bc76c27ad7950eb73",
      "parents": [
        "14797e2363c2b2f1ce139fd1c5a215e4e05aa1d9"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: add mem_cgroup_zone_nr_pages()\n\nIntroduce mem_cgroup_zone_nr_pages().  It is called by zone_nr_pages()\nhelper function.\n\nThis patch doesn\u0027t have any behavior change.\n\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14797e2363c2b2f1ce139fd1c5a215e4e05aa1d9",
      "tree": "a56edaa680c7c338a5a3043aa24897d7f668b6c9",
      "parents": [
        "549927620b04a8f8073ce2ee2a8977f209af2ee5"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:08 2009 -0800"
      },
      "message": "memcg: add inactive_anon_is_low()\n\nThe inactive_anon_is_low() is key component of active/inactive anon\nbalancing on reclaim.  However current inactive_anon_is_low() function\nonly consider global reclaim.\n\nTherefore, we need following ugly scan_global_lru() condition.\n\n\tif (lru \u003d\u003d LRU_ACTIVE_ANON \u0026\u0026\n\t    (!scan_global_lru(sc) || inactive_anon_is_low(zone))) {\n\t\tshrink_active_list(nr_to_scan, zone, sc, priority, file);\n\t\treturn 0;\n\nit cause that memcg reclaim always deactivate pages when shrink_list() is\ncalled.  To make mem_cgroup_inactive_anon_is_low() improve active/inactive\nanon balancing of memcgroup.\n\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Cyrill Gorcunov \u003cgorcunov@gmail.com\u003e\nCc: \"Pekka Enberg\" \u003cpenberg@cs.helsinki.fi\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c26fdd70c3094fa3e84caf9ef434911933d5477",
      "tree": "06a3bafc12f5f8fd91d9ed1fca5ea0a632ef2004",
      "parents": [
        "887007561ae58628f03aa9046949747c04f63be8"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcg: revert gfp mask fix\n\nMy patch, memcg-fix-gfp_mask-of-callers-of-charge.patch changed gfp_mask\nof callers of charge to be GFP_HIGHUSER_MOVABLE for showing what will\nhappen at memory reclaim.\n\nBut in recent discussion, it\u0027s NACKed because it sounds ugly.\n\nThis patch is for reverting it and add some clean up to gfp_mask of\ncallers of charge.  No behavior change but need review before generating\nHUNK in deep queue.\n\nThis patch also adds explanation to meaning of gfp_mask passed to charge\nfunctions in memcontrol.h.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a636b327f731143ccc544b966cfd8de6cb6d72c6",
      "tree": "e53b03b64e8ebca20649c2d877bc4c3ef54ec34c",
      "parents": [
        "2e4d40915fb85207fe48cfc31201824ec6d7426e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcg: avoid unnecessary system-wide-oom-killer\n\nCurrent mmtom has new oom function as pagefault_out_of_memory().  It\u0027s\nadded for select bad process rathar than killing current.\n\nWhen memcg hit limit and calls OOM at page_fault, this handler called and\nsystem-wide-oom handling happens.  (means kernel panics if panic_on_oom is\ntrue....)\n\nTo avoid overkill, check memcg\u0027s recent behavior before starting\nsystem-wide-oom.\n\nAnd this patch also fixes to guarantee \"don\u0027t accnout against process with\nTIF_MEMDIE\".  This is necessary for smooth OOM.\n\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e4d40915fb85207fe48cfc31201824ec6d7426e",
      "tree": "60f4a8ce1278a861ff530885353da74d1cf0bdb4",
      "parents": [
        "18f59ea7de08db2449ba99185e8d8cc30e7acac5"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Wed Jan 07 18:08:07 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcontrol: rcu_read_lock() to protect mm_match_cgroup()\n\nmm_match_cgroup() calls cgroup_subsys_state().\n\nWe must use rcu_read_lock() to protect cgroup_subsys_state().\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f8d665422603ee1b8ed04dcad4242f14d623c941",
      "tree": "d872a12113998ed99ce22247091c481b9f465faa",
      "parents": [
        "08e552c69c6930d64722de3ec18c51844d06ee28"
      ],
      "author": {
        "name": "Hirokazu Takahashi",
        "email": "taka@valinux.co.jp",
        "time": "Wed Jan 07 18:08:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: add mem_cgroup_disabled()\n\nWe check mem_cgroup is disabled or not by checking\nmem_cgroup_subsys.disabled.  I think it has more references than expected,\nnow.\n\nreplacing\n   if (mem_cgroup_subsys.disabled)\nwith\n   if (mem_cgroup_disabled())\n\ngive us good look, I think.\n\n[kamezawa.hiroyu@jp.fujitsu.com: fix typo]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "08e552c69c6930d64722de3ec18c51844d06ee28",
      "tree": "a744d57ed4b23401115f1033dcaac9e85d550e09",
      "parents": [
        "8c7c6e34a1256a5082d38c8e9bd1474476912715"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: synchronized LRU\n\nA big patch for changing memcg\u0027s LRU semantics.\n\nNow,\n  - page_cgroup is linked to mem_cgroup\u0027s its own LRU (per zone).\n\n  - LRU of page_cgroup is not synchronous with global LRU.\n\n  - page and page_cgroup is one-to-one and statically allocated.\n\n  - To find page_cgroup is on what LRU, you have to check pc-\u003emem_cgroup as\n    - lru \u003d page_cgroup_zoneinfo(pc, nid_of_pc, zid_of_pc);\n\n  - SwapCache is handled.\n\nAnd, when we handle LRU list of page_cgroup, we do following.\n\n\tpc \u003d lookup_page_cgroup(page);\n\tlock_page_cgroup(pc); .....................(1)\n\tmz \u003d page_cgroup_zoneinfo(pc);\n\tspin_lock(\u0026mz-\u003elru_lock);\n\t.....add to LRU\n\tspin_unlock(\u0026mz-\u003elru_lock);\n\tunlock_page_cgroup(pc);\n\nBut (1) is spin_lock and we have to be afraid of dead-lock with zone-\u003elru_lock.\nSo, trylock() is used at (1), now. Without (1), we can\u0027t trust \"mz\" is correct.\n\nThis is a trial to remove this dirty nesting of locks.\nThis patch changes mz-\u003elru_lock to be zone-\u003elru_lock.\nThen, above sequence will be written as\n\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\tmem_cgroup_add/remove/etc_lru() {\n\t\tpc \u003d lookup_page_cgroup(page);\n\t\tmz \u003d page_cgroup_zoneinfo(pc);\n\t\tif (PageCgroupUsed(pc)) {\n\t\t\t....add to LRU\n\t\t}\n        spin_lock(\u0026zone-\u003elru_lock); # in vmscan.c or swap.c via global LRU\n\nThis is much simpler.\n(*) We\u0027re safe even if we don\u0027t take lock_page_cgroup(pc). Because..\n    1. When pc-\u003emem_cgroup can be modified.\n       - at charge.\n       - at account_move().\n    2. at charge\n       the PCG_USED bit is not set before pc-\u003emem_cgroup is fixed.\n    3. at account_move()\n       the page is isolated and not on LRU.\n\nPros.\n  - easy for maintenance.\n  - memcg can make use of laziness of pagevec.\n  - we don\u0027t have to duplicated LRU/Active/Unevictable bit in page_cgroup.\n  - LRU status of memcg will be synchronized with global LRU\u0027s one.\n  - # of locks are reduced.\n  - account_move() is simplified very much.\nCons.\n  - may increase cost of LRU rotation.\n    (no impact if memcg is not configured.)\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c7c6e34a1256a5082d38c8e9bd1474476912715",
      "tree": "09f53c7c4bac5532a9ecbdadb4450702c744ea6f",
      "parents": [
        "27a7faa0779dd13729196c1a818c294f44bbd1ee"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:00 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: mem+swap controller core\n\nThis patch implements per cgroup limit for usage of memory+swap.  However\nthere are SwapCache, double counting of swap-cache and swap-entry is\navoided.\n\nMem+Swap controller works as following.\n  - memory usage is limited by memory.limit_in_bytes.\n  - memory + swap usage is limited by memory.memsw_limit_in_bytes.\n\nThis has following benefits.\n  - A user can limit total resource usage of mem+swap.\n\n    Without this, because memory resource controller doesn\u0027t take care of\n    usage of swap, a process can exhaust all the swap (by memory leak.)\n    We can avoid this case.\n\n    And Swap is shared resource but it cannot be reclaimed (goes back to memory)\n    until it\u0027s used. This characteristic can be trouble when the memory\n    is divided into some parts by cpuset or memcg.\n    Assume group A and group B.\n    After some application executes, the system can be..\n\n    Group A -- very large free memory space but occupy 99% of swap.\n    Group B -- under memory shortage but cannot use swap...it\u0027s nearly full.\n\n    Ability to set appropriate swap limit for each group is required.\n\nMaybe someone wonder \"why not swap but mem+swap ?\"\n\n  - The global LRU(kswapd) can swap out arbitrary pages. Swap-out means\n    to move account from memory to swap...there is no change in usage of\n    mem+swap.\n\n    In other words, when we want to limit the usage of swap without affecting\n    global LRU, mem+swap limit is better than just limiting swap.\n\nAccounting target information is stored in swap_cgroup which is\nper swap entry record.\n\nCharge is done as following.\n  map\n    - charge  page and memsw.\n\n  unmap\n    - uncharge page/memsw if not SwapCache.\n\n  swap-out (__delete_from_swap_cache)\n    - uncharge page\n    - record mem_cgroup information to swap_cgroup.\n\n  swap-in (do_swap_page)\n    - charged as page and memsw.\n      record in swap_cgroup is cleared.\n      memsw accounting is decremented.\n\n  swap-free (swap_free())\n    - if swap entry is freed, memsw is uncharged by PAGE_SIZE.\n\nThere are people work under never-swap environments and consider swap as\nsomething bad. For such people, this mem+swap controller extension is just an\noverhead.  This overhead is avoided by config or boot option.\n(see Kconfig. detail is not in this patch.)\n\nTODO:\n - maybe more optimization can be don in swap-in path. (but not very safe.)\n   But we just do simple accounting at this stage.\n\n[nishimura@mxp.nes.nec.co.jp: make resize limit hold mutex]\n[hugh@veritas.com: memswap controller core swapcache fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c077719be8e9e6b55702117513d1b5f41d80404a",
      "tree": "3369f02d87390a40f5867d0482972bac506424a8",
      "parents": [
        "d13d144309d2e5a3e6ad978b16c1d0226ddc9231"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: mem+swap controller Kconfig\n\nConfig and control variable for mem+swap controller.\n\nThis patch adds CONFIG_CGROUP_MEM_RES_CTLR_SWAP\n(memory resource controller swap extension.)\n\nFor accounting swap, it\u0027s obvious that we have to use additional memory to\nremember \"who uses swap\".  This adds more overhead.  So, it\u0027s better to\noffer \"choice\" to users.  This patch adds 2 choices.\n\nThis patch adds 2 parameters to enable swap extension or not.\n  - CONFIG\n  - boot option\n\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01b1ae63c2270cbacfd43fea94578c17950eb548",
      "tree": "ab0275f32e8548c4413014d43cab1f52f03c9c5c",
      "parents": [
        "bced0520fe462bb94021dcabd32e99630c171be2"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: simple migration handling\n\nNow, management of \"charge\" under page migration is done under following\nmanner. (Assume migrate page contents from oldpage to newpage)\n\n before\n  - \"newpage\" is charged before migration.\n at success.\n  - \"oldpage\" is uncharged at somewhere(unmap, radix-tree-replace)\n at failure\n  - \"newpage\" is uncharged.\n  - \"oldpage\" is charged if necessary (*1)\n\nBut (*1) is not reliable....because of GFP_ATOMIC.\n\nThis patch tries to change behavior as following by charge/commit/cancel ops.\n\n before\n  - charge PAGE_SIZE (no target page)\n success\n  - commit charge against \"newpage\".\n failure\n  - commit charge against \"oldpage\".\n    (PCG_USED bit works effectively to avoid double-counting)\n  - if \"oldpage\" is obsolete, cancel charge of PAGE_SIZE.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a81b88cb53e335ff7d019e6398c95792c817d93",
      "tree": "6ebca4d509a541ac707e10f9369916549e90c0ad",
      "parents": [
        "0b82ac37b889ec881b645860da3775118effb3ca"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: introduce charge-commit-cancel style of functions\n\nThere is a small race in do_swap_page().  When the page swapped-in is\ncharged, the mapcount can be greater than 0.  But, at the same time some\nprocess (shares it ) call unmap and make mapcount 1-\u003e0 and the page is\nuncharged.\n\n      CPUA \t\t\tCPUB\n       mapcount \u003d\u003d 1.\n   (1) charge if mapcount\u003d\u003d0     zap_pte_range()\n                                (2) mapcount 1 \u003d\u003e 0.\n\t\t\t        (3) uncharge(). (success)\n   (4) set page\u0027s rmap()\n       mapcount 0\u003d\u003e1\n\nThen, this swap page\u0027s account is leaked.\n\nFor fixing this, I added a new interface.\n  - charge\n   account to res_counter by PAGE_SIZE and try to free pages if necessary.\n  - commit\n   register page_cgroup and add to LRU if necessary.\n  - cancel\n   uncharge PAGE_SIZE because of do_swap_page failure.\n\n     CPUA\n  (1) charge (always)\n  (2) set page\u0027s rmap (mapcount \u003e 0)\n  (3) commit charge was necessary or not after set_pte().\n\nThis protocol uses PCG_USED bit on page_cgroup for avoiding over accounting.\nUsual mem_cgroup_charge_common() does charge -\u003e commit at a time.\n\nAnd this patch also adds following function to clarify all charges.\n\n  - mem_cgroup_newpage_charge() ....replacement for mem_cgroup_charge()\n\tcalled against newly allocated anon pages.\n\n  - mem_cgroup_charge_migrate_fixup()\n        called only from remove_migration_ptes().\n\twe\u0027ll have to rewrite this later.(this patch just keeps old behavior)\n\tThis function will be removed by additional patch to make migration\n\tclearer.\n\nGood for clarifying \"what we do\"\n\nThen, we have 4 following charge points.\n  - newpage\n  - swap-in\n  - add-to-cache.\n  - migration.\n\n[akpm@linux-foundation.org: add missing inline directives to stubs]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "52d4b9ac0b985168009c2a57098324e67bae171f",
      "tree": "b3e3b854166930af893be90ea30a7ab0d65c59e7",
      "parents": [
        "c05555b572921c464d064d9267f7f7bc06d424fa"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sat Oct 18 20:28:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:39 2008 -0700"
      },
      "message": "memcg: allocate all page_cgroup at boot\n\nAllocate all page_cgroup at boot and remove page_cgroup poitner from\nstruct page.  This patch adds an interface as\n\n struct page_cgroup *lookup_page_cgroup(struct page*)\n\nAll FLATMEM/DISCONTIGMEM/SPARSEMEM  and MEMORY_HOTPLUG is supported.\n\nRemove page_cgroup pointer reduces the amount of memory by\n - 4 bytes per PAGE_SIZE.\n - 8 bytes per PAGE_SIZE\nif memory controller is disabled. (even if configured.)\n\nOn usual 8GB x86-32 server, this saves 8MB of NORMAL_ZONE memory.\nOn my x86-64 server with 48GB of memory, this saves 96MB of memory.\nI think this reduction makes sense.\n\nBy pre-allocation, kmalloc/kfree in charge/uncharge are removed.\nThis means\n  - we\u0027re not necessary to be afraid of kmalloc faiulre.\n    (this can happen because of gfp_mask type.)\n  - we can avoid calling kmalloc/kfree.\n  - we can avoid allocating tons of small objects which can be fragmented.\n  - we can know what amount of memory will be used for this extra-lru handling.\n\nI added printk message as\n\n\t\"allocated %ld bytes of page_cgroup\"\n        \"please try cgroup_disable\u003dmemory option if you don\u0027t want\"\n\nmaybe enough informative for users.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "894bc310419ac95f4fa4142dc364401a7e607f65",
      "tree": "15d56a7333b41620016b845d2323dd06e822b621",
      "parents": [
        "8a7a8544a4f6554ec2d8048ac9f9672f442db5a2"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "Unevictable LRU Infrastructure\n\nWhen the system contains lots of mlocked or otherwise unevictable pages,\nthe pageout code (kswapd) can spend lots of time scanning over these\npages.  Worse still, the presence of lots of unevictable pages can confuse\nkswapd into thinking that more aggressive pageout modes are required,\nresulting in all kinds of bad behaviour.\n\nInfrastructure to manage pages excluded from reclaim--i.e., hidden from\nvmscan.  Based on a patch by Larry Woodman of Red Hat.  Reworked to\nmaintain \"unevictable\" pages on a separate per-zone LRU list, to \"hide\"\nthem from vmscan.\n\nKosaki Motohiro added the support for the memory controller unevictable\nlru list.\n\nPages on the unevictable list have both PG_unevictable and PG_lru set.\nThus, PG_unevictable is analogous to and mutually exclusive with\nPG_active--it specifies which LRU list the page is on.\n\nThe unevictable infrastructure is enabled by a new mm Kconfig option\n[CONFIG_]UNEVICTABLE_LRU.\n\nA new function \u0027page_evictable(page, vma)\u0027 in vmscan.c tests whether or\nnot a page may be evictable.  Subsequent patches will add the various\n!evictable tests.  We\u0027ll want to keep these tests light-weight for use in\nshrink_active_list() and, possibly, the fault path.\n\nTo avoid races between tasks putting pages [back] onto an LRU list and\ntasks that might be moving the page from non-evictable to evictable state,\nthe new function \u0027putback_lru_page()\u0027 -- inverse to \u0027isolate_lru_page()\u0027\n-- tests the \"evictability\" of a page after placing it on the LRU, before\ndropping the reference.  If the page has become unevictable,\nputback_lru_page() will redo the \u0027putback\u0027, thus moving the page to the\nunevictable list.  This way, we avoid \"stranding\" evictable pages on the\nunevictable list.\n\n[akpm@linux-foundation.org: fix fallout from out-of-order merge]\n[riel@redhat.com: fix UNEVICTABLE_LRU and !PROC_PAGE_MONITOR build]\n[nishimura@mxp.nes.nec.co.jp: remove redundant mapping check]\n[kosaki.motohiro@jp.fujitsu.com: unevictable-lru-infrastructure: putback_lru_page()/unevictable page handling rework]\n[kosaki.motohiro@jp.fujitsu.com: kill unnecessary lock_page() in vmscan.c]\n[kosaki.motohiro@jp.fujitsu.com: revert migration change of unevictable lru infrastructure]\n[kosaki.motohiro@jp.fujitsu.com: revert to unevictable-lru-infrastructure-kconfig-fix.patch]\n[kosaki.motohiro@jp.fujitsu.com: restore patch failure of vmstat-unevictable-and-mlocked-pages-vm-events.patch]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nDebugged-by: Benjamin Kidwell \u003cbenjkidwell@yahoo.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f98a2fee8acdb4ac84545df98cccecfd130f8db",
      "tree": "035a2937f4c3e2f7b4269412041c073ac646937c",
      "parents": [
        "b2e185384f534781fd22f5ce170b2ad26f97df70"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: split LRU lists into anon \u0026 file sets\n\nSplit the LRU lists in two, one set for pages that are backed by real file\nsystems (\"file\") and one for pages that are backed by memory and swap\n(\"anon\").  The latter includes tmpfs.\n\nThe advantage of doing this is that the VM will not have to scan over lots\nof anonymous pages (which we generally do not want to swap out), just to\nfind the page cache pages that it should evict.\n\nThis patch has the infrastructure and a basic policy to balance how much\nwe scan the anon lists and how much we scan the file lists.  The big\npolicy changes are in separate patches.\n\n[lee.schermerhorn@hp.com: collect lru meminfo statistics from correct offset]\n[kosaki.motohiro@jp.fujitsu.com: prevent incorrect oom under split_lru]\n[kosaki.motohiro@jp.fujitsu.com: fix pagevec_move_tail() doesn\u0027t treat unevictable page]\n[hugh@veritas.com: memcg swapbacked pages active]\n[hugh@veritas.com: splitlru: BDI_CAP_SWAP_BACKED]\n[akpm@linux-foundation.org: fix /proc/vmstat units]\n[nishimura@mxp.nes.nec.co.jp: memcg: fix handling of shmem migration]\n[kosaki.motohiro@jp.fujitsu.com: adjust Quicklists field of /proc/meminfo]\n[kosaki.motohiro@jp.fujitsu.com: fix style issue of get_scan_ratio()]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b69408e88bd86b98feb7b9a38fd865e1ddb29827",
      "tree": "b19277c29fe624870ba776cc6ada59928cd2796d",
      "parents": [
        "62695a84eb8f2e718bf4dfb21700afaa7a08e0ea"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Sat Oct 18 20:26:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: Use an indexed array for LRU variables\n\nCurrently we are defining explicit variables for the inactive and active\nlist.  An indexed array can be more generic and avoid repeating similar\ncode in several places in the reclaim code.\n\nWe are saving a few bytes in terms of code size:\n\nBefore:\n\n   text    data     bss     dec     hex filename\n4097753  573120 4092484 8763357  85b7dd vmlinux\n\nAfter:\n\n   text    data     bss     dec     hex filename\n4097729  573120 4092484 8763333  85b7c5 vmlinux\n\nHaving an easy way to add new lru lists may ease future work on the\nreclaim code.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9b0ed51483cc2fc42bb801b6675c4231b0e4634",
      "tree": "1d322b4bfcaad3296752f6efcab918d1b13b50a3",
      "parents": [
        "69029cd550284e32de13d6dd2f77b723c8a0e444"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: helper function for relcaim from shmem.\n\nA new call, mem_cgroup_shrink_usage() is added for shmem handling and\nrelacing non-standard usage of mem_cgroup_charge/uncharge.\n\nNow, shmem calls mem_cgroup_charge() just for reclaim some pages from\nmem_cgroup.  In general, shmem is used by some process group and not for\nglobal resource (like file caches).  So, it\u0027s reasonable to reclaim pages\nfrom mem_cgroup where shmem is mainly used.\n\n[hugh@veritas.com: shmem_getpage release page sooner]\n[hugh@veritas.com: mem_cgroup_shrink_usage css_put]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69029cd550284e32de13d6dd2f77b723c8a0e444",
      "tree": "b57b87e5025b6c01722f39302cb98d0dfcd58940",
      "parents": [
        "e8589cc189f96b87348ae83ea4db38eaac624135"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: remove refcnt from page_cgroup\n\nmemcg: performance improvements\n\nPatch Description\n 1/5 ... remove refcnt fron page_cgroup patch (shmem handling is fixed)\n 2/5 ... swapcache handling patch\n 3/5 ... add helper function for shmem\u0027s memory reclaim patch\n 4/5 ... optimize by likely/unlikely ppatch\n 5/5 ... remove redundunt check patch (shmem handling is fixed.)\n\nUnix bench result.\n\n\u003d\u003d 2.6.26-rc2-mm1 + memory resource controller\nExecl Throughput                           2915.4 lps   (29.6 secs, 3 samples)\nC Compiler Throughput                      1019.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5796.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1097.7 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               565.3 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1022128.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   544057.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    346481.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      319325.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     148788.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks       99051.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2058917.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1606109.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    854789.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         126145.2 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     2915.4      678.0\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   346481.0      875.0\nFile Copy 256 bufsize 500 maxblocks           1655.0    99051.0      598.5\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   854789.0     1473.8\nShell Scripts (8 concurrent)                     6.0     1097.7     1829.5\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                     991.3\n\n\u003d\u003d 2.6.26-rc2-mm1 + this set \u003d\u003d\nExecl Throughput                           3012.9 lps   (29.9 secs, 3 samples)\nC Compiler Throughput                       981.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5872.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1120.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               578.0 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1003993.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   550452.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    347159.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      314644.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     151852.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks      101000.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2033256.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1611814.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    847979.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         128148.7 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     3012.9      700.7\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   347159.0      876.7\nFile Copy 256 bufsize 500 maxblocks           1655.0   101000.0      610.3\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   847979.0     1462.0\nShell Scripts (8 concurrent)                     6.0     1120.3     1867.2\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                    1004.6\n\nThis patch:\n\nRemove refcnt from page_cgroup().\n\nAfter this,\n\n * A page is charged only when !page_mapped() \u0026\u0026 no page_cgroup is assigned.\n\t* Anon page is newly mapped.\n\t* File page is added to mapping-\u003etree.\n\n * A page is uncharged only when\n\t* Anon page is fully unmapped.\n\t* File page is removed from LRU.\n\nThere is no change in behavior from user\u0027s view.\n\nThis patch also removes unnecessary calls in rmap.c which was used only for\nrefcnt mangement.\n\n[akpm@linux-foundation.org: fix warning]\n[hugh@veritas.com: fix shmem_unuse_inode charging]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8589cc189f96b87348ae83ea4db38eaac624135",
      "tree": "6693422dc81e6da78c4ad892b0d326fb7f946dda",
      "parents": [
        "508b7be0a5b06b64203512ed9b34191cddc83f56"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: better migration handling\n\nThis patch changes page migration under memory controller to use a\ndifferent algorithm.  (thanks to Christoph for new idea.)\n\nBefore:\n - page_cgroup is migrated from an old page to a new page.\nAfter:\n - a new page is accounted , no reuse of page_cgroup.\n\nPros:\n\n - We can avoid compliated lock depndencies and races in migration.\n\nCons:\n\n - new param to mem_cgroup_charge_common().\n\n - mem_cgroup_getref() is added for handling ref_cnt ping-pong.\n\nThis version simplifies complicated lock dependency in page migraiton\nunder memory resource controller.\n\n  new refcnt sequence is following.\n\na mapped page:\n  prepage_migration() ..... +1 to NEW page\n  try_to_unmap()      ..... all refs to OLD page is gone.\n  move_pages()        ..... +1 to NEW page if page cache.\n  remap...            ..... all refs from *map* is added to NEW one.\n  end_migration()     ..... -1 to New page.\n\n  page\u0027s mapcount + (page_is_cache) refs are added to NEW one.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cf475ad28ac35cc9ba612d67158f29b73b38b05d",
      "tree": "2c7cd568d00357bd42643ea602884e731cc24f26",
      "parents": [
        "29486df325e1fe6e1764afcb19e3370804c2b002"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Apr 29 01:00:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:10 2008 -0700"
      },
      "message": "cgroups: add an owner to the mm_struct\n\nRemove the mem_cgroup member from mm_struct and instead adds an owner.\n\nThis approach was suggested by Paul Menage.  The advantage of this approach\nis that, once the mm-\u003eowner is known, using the subsystem id, the cgroup\ncan be determined.  It also allows several control groups that are\nvirtually grouped by mm_struct, to exist independent of the memory\ncontroller i.e., without adding mem_cgroup\u0027s for each controller, to\nmm_struct.\n\nA new config option CONFIG_MM_OWNER is added and the memory resource\ncontroller selects this config option.\n\nThis patch also adds cgroup callbacks to notify subsystems when mm-\u003eowner\nchanges.  The mm_cgroup_changed callback is called with the task_lock() of\nthe new task held and is called just prior to changing the mm-\u003eowner.\n\nI am indebted to Paul Menage for the several reviews of this patchset and\nhelping me make it lighter and simpler.\n\nThis patch was tested on a powerpc box, it was compiled with both the\nMM_OWNER config turned on and off.\n\nAfter the thread group leader exits, it\u0027s moved to init_css_state by\ncgroup_exit(), thus all future charges from runnings threads would be\nredirected to the init_css_set\u0027s subsystem.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Sudhir Kumar \u003cskumar@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e,\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nReviewed-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8289546e573d5ff681cdf0fc7a1184cca66fdb55",
      "tree": "9cf874b55eb9a6c97233d137278c7b7c89a5f4a1",
      "parents": [
        "7e924aafa4b03ff71de34af8553d9a1ebc86c071"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: remove mem_cgroup_uncharge\n\nNothing uses mem_cgroup_uncharge apart from mem_cgroup_uncharge_page, (a\ntrivial wrapper around it) and mem_cgroup_end_migration (which does the same\nas mem_cgroup_uncharge_page).  And it often ends up having to lock just to let\nits caller unlock.  Remove it (but leave the silly locking until a later\npatch).\n\nMoved mem_cgroup_cache_charge next to mem_cgroup_charge in memcontrol.h.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9442ec9df40d952b0de185ae5638a74970388e01",
      "tree": "14b06d71203be119d93736464ca49f37ce402c1c",
      "parents": [
        "98837c7f82ef78aa38f40462aa2fcac68fd3acbf"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:07 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:15 2008 -0800"
      },
      "message": "memcg: bad page if page_cgroup when free\n\nReplace free_hot_cold_page\u0027s VM_BUG_ON(page_get_page_cgroup(page)) by a \"Bad\npage state\" and clear: most users don\u0027t have CONFIG_DEBUG_VM on, and if it\nwere set here, it\u0027d likely cause corruption when the page is reused.\n\nDon\u0027t use page_assign_page_cgroup to clear it: that should be private to\nmemcontrol.c, and always called with the lock taken; and memmap_init_zone\ndoesn\u0027t need it either - like page-\u003emapping and other pointers throughout the\nkernel, Linux assumes pointers in zeroed structures are NULL pointers.\n\nInstead use page_reset_bad_cgroup, added to memcontrol.h for this only.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "427d5416f317681498337ab19218d195edea02d6",
      "tree": "967cfc87ec775ca3c05f95f2339697e796383191",
      "parents": [
        "bd845e38c7a7251a95a8f2c38aa7fb87140b771d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:03 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: move_lists on page not page_cgroup\n\nEach caller of mem_cgroup_move_lists is having to use page_get_page_cgroup:\nit\u0027s more convenient if it acts upon the page itself not the page_cgroup; and\nin a later patch this becomes important to handle within memcontrol.c.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd845e38c7a7251a95a8f2c38aa7fb87140b771d",
      "tree": "007a1a6703f4fe27d52a07e6caea8ce87d06ff77",
      "parents": [
        "acc4988bcf38f9618886eaeb9802aeacc6978ec2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Mar 04 14:29:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:14 2008 -0800"
      },
      "message": "memcg: mm_match_cgroup not vm_match_cgroup\n\nvm_match_cgroup is a perverse name for a macro to match mm with cgroup: rename\nit mm_match_cgroup, matching mm_init_cgroup and mm_free_cgroup.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00f0b8259e48979c37212995d798f3fbd0374690",
      "tree": "589e8250c016450324e0c730139d020cf2bf887c",
      "parents": [
        "804defea1c020d5c52985685e56986f1a399acde"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Tue Mar 04 14:28:39 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:12 2008 -0800"
      },
      "message": "Memory controller: rename to Memory Resource Controller\n\nRename Memory Controller to Memory Resource Controller.  Reflect the same\nchanges in the CONFIG definition for the Memory Resource Controller.  Group\ntogether the config options for Resource Counters and Memory Resource\nController.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eaeb16883bd6aa2d6b6b61b825c0d2b0dc793f60",
      "tree": "4348381d983694fb848a57c9930d6ae15dd6aff3",
      "parents": [
        "de4fc64f0f2a4efbaad3e7c1e1e05a28f69b45e5"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sat Feb 23 15:23:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 23 17:12:14 2008 -0800"
      },
      "message": "sparc: fix build\n\nFix build failure on sparc:\n\n\tIn file included from include/linux/mm.h:39,\n\t                from include/linux/memcontrol.h:24,\n\t                from include/linux/swap.h:8,\n\t                from include/linux/suspend.h:7,\n\t                from init/do_mounts.c:6:\n\tinclude/asm/pgtable.h:344: warning: parameter names (without\n\t\ttypes) in function declaration\n\tinclude/asm/pgtable.h:345: warning: parameter names (without\n\t\ttypes) in function declaration\n\tinclude/asm/pgtable.h:346: error: expected \u0027\u003d\u0027, \u0027,\u0027, \u0027;\u0027, \u0027asm\u0027 or\n\t\t\u0027__attribute__\u0027 before \u0027___f___swp_entry\u0027\n\nviro sayeth:\n\n  I\u0027ve run allmodconfig builds on a bunch of target, FWIW (essentially the\n  same patch).  Note that these includes are recent addition caused by added\n  inline function that had since then become a define.  So while I agree with\n  your comments in general, in _this_ case it\u0027s pretty safe.\n\n  The commit that had done it is 3062fc67dad01b1d2a15d58c709eff946389eca4\n  (\"memcontrol: move mm_cgroup to header file\") and the switch to #define\n  is in commit 60c12b1202a60eabb1c61317e5d2678fcea9893f (\"memcontrol: add\n  vm_match_cgroup()\") (BTW, that probably warranted mentioning in the\n  changelog of the latter).\n\nCc: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Robert Reif \u003creif@earthlink.net\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60c12b1202a60eabb1c61317e5d2678fcea9893f",
      "tree": "143e5bdbd10d32832fce9183500deebad6c6e4db",
      "parents": [
        "6966a97753854c8b5336cf3997d5d1d205d91b12"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Sat Feb 09 00:10:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Feb 09 11:08:33 2008 -0800"
      },
      "message": "memcontrol: add vm_match_cgroup()\n\nmm_cgroup() is exclusively used to test whether an mm\u0027s mem_cgroup pointer\nis pointing to a specific cgroup.  Instead of returning the pointer, we can\njust do the test itself in a new macro:\n\n\tvm_match_cgroup(mm, cgroup)\n\nreturns non-zero if the mm\u0027s mem_cgroup points to cgroup.  Otherwise it\nreturns zero.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c541e14bfa553133c3473a6ed3e4c0583ea2285",
      "tree": "4e8ca5d7272803d3fe1bb06963b132248d0b4240",
      "parents": [
        "072c56c13e1302fcdc39961dc64e76485731ad67"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:41 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:22 2008 -0800"
      },
      "message": "Memory controller remove control_type feature\n\nBased on the discussion at http://lkml.org/lkml/2007/12/20/383, it was felt\nthat control_type might not be a good thing to implement right away.  We\ncan add this flexibility at a later point when required.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc38108e1ba7f3b9e12b82d0236fa3730c2e0439",
      "tree": "6e51d191006b5db840c1eee659c372a2de7f85a8",
      "parents": [
        "6c48a1d040a9a9eaa4acdd7d4cb3885e04bf8413"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Feb 07 00:14:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:22 2008 -0800"
      },
      "message": "per-zone and reclaim enhancements for memory controller: calculate the number of pages to be scanned per cgroup\n\nDefine function for calculating the number of scan target on each Zone/LRU.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c48a1d040a9a9eaa4acdd7d4cb3885e04bf8413",
      "tree": "2fcfb405b5664028d337a8a185c696c9c1f23e64",
      "parents": [
        "5932f3671bb2dd873c5ac443cbf5dc2cd167ae94"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Feb 07 00:14:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:22 2008 -0800"
      },
      "message": "per-zone and reclaim enhancements for memory controller: remember reclaim priority in memory cgroup\n\nFunctions to remember reclaim priority per cgroup (as zone-\u003eprev_priority)\n\n[akpm@linux-foundation.org: build fixes]\n[akpm@linux-foundation.org: more build fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5932f3671bb2dd873c5ac443cbf5dc2cd167ae94",
      "tree": "31e2a8fc80487b5ec80d7730c61b62127aebc15d",
      "parents": [
        "58ae83db2a40dea15d4277d499a11dadc823c388"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Feb 07 00:14:33 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:21 2008 -0800"
      },
      "message": "per-zone and reclaim enhancements for memory controller: calculate active/inactive imbalance per cgroup\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58ae83db2a40dea15d4277d499a11dadc823c388",
      "tree": "18e43609ab67a9577c01188d39714999d5ed03d0",
      "parents": [
        "6d12e2d8ddbe653d80ea4f71578481c1bc933025"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Feb 07 00:14:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:21 2008 -0800"
      },
      "message": "per-zone and reclaim enhancements for memory controller: calculate mapper_ratio per cgroup\n\nDefine function for calculating mapped_ratio in memory cgroup.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae41be374293e70e1ed441d986afcc6e744ef9d9",
      "tree": "d8e2143820bbf3ed2f1f79ed99ee430284567b93",
      "parents": [
        "9175e0311ec9e6d1bf1f6dfecf9268baf08765e6"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Feb 07 00:14:10 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "bugfix for memory cgroup controller: migration under memory controller fix\n\nWhile using memory control cgroup, page-migration under it works as following.\n\u003d\u003d\n 1. uncharge all refs at try to unmap.\n 2. charge regs again remove_migration_ptes()\n\u003d\u003d\nThis is simple but has following problems.\n\u003d\u003d\n The page is uncharged and charged back again if *mapped*.\n    - This means that cgroup before migration can be different from one after\n      migration\n    - If page is not mapped but charged as page cache, charge is just ignored\n      (because not mapped, it will not be uncharged before migration)\n      This is memory leak.\n\u003d\u003d\nThis patch tries to keep memory cgroup at page migration by increasing\none refcnt during it. 3 functions are added.\n\n mem_cgroup_prepare_migration() --- increase refcnt of page-\u003epage_cgroup\n mem_cgroup_end_migration()     --- decrease refcnt of page-\u003epage_cgroup\n mem_cgroup_page_migration() --- copy page-\u003epage_cgroup from old page to\n                                 new page.\n\nDuring migration\n  - old page is under PG_locked.\n  - new page is under PG_locked, too.\n  - both old page and new page is not on LRU.\n\nThese 3 facts guarantee that page_cgroup() migration has no race.\n\nTested and worked well in x86_64/fake-NUMA box.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4c4a22148909e4c003562ea7ffe0a06e26919e3c",
      "tree": "fa8b7d00e89f0eb4cdb4394dbc74d898810519aa",
      "parents": [
        "4c6bc8dd5a0932f2c0b30a5f0a124464b7f614d0"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Feb 07 00:14:06 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "memcontrol: move oom task exclusion to tasklist scan\n\nCreates a helper function to return non-zero if a task is a member of a\nmemory controller:\n\n\tint task_in_mem_cgroup(const struct task_struct *task,\n\t\t\t       const struct mem_cgroup *mem);\n\nWhen the OOM killer is constrained by the memory controller, the exclusion\nof tasks that are not a member of that controller was previously misplaced\nand appeared in the badness scoring function.  It should be excluded\nduring the tasklist scan in select_bad_process() instead.\n\n[akpm@linux-foundation.org: build fix]\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3062fc67dad01b1d2a15d58c709eff946389eca4",
      "tree": "521b26bda2f6b106c8b3747a88214eec5f24b998",
      "parents": [
        "e1a1cd590e3fcb0d2e230128daf2337ea55387dc"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Feb 07 00:14:03 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "memcontrol: move mm_cgroup to header file\n\nInline functions must preceed their use, so mm_cgroup() should be defined\nin linux/memcontrol.h.\n\ninclude/linux/memcontrol.h:48: warning: \u0027mm_cgroup\u0027 declared inline after\n\tbeing called\ninclude/linux/memcontrol.h:48: warning: previous declaration of\n\t\u0027mm_cgroup\u0027 was here\n\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: nuther build fix]\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1a1cd590e3fcb0d2e230128daf2337ea55387dc",
      "tree": "eb660ab340c657a1eb595b2d4d8e8b62783bf6fb",
      "parents": [
        "bed7161a519a2faef53e1bce1b47595e297c1d14"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:02 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: make charging gfp mask aware\n\nNick Piggin pointed out that swap cache and page cache addition routines\ncould be called from non GFP_KERNEL contexts.  This patch makes the\ncharging routine aware of the gfp context.  Charging might fail if the\ncgroup is over it\u0027s limit, in which case a suitable error is returned.\n\nThis patch was tested on a Powerpc box.  I am still looking at being able\nto test the path, through which allocations happen in non GFP_KERNEL\ncontexts.\n\n[kamezawa.hiroyu@jp.fujitsu.com: problem with ZONE_MOVABLE]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bed7161a519a2faef53e1bce1b47595e297c1d14",
      "tree": "fbc0541340465f7d83221b829a9382cac2855916",
      "parents": [
        "8697d33194faae6fdd6b2e799f6308aa00cfdf67"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: make page_referenced() cgroup aware\n\nMake page_referenced() cgroup aware.  Without this patch, page_referenced()\ncan cause a page to be skipped while reclaiming pages.  This patch ensures\nthat other cgroups do not hold pages in a particular cgroup hostage.  It\nis required to ensure that shared pages are freed from a cgroup when they\nare not actively referenced from the cgroup that brought them in\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8697d33194faae6fdd6b2e799f6308aa00cfdf67",
      "tree": "edf6b3e4698b80aac6f1d1f2b9e5698ce8dfa6e5",
      "parents": [
        "c7ba5c9e8176704bfac0729875fa62798037584d"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: add switch to control what type of pages to limit\n\nChoose if we want cached pages to be accounted or not.  By default both are\naccounted for.  A new set of tunables are added.\n\necho -n 1 \u003e mem_control_type\n\nswitches the accounting to account for only mapped pages\n\necho -n 3 \u003e mem_control_type\n\nswitches the behaviour back\n\n[bunk@kernel.org: mm/memcontrol.c: clenups]\n[akpm@linux-foundation.org: fix sparc32 build]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c7ba5c9e8176704bfac0729875fa62798037584d",
      "tree": "00df1c4cb67e313cdb66233381b4cee275fd46c0",
      "parents": [
        "0eea10301708c64a6b793894c156e21ddd15eb64"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@openvz.org",
        "time": "Thu Feb 07 00:13:58 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: OOM handling\n\nOut of memory handling for cgroups over their limit. A task from the\ncgroup over limit is chosen using the existing OOM logic and killed.\n\nTODO:\n1. As discussed in the OLS BOF session, consider implementing a user\nspace policy for OOM handling.\n\n[akpm@linux-foundation.org: fix build due to oom-killer changes]\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "66e1707bc34609f626e2e7b4fe7e454c9748bad5",
      "tree": "d850a729887485874c976ba64eb85e3406e488a1",
      "parents": [
        "67e465a77ba658635309ee00b367bec6555ea544"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:56 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: add per cgroup LRU and reclaim\n\nAdd the page_cgroup to the per cgroup LRU.  The reclaim algorithm has\nbeen modified to make the isolate_lru_pages() as a pluggable component.  The\nscan_control data structure now accepts the cgroup on behalf of which\nreclaims are carried out.  try_to_free_pages() has been extended to become\ncgroup aware.\n\n[akpm@linux-foundation.org: fix warning]\n[Lee.Schermerhorn@hp.com: initialize all scan_control\u0027s isolate_pages member]\n[bunk@kernel.org: make do_try_to_free_pages() static]\n[hugh@veritas.com: memcgroup: fix try_to_free order]\n[kamezawa.hiroyu@jp.fujitsu.com: this unlock_page_cgroup() is unnecessary]\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a9f3ccd24741b50200c3f33d62534c7271f3dfc",
      "tree": "066aabd8d2952299501f067a91cbfd6f47ee62f6",
      "parents": [
        "78fb74669e80883323391090e4d26d17fe29488f"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: memory accounting\n\nAdd the accounting hooks.  The accounting is carried out for RSS and Page\nCache (unmapped) pages.  There is now a common limit and accounting for both.\nThe RSS accounting is accounted at page_add_*_rmap() and page_remove_rmap()\ntime.  Page cache is accounted at add_to_page_cache(),\n__delete_from_page_cache().  Swap cache is also accounted for.\n\nEach page\u0027s page_cgroup is protected with the last bit of the\npage_cgroup pointer, this makes handling of race conditions involving\nsimultaneous mappings of a page easier.  A reference count is kept in the\npage_cgroup to deal with cases where a page might be unmapped from the RSS\nof all tasks, but still lives in the page cache.\n\nCredits go to Vaidyanathan Srinivasan for helping with reference counting work\nof the page cgroup.  Almost all of the page cache accounting code has help\nfrom Vaidyanathan Srinivasan.\n\n[hugh@veritas.com: fix swapoff breakage]\n[akpm@linux-foundation.org: fix locking]\nSigned-off-by: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cValdis.Kletnieks@vt.edu\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78fb74669e80883323391090e4d26d17fe29488f",
      "tree": "9154b703510415ae87bdae8750c1054e79710c61",
      "parents": [
        "8cdea7c05454260c0d4d83503949c358eb131d17"
      ],
      "author": {
        "name": "Pavel Emelianov",
        "email": "xemul@openvz.org",
        "time": "Thu Feb 07 00:13:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: accounting setup\n\nBasic setup routines, the mm_struct has a pointer to the cgroup that\nit belongs to and the the page has a page_cgroup associated with it.\n\nSigned-off-by: Pavel Emelianov \u003cxemul@openvz.org\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8cdea7c05454260c0d4d83503949c358eb131d17",
      "tree": "62f8d7262744dd9ec507252bf3e84a89c088ff9b",
      "parents": [
        "e552b6617067ab785256dcec5ca29eeea981aacb"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: cgroups setup\n\nSetup the memory cgroup and add basic hooks and controls to integrate\nand work with the cgroup.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
