)]}'
{
  "log": [
    {
      "commit": "7952f98818d561ed0e11434a7a16acd9a7bae859",
      "tree": "b8e74d8a3aa9ac6939889487b8c46ce098c7d9f3",
      "parents": [
        "815c4163b6c8ebf8152f42b0a5fd015cfdcedc78"
      ],
      "author": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Mon Jul 19 11:54:14 2010 +0100"
      },
      "committer": {
        "name": "Catalin Marinas",
        "email": "catalin.marinas@arm.com",
        "time": "Mon Jul 19 11:54:14 2010 +0100"
      },
      "message": "kmemleak: Annotate false positive in init_section_page_cgroup()\n\nThe pointer to the page_cgroup table allocated in\ninit_section_page_cgroup() is stored in section-\u003epage_cgroup as (base -\npfn). Since this value does not point to the beginning or inside the\nallocated memory block, kmemleak reports a false positive.\n\nThis was reported in bugzilla.kernel.org as #16297.\n\nSigned-off-by: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nReported-by: Adrien Dessemond \u003cadrien.dessemond@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e9e58a4ec3b1086d1ed8c915311aef1ae55454fd",
      "tree": "a500ec01cce13fa17f2400ac57f4ad36f4d37bca",
      "parents": [
        "a3d3203e4bb40f253b1541e310dc0f9305be7c84"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Mar 15 00:34:57 2010 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 17 18:43:47 2010 -0700"
      },
      "message": "memcg: avoid use cmpxchg in swap cgroup maintainance\n\nswap_cgroup uses 2bytes data and uses cmpxchg in a new operation.  2byte\ncmpxchg/xchg is not available on some archs.  This patch replaces\ncmpxchg/xchg with operations under lock.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReported-by: Sachin Sant \u003csachinp@in.ibm.com\u003e wrote:\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nAcked-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "024914477e15ef8b17f271ec47f1bb8a589f0806",
      "tree": "9a6a8b4224c94fcdd1b8c3127b301ee3537f8cc2",
      "parents": [
        "8033b97c9b5ef063e3f4bf2efe1cd0a22093aaff"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Wed Mar 10 15:22:17 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 12 15:52:36 2010 -0800"
      },
      "message": "memcg: move charges of anonymous swap\n\nThis patch is another core part of this move-charge-at-task-migration\nfeature.  It enables moving charges of anonymous swaps.\n\nTo move the charge of swap, we need to exchange swap_cgroup\u0027s record.\n\nIn current implementation, swap_cgroup\u0027s record is protected by:\n\n  - page lock: if the entry is on swap cache.\n  - swap_lock: if the entry is not on swap cache.\n\nThis works well in usual swap-in/out activity.\n\nBut this behavior make the feature of moving swap charge check many\nconditions to exchange swap_cgroup\u0027s record safely.\n\nSo I changed modification of swap_cgroup\u0027s recored(swap_cgroup_record())\nto use xchg, and define a new function to cmpxchg swap_cgroup\u0027s record.\n\nThis patch also enables moving charge of non pte_present but not uncharged\nswap caches, which can be exist on swap-out path, by getting the target\npages via find_get_page() as do_mincore() does.\n\n[kosaki.motohiro@jp.fujitsu.com: fix ia64 build]\n[akpm@linux-foundation.org: fix typos]\nSigned-off-by: 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\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "f52407ce2deac76c87abc8211a63ea152ba72d54",
      "tree": "6e3976fae721bd178d68d11750f7ad7f86d8feca",
      "parents": [
        "8e7e40d9658cf7b2ae2b76484e235799b3ddaa97"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Sep 21 17:01:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:26 2009 -0700"
      },
      "message": "memory hotplug: alloc page from other node in memory online\n\nTo initialize hotadded node, some pages are allocated.  At that time, the\nnode hasn\u0027t memory, this makes the allocation always fail.  In such case,\nlet\u0027s allocate pages from other nodes.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: Yakui Zhao \u003cyakui.zhao@intel.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\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": "338c843108bf5030d6765f4405126e70f8b77845",
      "tree": "c3bdab2f288e4c5a843ea07e0f8938a821ab848a",
      "parents": [
        "302362c5abdda80b5c2e4e57be610c2e3c2ab3c5"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Jun 17 16:27:15 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:47 2009 -0700"
      },
      "message": "memcg: remove some redundant checks\n\nWe don\u0027t need to check do_swap_account in the case that the function which\nchecks do_swap_account will never get called if do_swap_account \u003d\u003d 0.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: 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": "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": "8ca739e3694b83cdf22be0f6eff063e721deb1e4",
      "tree": "21ab2fd13ee92803a381cc1b6df7a40885b2ec0c",
      "parents": [
        "28f06c6f4ba2ff450b134b82a3285a26f232a2c1"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Jun 17 16:26:32 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:46 2009 -0700"
      },
      "message": "cgroups: make messages more readable\n\nFix some cgroup messages to read better.\nUpdate MAINTAINERS to include mm/*cgroup* files.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Li Zefan \u003clizf@cn.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": "ca371c0d7e23d0d0afae65fc83a0e91cf7399573",
      "tree": "20ca26fbdceefe25d1c362dc23a2152c1aac8b4c",
      "parents": [
        "8ebf975608aaebd7feb33d77f07ba21a6380e086"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jun 12 10:33:53 2009 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 12 11:00:54 2009 +0300"
      },
      "message": "memcg: fix page_cgroup fatal error in FLATMEM\n\nNow, SLAB is configured in very early stage and it can be used in\ninit routine now.\n\nBut replacing alloc_bootmem() in FLAT/DISCONTIGMEM\u0027s page_cgroup()\ninitialization breaks the allocation, now.\n(Works well in SPARSEMEM case...it supports MEMORY_HOTPLUG and\n size of page_cgroup is in reasonable size (\u003c 1 \u003c\u003c MAX_ORDER.)\n\nThis patch revive FLATMEM+memory cgroup by using alloc_bootmem.\n\nIn future,\nWe stop to support FLATMEM (if no users) or rewrite codes for flatmem\ncompletely.But this will adds more messy codes and overheads.\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "959982fee4e635c61780e989c3e34267143fcc02",
      "tree": "08ff2d07020a908a10bbebb64729ca5b325843f3",
      "parents": [
        "dad213aeb59718623fc59defeff95fe8c3feb8a0"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Thu May 28 18:15:16 2009 -0700"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Thu Jun 11 19:27:10 2009 +0300"
      },
      "message": "memcg: don\u0027t use bootmem allocator in setup code\n\nThe bootmem allocator is no longer available for page_cgroup_init() because we\nset up the kernel slab allocator much earlier now.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "627991a20b3f4d504d20466ab405fe035cb1a20a",
      "tree": "ac1d7e0bc0881cf31c72ab1f830de904d52ef13e",
      "parents": [
        "a3b2d692690aef228e493b1beaafe5364cab3237"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Apr 02 16:57:47 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:56 2009 -0700"
      },
      "message": "memcg: remove redundant message at swapon\n\nIt\u0027s pointed out that swap_cgroup\u0027s message at swapon() is nonsense.\nBecause\n\n  * It can be calculated very easily if all necessary information is\n    written in Kconfig.\n\n  * It\u0027s not necessary to annoying people at every swapon().\n\nIn other view, now, memory usage per swp_entry is reduced to 2bytes from\n8bytes(64bit) and I think it\u0027s reasonably small.\n\nReported-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": "a3b2d692690aef228e493b1beaafe5364cab3237",
      "tree": "d3ad99c5370462861a1b918b4136e7bd7ad78e52",
      "parents": [
        "3c776e64660028236313f0e54f3a9945764422df"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Apr 02 16:57:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:04:56 2009 -0700"
      },
      "message": "cgroups: use css id in swap cgroup for saving memory v5\n\nTry to use CSS ID for records in swap_cgroup.  By this, on 64bit machine,\nsize of swap_cgroup goes down to 2 bytes from 8bytes.\n\nThis means, when 2GB of swap is equipped, (assume the page size is 4096bytes)\n\n\tFrom size of swap_cgroup \u003d 2G/4k * 8 \u003d 4Mbytes.\n\tTo   size of swap_cgroup \u003d 2G/4k * 2 \u003d 1Mbytes.\n\nReduction is large.  Of course, there are trade-offs.  This CSS ID will\nadd overhead to swap-in/swap-out/swap-free.\n\nBut in general,\n  - swap is a resource which the user tend to avoid use.\n  - If swap is never used, swap_cgroup area is not used.\n  - Reading traditional manuals, size of swap should be proportional to\n    size of memory. Memory size of machine is increasing now.\n\nI think reducing size of swap_cgroup makes sense.\n\nNote:\n  - ID-\u003eCSS lookup routine has no locks, it\u0027s under RCU-Read-Side.\n  - memcg can be obsolete at rmdir() but not freed while refcnt from\n    swap_cgroup is available.\n\nChangelog v4-\u003ev5:\n - reworked on to memcg-charge-swapcache-to-proper-memcg.patch\nChanglog -\u003ev4:\n - fixed not configured case.\n - deleted unnecessary comments.\n - fixed NULL pointer bug.\n - fixed message in dmesg.\n\n[nishimura@mxp.nes.nec.co.jp: css_tryget can be called twice in !PageCgroupUsed case]\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: Paul Menage \u003cmenage@google.com\u003e\nCc: 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": "2e9c23724328ae4e56c42a35a717a956d7d3001d",
      "tree": "e96657542d354cef4d50020b48ab565053810d5d",
      "parents": [
        "d4097456cd1d9285e876fc5d08a789462804cc28"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Feb 11 13:04:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 11 14:25:35 2009 -0800"
      },
      "message": "memcg: use __GFP_NOWARN in page cgroup allocation\n\npage_cgroup\u0027s page allocation at init/memory hotplug uses kmalloc() and\nvmalloc(). If kmalloc() failes, vmalloc() is used.\n\nThis is because vmalloc() is very limited resource on 32bit systems.\nWe want to use kmalloc() first.\n\nBut in this kind of call, __GFP_NOWARN should be specified.\n\nReported-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\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": "27a7faa0779dd13729196c1a818c294f44bbd1ee",
      "tree": "30837689bf39eb734a8917f2c912e1b8ac0c28c0",
      "parents": [
        "c077719be8e9e6b55702117513d1b5f41d80404a"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: swap cgroup for remembering usage\n\nFor accounting swap, we need a record per swap entry, at least.\n\nThis patch adds following function.\n  - swap_cgroup_swapon() .... called from swapon\n  - swap_cgroup_swapoff() ... called at the end of swapoff.\n\n  - swap_cgroup_record() .... record information of swap entry.\n  - swap_cgroup_lookup() .... lookup information of swap entry.\n\nThis patch just implements \"how to record information\".  No actual method\nfor limit the usage of swap.  These routine uses flat table to record and\nlookup.  \"wise\" lookup system like radix-tree requires requires memory\nallocation at new records but swap-out is usually called under memory\nshortage (or memcg hits limit.) So, I used static allocation.  (maybe\ndynamic allocation is not very hard but it adds additional memory\nallocation in memory shortage path.)\n\nNote1: In this, we use pointer to record information and this means\n      8bytes per swap entry. I think we can reduce this when we\n      create \"id of cgroup\" in the range of 0-65535 or 0-255.\n\nReported-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReported-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReported-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.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": "0753b0ef3b301895234fed02bea2c099c7ff4feb",
      "tree": "35d01368e76d0e5ad21b38fc80274154f8a35d62",
      "parents": [
        "01b1ae63c2270cbacfd43fea94578c17950eb548"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Wed Jan 07 18:07:51 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: do not recalculate section unnecessarily in init_section_page_cgroup\n\nIn init_section_page_cgroup() the section a given pfn belongs to is\ncalculated at the top of the function and, despite the fact that the\npfn/section correspondence does not change, it is recalculated further\ndown the same function.  By computing this just once and reusing that\nvalue we save some bytes in the object file and do not waste CPU cycles.\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nReviewed-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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "feb166948876e2ff8f70b2da273b2a8e86957578",
      "tree": "7d076f061531f42c9ca42f1565b7ce59fc30b4d6",
      "parents": [
        "077cbc5864cd9188fa4c4e181e48ff58317e6400"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: make init_section_page_cgroup() static\n\nSparse output following warning.\n\nmm/page_cgroup.c:100:15: warning: symbol \u0027init_section_page_cgroup\u0027 was\nnot declared.  Should it be static?\n\ncleanup here.\n\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": "653d22c0f5c41496c0e949ef5d141ab37c0b0580",
      "tree": "45754ea4067b21b9ff95a398494b239b5bb7005a",
      "parents": [
        "cc61686001b1368724d1c38805c27e5021cd85ed"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Dec 09 13:14:20 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 08:01:53 2008 -0800"
      },
      "message": "page_cgroup should ignore empty nodes\n\nFix a total bootup freeze on ia64.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nReported-by: Li Zefan \u003clizf@cn.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": "dc19f9db38295f811d9041bd89b113beccbd763a",
      "tree": "6f1ce3a71df84981b4b5b70fd03f0d1fe20b196e",
      "parents": [
        "b29acbdcf877009af3f1fc0750bcac314c51e055"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Dec 01 13:13:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 01 19:55:24 2008 -0800"
      },
      "message": "memcg: memory hotplug fix for notifier callback\n\nFixes for memcg/memory hotplug.\n\nWhile memory hotplug allocate/free memmap, page_cgroup doesn\u0027t free\npage_cgroup at OFFLINE when page_cgroup is allocated via bootomem.\n(Because freeing bootmem requires special care.)\n\nThen, if page_cgroup is allocated by bootmem and memmap is freed/allocated\nby memory hotplug, page_cgroup-\u003epage \u003d\u003d page is no longer true.\n\nBut current MEM_ONLINE handler doesn\u0027t check it and update\npage_cgroup-\u003epage if it\u0027s not necessary to allocate page_cgroup.  (This\nwas not found because memmap is not freed if SPARSEMEM_VMEMMAP is y.)\n\nAnd I noticed that MEM_ONLINE can be called against \"part of section\".\nSo, freeing page_cgroup at CANCEL_ONLINE will cause trouble.  (freeing\nused page_cgroup) Don\u0027t rollback at CANCEL.\n\nOne more, current memory hotplug notifier is stopped by slub because it\nsets NOTIFY_STOP_MASK to return vaule.  So, page_cgroup\u0027s callback never\nbe called.  (low priority than slub now.)\n\nI think this slub\u0027s behavior is not intentional(BUG). and fixes it.\n\nAnother way to be considered about page_cgroup allocation:\n  - free page_cgroup at OFFLINE even if it\u0027s from bootmem\n    and remove specieal handler. But it requires more changes.\n\nAddresses http://bugzilla.kernel.org/show_bug.cgi?id\u003d12041\n\nSigned-off-by: KAMEZAWA Hiruyoki \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\nTested-by: Badari Pulavarty \u003cpbadari@us.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": "31168481c32c8a485e1003af9433124dede57f8d",
      "tree": "0d0bb17b8f45cb3b176acc63dee4f2a57aaca500",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ftp.linux.org.uk",
        "time": "Sat Nov 22 17:33:24 2008 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 30 10:03:35 2008 -0800"
      },
      "message": "meminit section warnings\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33c5d3d64589c5d379db5a5615735f6d08438369",
      "tree": "83027e5c9ade4c4f352685bb15cd66d5b98e76a3",
      "parents": [
        "6cdfcc275e40b89fb020da1088ead86a61d33115"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Nov 12 13:27:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:17 2008 -0800"
      },
      "message": "memcg: bugfix for memory hotplug\n\nThe start pfn calculation in page_cgroup\u0027s memory hotplug notifier chain\nis wrong.\n\nTested-by: Badari Pulavarty \u003cpbadari@us.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": "94b6da5ab8293b04a300ba35c72eddfa94db8b02",
      "tree": "8ca1c8abb7934ab51657fffeb26a5f5aabd34743",
      "parents": [
        "be07c4ed4043ab8c26f222348136141335e47a2f"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Oct 22 14:15:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 08:55:02 2008 -0700"
      },
      "message": "memcg: fix page_cgroup allocation\n\npage_cgroup_init() is called from mem_cgroup_init(). But at this\npoint, we cannot call alloc_bootmem().\n(and this caused panic at boot.)\n\nThis patch moves page_cgroup_init() to init/main.c.\n\nTime table is following:\n\u003d\u003d\n  parse_args(). # we can trust mem_cgroup_subsys.disabled bit after this.\n  ....\n  cgroup_init_early()  # \"early\" init of cgroup.\n  ....\n  setup_arch()         # memmap is allocated.\n  ...\n  page_cgroup_init();\n  mem_init();   # we cannot call alloc_bootmem after this.\n  ....\n  cgroup_init() # mem_cgroup is initialized.\n\u003d\u003d\n\nBefore page_cgroup_init(), mem_map must be initialized. So,\nI added page_cgroup_init() to init/main.c directly.\n\n(*) maybe this is not very clean but\n    - cgroup_init_early() is too early\n    - in cgroup_init(), we have to use vmalloc instead of alloc_bootmem().\n    use of vmalloc area in x86-32 is important and we should avoid very large\n    vmalloc() in x86-32. So, we want to use alloc_bootmem() and added page_cgroup_init()\n    directly to init/main.c\n\n[akpm@linux-foundation.org: remove unneeded/bad mem_cgroup_subsys declaration]\n[akpm@linux-foundation.org: fix build]\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nTested-by: Balbir Singh \u003cbalbir@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": "4c8210427bd1b7efa1dabf93f4d2312f29908d8f",
      "tree": "23f4c918e7e2135b565d14fca463bf0906e6e880",
      "parents": [
        "9bf9b2f3ad6362cdc9ef79291d440a92960b8f51"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Wed Oct 22 14:14:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 08:55:01 2008 -0700"
      },
      "message": "mm: page_cgroup needs linux/vmalloc.h for vmalloc_node()/vfree().\n\nmm/page_cgroup.c: In function \u0027init_section_page_cgroup\u0027:\nmm/page_cgroup.c:111: error: implicit declaration of function \u0027vmalloc_node\u0027\nmm/page_cgroup.c:111: warning: assignment makes pointer from integer without a cast\nmm/page_cgroup.c: In function \u0027__free_page_cgroup\u0027:\nmm/page_cgroup.c:140: error: implicit declaration of function \u0027vfree\u0027\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.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"
    }
  ]
}
