)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e726fb0df71962b76ac53613079fb62b741448c3",
      "old_mode": 33188,
      "old_path": "Documentation/cgroups/memory.txt",
      "new_id": "1f59a1a38bd97c730897bafd40521dc36bed19cf",
      "new_mode": 33188,
      "new_path": "Documentation/cgroups/memory.txt"
    },
    {
      "type": "modify",
      "old_id": "b0e4eb1262364c9cad92eb7600afbfba0b2afa02",
      "old_mode": 33188,
      "old_path": "include/linux/page_cgroup.h",
      "new_id": "30b08136fdf3857db44dda40b04c0a5b46d2e622",
      "new_mode": 33188,
      "new_path": "include/linux/page_cgroup.h"
    },
    {
      "type": "modify",
      "old_id": "a2602a8207a615ab21abce5f8b0165f90664798d",
      "old_mode": 33188,
      "old_path": "include/linux/swap.h",
      "new_id": "1f59d9340c4da4af2f7c59eed5b8e78763c35c88",
      "new_mode": 33188,
      "new_path": "include/linux/swap.h"
    },
    {
      "type": "modify",
      "old_id": "589084f00b701416c5b5fac2aeac61af2720db54",
      "old_mode": 33188,
      "old_path": "mm/memcontrol.c",
      "new_id": "e883198baf81ecea1605753a3a9b768487f6693f",
      "new_mode": 33188,
      "new_path": "mm/memcontrol.c"
    },
    {
      "type": "modify",
      "old_id": "3d535d59482668012bd67c21b18cb59a909e1007",
      "old_mode": 33188,
      "old_path": "mm/page_cgroup.c",
      "new_id": "3dd88539a0e6b47876ec87a91ee093533e1392c9",
      "new_mode": 33188,
      "new_path": "mm/page_cgroup.c"
    },
    {
      "type": "modify",
      "old_id": "84374d8cf814db6e131be7c42fdbd7450b7282d5",
      "old_mode": 33188,
      "old_path": "mm/swapfile.c",
      "new_id": "6cd0a8f90dc74119d9db32fae7fb9f7ea01de13c",
      "new_mode": 33188,
      "new_path": "mm/swapfile.c"
    }
  ]
}
