)]}'
{
  "log": [
    {
      "commit": "9c24624727f6d6c460e45762a408ca5f5b9b8ef2",
      "tree": "39f41dc5e46a9f0e1151963eb1d4f2b7ff77ee3d",
      "parents": [
        "6ee5a399d6a92a52646836a6e10faf255c16393e"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Dec 09 13:14:27 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 08:01:54 2008 -0800"
      },
      "message": "KSYM_SYMBOL_LEN fixes\n\nMiles Lane tailing /sys files hit a BUG which Pekka Enberg has tracked\nto my 966c8c12dc9e77f931e2281ba25d2f0244b06949 sprint_symbol(): use\nless stack exposing a bug in slub\u0027s list_locations() -\nkallsyms_lookup() writes a 0 to namebuf[KSYM_NAME_LEN-1], but that was\nbeyond the end of page provided.\n\nThe 100 slop which list_locations() allows at end of page looks roughly\nenough for all the other stuff it might print after the symbol before\nit checks again: break out KSYM_SYMBOL_LEN earlier than before.\n\nLatencytop and ftrace and are using KSYM_NAME_LEN buffers where they\nneed KSYM_SYMBOL_LEN buffers, and vmallocinfo a 2*KSYM_NAME_LEN buffer\nwhere it wants a KSYM_SYMBOL_LEN buffer: fix those before anyone copies\nthem.\n\n[akpm@linux-foundation.org: ftrace.h needs module.h]\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc Miles Lane \u003cmiles.lane@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.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": "80bba1290ab5122c60cdb73332b26d288dc8aedd",
      "tree": "1a97a6f5070818ffcb3573c1968471110bed3a42",
      "parents": [
        "52b9582dd5983ac888c494bd3e15b5cd40195c53"
      ],
      "author": {
        "name": "Brice Goglin",
        "email": "Brice.Goglin@inria.fr",
        "time": "Tue Dec 09 13:14:23 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 08:01:53 2008 -0800"
      },
      "message": "mm: no get_user/put_user while holding mmap_sem in do_pages_stat?\n\nSince commit 2f007e74bb85b9fc4eab28524052161703300f1a, do_pages_stat()\ngets the page address from user-space and puts the corresponding status\nback while holding the mmap_sem for read.  There is no need to hold\nmmap_sem there while some page-faults may occur.\n\nThis patch adds a temporary address and status buffer so as to only\nhold mmap_sem while working on these kernel buffers.  This is\nimplemented by extracting do_pages_stat_array() out of do_pages_stat().\n\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@inria.fr\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\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": "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": "6841c8e26357904ef462650273f5d5015f7bb370",
      "tree": "17621c8b63393b725f42dad26ac671dd1926c9c1",
      "parents": [
        "02d211688727ad02bb4555b1aa8ae2de16b21b39"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Dec 09 13:14:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 08:01:53 2008 -0800"
      },
      "message": "mm: remove UP version of lru_add_drain_all()\n\nCurrently, lru_add_drain_all() has two version.\n  (1) use schedule_on_each_cpu()\n  (2) don\u0027t use schedule_on_each_cpu()\n\nGerald Schaefer reported it doesn\u0027t work well on SMP (not NUMA) S390\nmachine.\n\n  offline_pages() calls lru_add_drain_all() followed by drain_all_pages().\n  While drain_all_pages() works on each cpu, lru_add_drain_all() only runs\n  on the current cpu for architectures w/o CONFIG_NUMA. This let us run\n  into the BUG_ON(!PageBuddy(page)) in __offline_isolated_pages() during\n  memory hotplug stress test on s390. The page in question was still on the\n  pcp list, because of a race with lru_add_drain_all() and drain_all_pages()\n  on different cpus.\n\nActually, Almost machine has CONFIG_UNEVICTABLE_LRU\u003dy. Then almost machine use\n(1) version lru_add_drain_all although the machine is UP.\n\nThen this ifdef is not valueable.\nsimple removing is better.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nAcked-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: Dave Hansen \u003cdave@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": "69fc208be5b7eb18d22d1eca185b201400fd5ffc",
      "tree": "2f3961f9f74ed8b136d7550291367fa80f4b54ea",
      "parents": [
        "437f2f91d6597c67662f847d9ed4c99cb3c440cd"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Dec 09 13:14:06 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 10 08:01:52 2008 -0800"
      },
      "message": "mm/backing-dev.c: remove recently-added WARN_ON()\n\nOn second thoughts, this is just going to disturb people while telling us\nthings which we already knew.\n\nCc: Peter Korsgaard \u003cjacmet@sunsite.dk\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: David Woodhouse \u003cdwmw2@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": "9ff473b9a72942c5ac0ad35607cae28d8d59ed7a",
      "tree": "32a6eca5447abc95cf7fa8482d1e3f8237806621",
      "parents": [
        "f1d0b063d993527754f062c589b73f125024d216"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Tue Dec 02 10:31:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 02 15:50:40 2008 -0800"
      },
      "message": "vmscan: evict streaming IO first\n\nCount the insertion of new pages in the statistics used to drive the\npageout scanning code.  This should help the kernel quickly evict\nstreaming file IO.\n\nWe count on the fact that new file pages start on the inactive file LRU\nand new anonymous pages start on the active anon list.  This means\nstreaming file IO will increment the recent scanned file statistic, while\nleaving the recent rotated file statistic alone, driving pageout scanning\nto the file LRUs.\n\nPageout activity does its own list manipulation.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Gene Heskett \u003cgene.heskett@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": "f1d0b063d993527754f062c589b73f125024d216",
      "tree": "65abf0c262ea1c8cf3931ea328329c82a049d341",
      "parents": [
        "1b79cd04fab80be61dcd2732e2423aafde9a4c1c"
      ],
      "author": {
        "name": "Kay Sievers",
        "email": "kay.sievers@vrfy.org",
        "time": "Tue Dec 02 10:31:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 02 15:50:40 2008 -0800"
      },
      "message": "bdi: register sysfs bdi device only once per queue\n\nDevices which share the same queue, like floppies and mtd devices, get\nregistered multiple times in the bdi interface, but bdi accounts only the\nlast registered device of the devices sharing one queue.\n\nOn remove, all earlier registered devices leak, stay around in sysfs, and\ncause \"duplicate filename\" errors if the devices are re-created.\n\nThis prevents the creation of multiple bdi interfaces per queue, and the\nbdi device will carry the dev_t name of the block device which is the\nfirst one registered, of the pool of devices using the same queue.\n\n[akpm@linux-foundation.org: add a WARN_ON so we know which drivers are misbehaving]\nTested-by: Peter Korsgaard \u003cjacmet@sunsite.dk\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: David Woodhouse \u003cdwmw2@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": "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": "b29acbdcf877009af3f1fc0750bcac314c51e055",
      "tree": "f4afe2fcecfe414b75934681cb19a037a953a4e8",
      "parents": [
        "8650e51ac94b5fe93c02e3c8fef02e416f14501c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Dec 01 13:13:47 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 01 19:55:23 2008 -0800"
      },
      "message": "mm: vmalloc fix lazy unmapping cache aliasing\n\nJim Radford has reported that the vmap subsystem rewrite was sometimes\ncausing his VIVT ARM system to behave strangely (seemed like going into\ninfinite loops trying to fault in pages to userspace).\n\nWe determined that the problem was most likely due to a cache aliasing\nissue.  flush_cache_vunmap was only being called at the moment the page\ntables were to be taken down, however with lazy unmapping, this can happen\nafter the page has subsequently been freed and allocated for something\nelse.  The dangling alias may still have dirty data attached to it.\n\nThe fix for this problem is to do the cache flushing when the caller has\ncalled vunmap -- it would be a bug for them to write anything else to the\nmapping at that point.\n\nThat appeared to solve Jim\u0027s problems.\n\nReported-by: Jim Radford \u003cradford@blackbean.org\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Russell King \u003crmk@arm.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": "2a1dc509747fdcfdf3a2df818a14908aed86c3d4",
      "tree": "4dd97b3090d314b42f793a48251497f34835a5e8",
      "parents": [
        "33b07db9f38fe73b3895f8d4db8fdee03e3afec3"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Mon Dec 01 03:00:35 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 01 07:58:06 2008 -0800"
      },
      "message": "vmscan: protect zone rotation stats by lru lock\n\nThe zone\u0027s rotation statistics must not be accessed without the\ncorresponding LRU lock held.  Fix an unprotected write in\nshrink_active_list().\n\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\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": "00d8089c54867053a5aae062b765f257ca419e27",
      "tree": "a976481b5d503fde553b8816edb01f310f3a505a",
      "parents": [
        "8e324c19f57cc05922e9cc0f338b58108da45539"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Wed Nov 19 15:36:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:59 2008 -0800"
      },
      "message": "vmscan: fix get_scan_ratio() comment\n\nFix the old comment on the scan ratio calculations.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.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": "63eb6b93ce725e4c5f38fc85dd703d49465b03cb",
      "tree": "5370a3080b8f20ae27904a3c36646f79b26c6665",
      "parents": [
        "bda8550deed96687f29992d711a88ea21cff4d26"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Nov 19 15:36:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:59 2008 -0800"
      },
      "message": "vmscan: let GFP_NOFS go to swap again\n\nIn the past, GFP_NOFS (but of course not GFP_NOIO) was allowed to reclaim\nby writing to swap.  That got partially broken in 2.6.23, when may_enter_fs\ninitialization was moved up before the allocation of swap, so its\nPageSwapCache test was failing the first time around,\n\nFix it by setting may_enter_fs when add_to_swap() succeeds with\n__GFP_IO.  In fact, check __GFP_IO before calling add_to_swap():\nallocating swap we\u0027re not ready to use just increases disk seeking.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.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": "bda8550deed96687f29992d711a88ea21cff4d26",
      "tree": "41061a3259d2ed2e19ed4b9e53e41675eb60bd3f",
      "parents": [
        "966c8c12dc9e77f931e2281ba25d2f0244b06949"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Nov 19 15:36:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "migration: fix writepage error\n\nPage migration\u0027s writeout() has got understandably confused by the nasty\nAOP_WRITEPAGE_ACTIVATE case: as in normal success, a writepage() error has\nunlocked the page, so writeout() then needs to relock it.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "0ae15132a4f5c758a6ffcde74495641dc3f62ba1",
      "tree": "c81f885105a038aa694c700e4aec37377f640881",
      "parents": [
        "496850e5f5a372029ceb2b35c811770a9bb073b6"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@redhat.com",
        "time": "Wed Nov 19 15:36:33 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "mm: vmalloc search restart fix\n\nCurrent vmalloc restart search for a free area in case we can\u0027t find one.\nThe reason is there are areas which are lazily freed, and could be\npossibly freed now.  However, current implementation start searching the\ntree from the last failing address, which is pretty much by definition at\nthe end of address space.  So, we fail.\n\nThe proposal of this patch is to restart the search from the beginning of\nthe requested vstart address.  This fixes the regression in running KVM\nvirtual machines for me, described in http://lkml.org/lkml/2008/10/28/349,\ncaused by commit db64fe02258f1507e13fe5212a989922323685ce.\n\nSigned-off-by: Glauber Costa \u003cglommer@redhat.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "496850e5f5a372029ceb2b35c811770a9bb073b6",
      "tree": "c6aa155a0dcf81e967a85dfe2b8142d3b8fa9063",
      "parents": [
        "f011c2dae6cffc50ef67d9bd937b488ba5db8913"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Nov 19 15:36:33 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "mm: vmalloc failure flush fix\n\nAn initial vmalloc failure should start off a synchronous flush of lazy\nareas, in case someone is in progress flushing them already, which could\ncause us to return an allocation failure even if there is plenty of KVA\nfree.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f011c2dae6cffc50ef67d9bd937b488ba5db8913",
      "tree": "d956e003a564b3881810eebe0d17fad6b74bb97c",
      "parents": [
        "f481891fdc49d3d1b8a9674a1825d183069a805f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Nov 19 15:36:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "mm: vmalloc allocator off by one\n\nFix off by one bug in the KVA allocator that can leave gaps in the address\nspace.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f481891fdc49d3d1b8a9674a1825d183069a805f",
      "tree": "4f027a1321dcd06165394d0a23e49df51c8befc1",
      "parents": [
        "ac97b9f9a2d0b83488e0bbcb8517b229d5c9b142"
      ],
      "author": {
        "name": "Miao Xie",
        "email": "miaox@cn.fujitsu.com",
        "time": "Wed Nov 19 15:36:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 19 18:49:58 2008 -0800"
      },
      "message": "cpuset: update top cpuset\u0027s mems after adding a node\n\nAfter adding a node into the machine, top cpuset\u0027s mems isn\u0027t updated.\n\nBy reviewing the code, we found that the update function\n\n  cpuset_track_online_nodes()\n\nwas invoked after node_states[N_ONLINE] changes.  It is wrong because\nN_ONLINE just means node has pgdat, and if node has/added memory, we use\nN_HIGH_MEMORY.  So, We should invoke the update function after\nnode_states[N_HIGH_MEMORY] changes, just like its commit says.\n\nThis patch fixes it.  And we use notifier of memory hotplug instead of\ndirect calling of cpuset_track_online_nodes().\n\nSigned-off-by: Miao Xie \u003cmiaox@cn.fujitsu.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Paul Menage \u003cmenage@google.com\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "72eb8c6747b49e41fd2b042510f03ac7c13426fc",
      "tree": "813916b3188d29c1bd3efe604183b9f4e88aaf58",
      "parents": [
        "e14c8bf86350f6c39186a139c5c584a6111b2f01"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Mon Nov 17 00:30:57 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 16 15:55:36 2008 -0800"
      },
      "message": "unitialized return value in mm/mlock.c: __mlock_vma_pages_range()\n\nFix an unitialized return value when compiling on parisc (with CONFIG_UNEVICTABLE_LRU\u003dy):\n\tmm/mlock.c: In function `__mlock_vma_pages_range\u0027:\n\tmm/mlock.c:165: warning: `ret\u0027 might be used uninitialized in this function\n\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\n[ It isn\u0027t ever really used uninitialized, since no caller should ever\n  call this function with an empty range.  But the compiler is correct\n  that from a local analysis standpoint that is impossible to see, and\n  fixing the warning is appropriate.  ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "748f1a2ed7a68e15b28a1da3559afbebba121772",
      "tree": "afe3e4d26bac397788be964d2cd0d89e7b0daa80",
      "parents": [
        "fb75109834ca5c5e2f0f17f0c9e20182ea55b65f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Fri Nov 14 16:25:01 2008 +0900"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 15 11:36:07 2008 -0800"
      },
      "message": "mm: remove unevictable\u0027s show_page_path\n\nHugh Dickins reported show_page_path() is buggy and unsafe because\n\n - lack dput() against d_find_alias()\n - don\u0027t concern vma-\u003evm_mm-\u003eowner \u003d\u003d NULL\n - lack lock_page()\n\nit was only for debugging, so rather than trying to fix it, just remove\nit now.\n\nReported-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCC: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCC: Rik van Riel \u003criel@redhat.com\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": "8891d6da17db0f9bb507d3a017f130b9970c3087",
      "tree": "fd0fa107c4b85649722b9921a4bcdb35776eb36f",
      "parents": [
        "a189d0350f387786b1fb5a5d19e3a5ab0bc0cceb"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Nov 12 13:26:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:16 2008 -0800"
      },
      "message": "mm: remove lru_add_drain_all() from the munlock path\n\nlockdep warns about following message at boot time on one of my test\nmachine.  Then, schedule_on_each_cpu() sholdn\u0027t be called when the task\nhave mmap_sem.\n\nActually, lru_add_drain_all() exist to prevent the unevictalble pages\nstay on reclaimable lru list.  but currenct unevictable code can rescue\nunevictable pages although it stay on reclaimable list.\n\nSo removing is better.\n\nIn addition, this patch add lru_add_drain_all() to sys_mlock() and\nsys_mlockall().  it isn\u0027t must.  but it reduce the failure of moving to\nunevictable list.  its failure can rescue in vmscan later.  but reducing\nis better.\n\nNote, if above rescuing happend, the Mlocked and the Unevictable field\nmismatching happend in /proc/meminfo.  but it doesn\u0027t cause any real\ntrouble.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.28-rc2-mm1 #2\n-------------------------------------------------------\nlvm/1103 is trying to acquire lock:\n (\u0026cpu_hotplug.lock){--..}, at: [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n\nbut task is already holding lock:\n (\u0026mm-\u003emmap_sem){----}, at: [\u003cc01878ae\u003e] sys_mlockall+0x4e/0xb0\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #3 (\u0026mm-\u003emmap_sem){----}:\n       [\u003cc0153da2\u003e] check_noncircular+0x82/0x110\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0156161\u003e] validate_chain+0xb11/0x1070\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\t\t\t(*) grab mmap_sem\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0185e9b\u003e] might_fault+0x7b/0xa0\n       [\u003cc0185e6a\u003e] might_fault+0x4a/0xa0\n       [\u003cc0294dd0\u003e] copy_to_user+0x30/0x60\n       [\u003cc01ae3ec\u003e] filldir+0x7c/0xd0\n       [\u003cc01e3a6a\u003e] sysfs_readdir+0x11a/0x1f0\t\t\t(*) grab sysfs_mutex\n       [\u003cc01ae370\u003e] filldir+0x0/0xd0\n       [\u003cc01ae370\u003e] filldir+0x0/0xd0\n       [\u003cc01ae4c6\u003e] vfs_readdir+0x86/0xa0\t\t\t(*) grab i_mutex\n       [\u003cc01ae75b\u003e] sys_getdents+0x6b/0xc0\n       [\u003cc010355a\u003e] syscall_call+0x7/0xb\n       [\u003cffffffff\u003e] 0xffffffff\n\n-\u003e #2 (sysfs_mutex){--..}:\n       [\u003cc0153da2\u003e] check_noncircular+0x82/0x110\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc0156161\u003e] validate_chain+0xb11/0x1070\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\t\t\t(*) grab sysfs_mutex\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc04f8b55\u003e] mutex_lock_nested+0xa5/0x2f0\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc01e3d2c\u003e] sysfs_addrm_start+0x2c/0xc0\n       [\u003cc01e422f\u003e] create_dir+0x3f/0x90\n       [\u003cc01e42a9\u003e] sysfs_create_dir+0x29/0x50\n       [\u003cc04faaf5\u003e] _spin_unlock+0x25/0x40\n       [\u003cc028f21d\u003e] kobject_add_internal+0xcd/0x1a0\n       [\u003cc028f37a\u003e] kobject_set_name_vargs+0x3a/0x50\n       [\u003cc028f41d\u003e] kobject_init_and_add+0x2d/0x40\n       [\u003cc019d4d2\u003e] sysfs_slab_add+0xd2/0x180\n       [\u003cc019d580\u003e] sysfs_add_func+0x0/0x70\n       [\u003cc019d5dc\u003e] sysfs_add_func+0x5c/0x70\t\t\t(*) grab slub_lock\n       [\u003cc01400f2\u003e] run_workqueue+0x172/0x200\n       [\u003cc014008f\u003e] run_workqueue+0x10f/0x200\n       [\u003cc0140bd0\u003e] worker_thread+0x0/0xf0\n       [\u003cc0140c6c\u003e] worker_thread+0x9c/0xf0\n       [\u003cc0143c80\u003e] autoremove_wake_function+0x0/0x50\n       [\u003cc0140bd0\u003e] worker_thread+0x0/0xf0\n       [\u003cc0143972\u003e] kthread+0x42/0x70\n       [\u003cc0143930\u003e] kthread+0x0/0x70\n       [\u003cc01042db\u003e] kernel_thread_helper+0x7/0x1c\n       [\u003cffffffff\u003e] 0xffffffff\n\n-\u003e #1 (slub_lock){----}:\n       [\u003cc0153d2d\u003e] check_noncircular+0xd/0x110\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc0156161\u003e] validate_chain+0xb11/0x1070\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc015433d\u003e] mark_lock+0x35d/0xd00\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc04f93a3\u003e] down_read+0x43/0x80\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\t\t(*) grab slub_lock\n       [\u003cc04f650f\u003e] slab_cpuup_callback+0x11f/0x1d0\n       [\u003cc04fd9ac\u003e] notifier_call_chain+0x3c/0x70\n       [\u003cc04f5454\u003e] _cpu_up+0x84/0x110\n       [\u003cc04f552b\u003e] cpu_up+0x4b/0x70\t\t\t\t(*) grab cpu_hotplug.lock\n       [\u003cc06d1530\u003e] kernel_init+0x0/0x170\n       [\u003cc06d15e5\u003e] kernel_init+0xb5/0x170\n       [\u003cc06d1530\u003e] kernel_init+0x0/0x170\n       [\u003cc01042db\u003e] kernel_thread_helper+0x7/0x1c\n       [\u003cffffffff\u003e] 0xffffffff\n\n-\u003e #0 (\u0026cpu_hotplug.lock){--..}:\n       [\u003cc0155bff\u003e] validate_chain+0x5af/0x1070\n       [\u003cc040f7e0\u003e] dev_status+0x0/0x50\n       [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n       [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n       [\u003cc04f8b55\u003e] mutex_lock_nested+0xa5/0x2f0\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n       [\u003cc017bc30\u003e] lru_add_drain_per_cpu+0x0/0x10\n       [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\t\t\t(*) grab cpu_hotplug.lock\n       [\u003cc0140cf2\u003e] schedule_on_each_cpu+0x32/0xe0\n       [\u003cc0187095\u003e] __mlock_vma_pages_range+0x85/0x2c0\n       [\u003cc0156945\u003e] __lock_acquire+0x285/0xa10\n       [\u003cc0188f09\u003e] vma_merge+0xa9/0x1d0\n       [\u003cc0187450\u003e] mlock_fixup+0x180/0x200\n       [\u003cc0187548\u003e] do_mlockall+0x78/0x90\t\t\t(*) grab mmap_sem\n       [\u003cc01878e1\u003e] sys_mlockall+0x81/0xb0\n       [\u003cc010355a\u003e] syscall_call+0x7/0xb\n       [\u003cffffffff\u003e] 0xffffffff\n\nother info that might help us debug this:\n\n1 lock held by lvm/1103:\n #0:  (\u0026mm-\u003emmap_sem){----}, at: [\u003cc01878ae\u003e] sys_mlockall+0x4e/0xb0\n\nstack backtrace:\nPid: 1103, comm: lvm Not tainted 2.6.28-rc2-mm1 #2\nCall Trace:\n [\u003cc01555fc\u003e] print_circular_bug_tail+0x7c/0xd0\n [\u003cc0155bff\u003e] validate_chain+0x5af/0x1070\n [\u003cc040f7e0\u003e] dev_status+0x0/0x50\n [\u003cc0156923\u003e] __lock_acquire+0x263/0xa10\n [\u003cc015714c\u003e] lock_acquire+0x7c/0xb0\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc04f8b55\u003e] mutex_lock_nested+0xa5/0x2f0\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc017bc30\u003e] lru_add_drain_per_cpu+0x0/0x10\n [\u003cc0130789\u003e] get_online_cpus+0x29/0x50\n [\u003cc0140cf2\u003e] schedule_on_each_cpu+0x32/0xe0\n [\u003cc0187095\u003e] __mlock_vma_pages_range+0x85/0x2c0\n [\u003cc0156945\u003e] __lock_acquire+0x285/0xa10\n [\u003cc0188f09\u003e] vma_merge+0xa9/0x1d0\n [\u003cc0187450\u003e] mlock_fixup+0x180/0x200\n [\u003cc0187548\u003e] do_mlockall+0x78/0x90\n [\u003cc01878e1\u003e] sys_mlockall+0x81/0xb0\n [\u003cc010355a\u003e] syscall_call+0x7/0xb\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nTested-by: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@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": "e33c3b5e172e2e45456f42fba47227d48745543f",
      "tree": "0dc15f10c63b36b12de1dee6b3b70108286a5058",
      "parents": [
        "f0f7e0dc7393268947dc3ed285defc3d375487b9"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Nov 12 13:25:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:16 2008 -0800"
      },
      "message": "cpusets: update mems allowed in page allocator\n\nIf all allowable memory is unreclaimable, it is possible to loop forever\nin the page allocator for ~__GFP_NORETRY allocations.\n\nDuring this time, it is also possible for a task\u0027s cpuset to expand its\nset of allowable nodes so that it now includes free memory.  The cached\ncopy of this set, current-\u003emems_allowed, is stale, however, since there\nhas not been a subsequent call to cpuset_update_task_memory_state().\n\nThe cached copy of the set of allowable nodes is now updated in the page\nallocator\u0027s slow path so the additional memory is available to\nget_page_from_freelist().\n\n[akpm@linux-foundation.org: add comment]\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\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": "7526674de0c921e7f1e9b6f71a1f9d832557b554",
      "tree": "9b40d13ecd775197b74fcb396d6aba7ce5ea589e",
      "parents": [
        "b5f1f5557fd83fe92bdf2d2e80e431d655464d6c"
      ],
      "author": {
        "name": "Adam Litke",
        "email": "agl@us.ibm.com",
        "time": "Wed Nov 12 13:24:56 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 17:17:16 2008 -0800"
      },
      "message": "hugetlb: make unmap_ref_private multi-size-aware\n\nOops.  Part of the hugetlb private reservation code was not fully\nconverted to use hstates.\n\nWhen a huge page must be unmapped from VMAs due to a failed COW,\nHPAGE_SIZE is used in the call to unmap_hugepage_range() regardless of\nthe page size being used.  This works if the VMA is using the default\nhuge page size.  Otherwise we might unmap too much, too little, or\ntrigger a BUG_ON.  Rare but serious -- fix it.\n\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\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": "1c1271850494f06b63ae6b485e2e1b9c27ffb2d1",
      "tree": "d077bacff7d7ce6a103e3627ca7c662d233a34f7",
      "parents": [
        "08c1184fa2b785f23453b8cbb43f86b409cde3a6"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Wed Nov 12 01:24:41 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 12 10:37:48 2008 -0800"
      },
      "message": "parisc: fix find_extend_vma() breakage\n\nThe STACK_GROWSUP case of stack expansion was missing a test for \u0027prev\u0027,\nwhich got removed by commit cb8f488c33539f096580e202f5438a809195008f\n(\"mmap.c: deinline a few functions\") by mistake.\n\nI found my original email in \"sent\" folder. The patch in that mail\ndoes NOT remove !prev. That change had beed added by someone else.\n\nOk, I think we are not much interested in who did it, let\u0027s\nfix it for good.\n\n[ \"It looks like this was caused by me fixing rejects.  That was the\n  fancy include-lots-of-context-so-it-wont-apply patch.\" - akpm ]\n\nReported-and-bisected-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b46333406b9cb3397ab538485a4d57c316af0ff",
      "tree": "02c347d86d128b21b3138cb56c7c544bc4e1b930",
      "parents": [
        "4bab0ea1d42dd1927af9df6fbf0003fc00617c50"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Tue Oct 28 19:22:34 2008 +1100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 07 10:05:59 2008 +0100"
      },
      "message": "vmap: cope with vm_unmap_aliases before vmalloc_init()\n\nXen can end up calling vm_unmap_aliases() before vmalloc_init() has\nbeen called.  In this case its safe to make it a simple no-op.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Linux Memory Management List \u003clinux-mm@kvack.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9144f3821d2cba9f16cdf3ff1b881384f4b68b53",
      "tree": "f5835554ac585c56e76e6fd66b49d9ca81bcf19c",
      "parents": [
        "6572a281cfd805dd54718597d6c33261b5be052b",
        "6597cb84c86cefe4e174533b79e17b86f634b5e0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:56:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:56:29 2008 -0800"
      },
      "message": "Merge master.kernel.org:/home/rmk/linux-2.6-arm\n\n* master.kernel.org:/home/rmk/linux-2.6-arm:\n  [ARM] xsc3: fix xsc3_l2_inv_range\n  [ARM] mm: fix page table initialization\n  [ARM] fix naming of MODULE_START / MODULE_END\n  ARM: OMAP: Fix define for twl4030 irqs\n  ARM: OMAP: Fix get_irqnr_and_base to clear spurious interrupt bits\n  ARM: OMAP: Fix debugfs_create_*\u0027s error checking method for arm/plat-omap\n  ARM: OMAP: Fix compiler warnings in gpmc.c\n  [ARM] fix VFP+softfloat binaries\n"
    },
    {
      "commit": "a70dcb969f64e2fa98c24f47854f20bf02ff0092",
      "tree": "2224e321ba5d5455fd36ec2cf14f11ff97aa8931",
      "parents": [
        "c87591b719737b4e91eb1a9fa8fd55a4ff1886d6"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "gerald.schaefer@de.ibm.com",
        "time": "Thu Nov 06 12:53:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:41:19 2008 -0800"
      },
      "message": "memory hotplug: fix page_zone() calculation in test_pages_isolated()\n\nMy last bugfix here (adding zone-\u003elock) introduced a new problem: Using\npage_zone(pfn_to_page(pfn)) to get the zone after the for() loop is wrong.\n pfn will then be \u003e\u003d end_pfn, which may be in a different zone or not\npresent at all.  This may lead to an addressing exception in page_zone()\nor spin_lock_irqsave().\n\nNow I use __first_valid_page() again after the loop to find a valid page\nfor page_zone().\n\nSigned-off-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nAcked-by: Nathan Fontenot \u003cnfont@austin.ibm.com\u003e\nReviewed-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": "fbdd12676c83df77480f00ebd32fc98fbe3bf836",
      "tree": "cba7d12d8fdacec6139a567a1a3e2a07c5af683c",
      "parents": [
        "fd96feb2583688ad13d8467ded442f9c8d73cc4b"
      ],
      "author": {
        "name": "Qinghuang Feng",
        "email": "qhfeng.kernel@gmail.com",
        "time": "Thu Nov 06 12:53:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:41:19 2008 -0800"
      },
      "message": "mm/oom_kill.c: fix badness() kerneldoc\n\nParamter @mem has been removed since v2.6.26, now delete it\u0027s comment.\n\nSigned-off-by: Qinghuang Feng \u003cqhfeng.kernel@gmail.com\u003e\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b41ad14c30acf023d09ac064096a4cf41248ce46",
      "tree": "30609ac0611f9172cecf846a5b67a65f973adf78",
      "parents": [
        "0aedadf91a70a11c4a3e7c7d99b21e5528af8d5d"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Nov 06 12:53:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:41:19 2008 -0800"
      },
      "message": "vmemmap: warn about page_structs with remote distance\n\nIt\u0027s insufficient to simply compare node ids when warning about offnode\npage_structs since it\u0027s possible to still have local affinity.\n\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\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": "0aedadf91a70a11c4a3e7c7d99b21e5528af8d5d",
      "tree": "9e2529fa79ff4134f99772b5ed3693316e2221a5",
      "parents": [
        "17a1217e12d8c8434f8a3deef7bf980c724a6ac7"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "cl@linux-foundation.org",
        "time": "Thu Nov 06 12:53:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:41:18 2008 -0800"
      },
      "message": "mm: move migrate_prep out from under mmap_sem\n\nMove the migrate_prep outside the mmap_sem for the following system calls\n\n1. sys_move_pages\n2. sys_migrate_pages\n3. sys_mbind()\n\nIt really does not matter when we flush the lru.  The system is free to\nadd pages onto the lru even during migration which will make the page\nmigration either skip the page (mbind, migrate_pages) or return a busy\nstate (move_pages).\n\nFixes this lockdep warning (and potential deadlock):\n\nSome VM place has\n      mmap_sem -\u003e kevent_wq via lru_add_drain_all()\n\nnet/core/dev.c::dev_ioctl()  has\n     rtnl_lock  -\u003e  mmap_sem        (*) the ioctl has copy_from_user() and it can do page fault.\n\nlinkwatch_event has\n     kevent_wq -\u003e rtnl_lock\n\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4416d2bea007f07f2e74cdc4cb64042ec996c83",
      "tree": "a7b8250e3ab4f9de7c55a5b502238767aff90665",
      "parents": [
        "953a64798d82ee5467da2bdc0e467ef874fbc208"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Thu Nov 06 12:53:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:41:18 2008 -0800"
      },
      "message": "oom: do not dump task state for non thread group leaders\n\nWhen /proc/sys/vm/oom_dump_tasks is enabled, it\u0027s only necessary to dump\ntask state information for thread group leaders.  The kernel log gets\nquickly overwhelmed on machines with a massive number of threads by\ndumping non-thread group leaders.\n\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\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": "18229df5b613ed0732a766fc37850de2e7988e43",
      "tree": "ab235f27a5a9d93b8f94773252a1d8f660b9fad1",
      "parents": [
        "69d177c2fc702d402b17fdca2190d5a7e3ca55c5"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Nov 06 12:53:27 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:41:18 2008 -0800"
      },
      "message": "hugetlb: pull gigantic page initialisation out of the default path\n\nAs we can determine exactly when a gigantic page is in use we can optimise\nthe common regular page cases by pulling out gigantic page initialisation\ninto its own function.  As gigantic pages are never released to buddy we\ndo not need a destructor.  This effectivly reverts the previous change to\nthe main buddy allocator.  It also adds a paranoid check to ensure we\nnever release gigantic pages from hugetlbfs to the main buddy.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.27.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69d177c2fc702d402b17fdca2190d5a7e3ca55c5",
      "tree": "2040e0a84b7c07c29ac6fb6e51e125de52256f5d",
      "parents": [
        "22bece00dc1f28dd3374c55e464c9f02eb642876"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Thu Nov 06 12:53:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Nov 06 15:41:18 2008 -0800"
      },
      "message": "hugetlbfs: handle pages higher order than MAX_ORDER\n\nWhen working with hugepages, hugetlbfs assumes that those hugepages are\nsmaller than MAX_ORDER.  Specifically it assumes that the mem_map is\ncontigious and uses that to optimise access to the elements of the mem_map\nthat represent the hugepage.  Gigantic pages (such as 16GB pages on\npowerpc) by definition are of greater order than MAX_ORDER (larger than\nMAX_ORDER_NR_PAGES in size).  This means that we can no longer make use of\nthe buddy alloctor guarentees for the contiguity of the mem_map, which\nensures that the mem_map is at least contigious for maximmally aligned\nareas of MAX_ORDER_NR_PAGES pages.\n\nThis patch adds new mem_map accessors and iterator helpers which handle\nany discontiguity at MAX_ORDER_NR_PAGES boundaries.  It then uses these to\nimplement gigantic page versions of copy_huge_page and clear_huge_page,\nand to allow follow_hugetlb_page handle gigantic pages.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.27.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ab4f2ee130d5ffcf35616e1f5c6ab75af5b463b6",
      "tree": "7532eb50e674402f8f658094acb71b8dfb1117bf",
      "parents": [
        "d2ed5cb80a241518dd71f467c884bfabbe15f68c"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@dyn-67.arm.linux.org.uk",
        "time": "Thu Nov 06 17:11:07 2008 +0000"
      },
      "committer": {
        "name": "Russell King",
        "email": "rmk+kernel@arm.linux.org.uk",
        "time": "Thu Nov 06 17:13:47 2008 +0000"
      },
      "message": "[ARM] fix naming of MODULE_START / MODULE_END\n\nAs of 73bdf0a60e607f4b8ecc5aec597105976565a84f, the kernel needs\nto know where modules are located in the virtual address space.\nOn ARM, we located this region between MODULE_START and MODULE_END.\nUnfortunately, everyone else calls it MODULES_VADDR and MODULES_END.\nUpdate ARM to use the same naming, so is_vmalloc_or_module_addr()\ncan work properly.  Also update the comment on mm/vmalloc.c to\nreflect that ARM also places modules in a separate region from the\nvmalloc space.\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\n"
    },
    {
      "commit": "731572d39fcd3498702eda4600db4c43d51e0b26",
      "tree": "f892907ae20539845f353d72d2a2bf202b67e007",
      "parents": [
        "6c89161b10f5771ee0b51ada0fce0e8835e72ade"
      ],
      "author": {
        "name": "Alan Cox",
        "email": "alan@redhat.com",
        "time": "Wed Oct 29 14:01:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:47 2008 -0700"
      },
      "message": "nfsd: fix vm overcommit crash\n\nJunjiro R.  Okajima reported a problem where knfsd crashes if you are\nusing it to export shmemfs objects and run strict overcommit.  In this\nsituation the current-\u003emm based modifier to the overcommit goes through a\nNULL pointer.\n\nWe could simply check for NULL and skip the modifier but we\u0027ve caught\nother real bugs in the past from mm being NULL here - cases where we did\nneed a valid mm set up (eg the exec bug about a year ago).\n\nTo preserve the checks and get the logic we want shuffle the checking\naround and add a new helper to the vm_ security wrappers\n\nAlso fix a current-\u003emm reference in nommu that should use the passed mm\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix build]\nReported-by: Junjiro R. Okajima \u003chooanon05@yahoo.co.jp\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nSigned-off-by: Alan Cox \u003calan@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": "e99c97ade53fb6f5e665f2960eb86c624a532d7b",
      "tree": "45ffef1f849bae8cd469e7b228191c23bd7d4dcc",
      "parents": [
        "b77b0ef207624c9d9f8064ccbfd6da169780df44"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Oct 29 14:01:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:46 2008 -0700"
      },
      "message": "mm: fix kernel-doc function notation\n\nDelete excess kernel-doc notation in mm/ subdirectory.\nActually this is a kernel-doc notation fix.\n\nWarning(/var/linsrc/linux-2.6.27-git10//mm/vmalloc.c:902): Excess function parameter or struct member \u0027returns\u0027 description in \u0027vm_map_ram\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e02ed4b4a2fae34aae766a5bb93ae235f60adb8",
      "tree": "bddfb61b7cc4a4007ae176ccb1ace5740b61da8d",
      "parents": [
        "9b913735e53ab0da4a792bac0de8e178cc13dcfb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Oct 29 14:00:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 30 11:38:45 2008 -0700"
      },
      "message": "fs: remove prepare_write/commit_write\n\nNothing uses prepare_write or commit_write. Remove them from the tree\ncompletely.\n\n[akpm@linux-foundation.org: schedule simple_prepare_write() for unexporting]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "88ed86fee6651033de9b7038dac7869a9f19775a",
      "tree": "38b638d2e7cba110ec271275738f221feb7e0a37",
      "parents": [
        "3856d30ded1fe43c6657927ebad402d25cd128f4",
        "59c7572e82d69483a66eaa67b46548baeb69ecf4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 12:04:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 23 12:04:37 2008 -0700"
      },
      "message": "Merge branch \u0027proc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc\n\n* \u0027proc\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc: (35 commits)\n  proc: remove fs/proc/proc_misc.c\n  proc: move /proc/vmcore creation to fs/proc/vmcore.c\n  proc: move pagecount stuff to fs/proc/page.c\n  proc: move all /proc/kcore stuff to fs/proc/kcore.c\n  proc: move /proc/schedstat boilerplate to kernel/sched_stats.h\n  proc: move /proc/modules boilerplate to kernel/module.c\n  proc: move /proc/diskstats boilerplate to block/genhd.c\n  proc: move /proc/zoneinfo boilerplate to mm/vmstat.c\n  proc: move /proc/vmstat boilerplate to mm/vmstat.c\n  proc: move /proc/pagetypeinfo boilerplate to mm/vmstat.c\n  proc: move /proc/buddyinfo boilerplate to mm/vmstat.c\n  proc: move /proc/vmallocinfo to mm/vmalloc.c\n  proc: move /proc/slabinfo boilerplate to mm/slub.c, mm/slab.c\n  proc: move /proc/slab_allocators boilerplate to mm/slab.c\n  proc: move /proc/interrupts boilerplate code to fs/proc/interrupts.c\n  proc: move /proc/stat to fs/proc/stat.c\n  proc: move rest of /proc/partitions code to block/genhd.c\n  proc: move /proc/cpuinfo code to fs/proc/cpuinfo.c\n  proc: move /proc/devices code to fs/proc/devices.c\n  proc: move rest of /proc/locks to fs/locks.c\n  ...\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": "5c9fe6281b75832e8d2555ec8700ea763d9a865e",
      "tree": "a8ef6a23598322e1f93ba5e7ed8d24981f73ac8b",
      "parents": [
        "b6aa44ab698c7df9d951d3eb45c4fcb8ba68fb25"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 04:19:42 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 17:35:04 2008 +0400"
      },
      "message": "proc: move /proc/zoneinfo boilerplate to mm/vmstat.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b6aa44ab698c7df9d951d3eb45c4fcb8ba68fb25",
      "tree": "3ddf82053cc10e4811e77918fb00aad1c09c94c1",
      "parents": [
        "74e2e8e8ce7b3c0f878a349f9fa6cf2831548eef"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 04:17:48 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 17:12:51 2008 +0400"
      },
      "message": "proc: move /proc/vmstat boilerplate to mm/vmstat.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74e2e8e8ce7b3c0f878a349f9fa6cf2831548eef",
      "tree": "1de0e09b982c8c152f93b74842587e4c56df5484",
      "parents": [
        "8f32f7e5ac2ed11b0659b6b55af926f3d58ffd9d"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 04:15:36 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 16:33:29 2008 +0400"
      },
      "message": "proc: move /proc/pagetypeinfo boilerplate to mm/vmstat.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "8f32f7e5ac2ed11b0659b6b55af926f3d58ffd9d",
      "tree": "fa577deb5c664169ba3f7715006657fb7834ac32",
      "parents": [
        "5f6a6a9c4e4d790aae55cb412a7643329057c5e0"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 04:13:52 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 16:12:04 2008 +0400"
      },
      "message": "proc: move /proc/buddyinfo boilerplate to mm/vmstat.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "5f6a6a9c4e4d790aae55cb412a7643329057c5e0",
      "tree": "06b984b29e2e100874a4627ba6e22eb3e96a2640",
      "parents": [
        "7b3c3a50a3e0ea46815150d420fa276ac254572b"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 03:50:47 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 15:48:28 2008 +0400"
      },
      "message": "proc: move /proc/vmallocinfo to mm/vmalloc.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7b3c3a50a3e0ea46815150d420fa276ac254572b",
      "tree": "a49118d99ae5bac99b660d8a44c20df2b15a7037",
      "parents": [
        "a0ec95a8e69792e4ad642daac037c9b01ea3e2cd"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 02:42:17 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 15:20:06 2008 +0400"
      },
      "message": "proc: move /proc/slabinfo boilerplate to mm/slub.c, mm/slab.c\n\nLose dummy -\u003ewrite hook in case of SLUB, it\u0027s possible now.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "a0ec95a8e69792e4ad642daac037c9b01ea3e2cd",
      "tree": "ec8f483871151c152c198b605ab7ebd6046271b8",
      "parents": [
        "d6917e19f3fda8e1f88bc23ddceed952927bd716"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Oct 06 00:59:10 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 15:17:27 2008 +0400"
      },
      "message": "proc: move /proc/slab_allocators boilerplate to mm/slab.c\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "e1759c215bee5abbcb6cb066590ab20905154ed5",
      "tree": "14a43e259767082706dab112292ff92e13ce42a4",
      "parents": [
        "9617760287eec9091d26e6967bd3e4194de18f97"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 15 23:50:22 2008 +0400"
      },
      "committer": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Thu Oct 23 13:52:40 2008 +0400"
      },
      "message": "proc: switch /proc/meminfo to seq_file\n\nand move it to fs/proc/meminfo.c while I\u0027m at it.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "a50c22eed593f474e75f693381e4d42e81762de8",
      "tree": "1190f39419d8068a6b735c0d9761ef80f1a12543",
      "parents": [
        "e798ba57e9f423dddbf1bdeb20a62bdd0593890f"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Tue Oct 21 06:43:33 2008 +0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 16:17:42 2008 -0700"
      },
      "message": "mm: remove duplicated #include\u0027s\n\nRemoved duplicated #include \u003clinux/vmalloc.h\u003e in mm/vmalloc.c and\n\"internal.h\" in mm/memory.c.\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e798ba57e9f423dddbf1bdeb20a62bdd0593890f",
      "tree": "a6f427f3e4e86e8a45681792a16e227fd47f7029",
      "parents": [
        "653c03168348ac7aebb969931f87ba281749d7dd"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Oct 21 00:04:04 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 16:17:42 2008 -0700"
      },
      "message": "Export tiny shmem_file_setup for DRM-GEM\n\nWe\u0027re trying to keep the !CONFIG_SHMEM tiny-shmem.c (using ramfs without\nswap) in synch with CONFIG_SHMEM shmem.c (and mpm is preparing patches\nto combine them).  I was glad to see EXPORT_SYMBOL_GPL(shmem_file_setup)\ngo into shmem.c, but why not support DRM-GEM when !CONFIG_SHMEM too?\nBut caution says still depend on MMU, since !CONFIG_MMU is.. different.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Matt Mackall \u003cmpm@selenic.com\u003e\nAcked-by: Dave Airlie \u003cairlied@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b9d7ccf56be1ac77b71a284a1c0e6337f9a7aff0",
      "tree": "6440e1c679e097d0ea23bf879cd30983c5838419",
      "parents": [
        "9301975ec251bab1ad7cfcb84a688b26187e4e4a",
        "3038edabf48f01421c621cb77a712b446d3a5d67"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:27:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 13:27:05 2008 -0700"
      },
      "message": "Merge branch \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86 ACPI: fix breakage of resume on 64-bit UP systems with SMP kernel\n  Introduce is_vmalloc_or_module_addr() and use with DEBUG_VIRTUAL\n"
    },
    {
      "commit": "fdd2e5f88a259a537bb239e0c03c973cb6ea402a",
      "tree": "e97192ba1a7b7f341c8d3debc3fe7639b2eaa284",
      "parents": [
        "1a651a00e20fd4997f0b91258f6f95b7d96edcd9"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Oct 18 20:28:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:40 2008 -0700"
      },
      "message": "make mm/rmap.c:anon_vma_cachep static\n\nThis patch makes the needlessly global anon_vma_cachep static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-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": "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": "c05555b572921c464d064d9267f7f7bc06d424fa",
      "tree": "48d4dbc315eeb4c851c6c484ef75bc816360d510",
      "parents": [
        "addb9efebb2ee2202d324e75b593b39868528f68"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sat Oct 18 20:28:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:39 2008 -0700"
      },
      "message": "memcg: atomic ops for page_cgroup-\u003eflags\n\nThis patch makes page_cgroup-\u003eflags to be atomic_ops and define functions\n(and macros) to access it.\n\nBefore trying to modify memory resource controller, this atomic operation\non flags is necessary.  Most of flags in this patch is for LRU and modfied\nunder mz-\u003elru_lock but we\u0027ll add another flags which is not for LRU soon.\nFor example, we\u0027ll place LOCK bit on flags field.  We need atomic\noperation to modify LRU bit without LOCK.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-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": "addb9efebb2ee2202d324e75b593b39868528f68",
      "tree": "0d0a6b3c4ce3e3b668adab9f463957e506e9b733",
      "parents": [
        "5b4e655e948d8b6e9b0d001616d4c9d7e7ffe924"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sat Oct 18 20:28:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:39 2008 -0700"
      },
      "message": "memcg: optimize per-cpu statistics\n\nSome obvious optimization to memcg.\n\nI found mem_cgroup_charge_statistics() is a little big (in object) and\ndoes unnecessary address calclation.  This patch is for optimization to\nreduce the size of this function.\n\nAnd res_counter_charge() is \u0027likely\u0027 to succeed.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-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": "5b4e655e948d8b6e9b0d001616d4c9d7e7ffe924",
      "tree": "2822f944d1bdbc8414a65cd94b982c51b5032b50",
      "parents": [
        "b7abea9630bc8ffc663a751e46680db25c4cdf8d"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sat Oct 18 20:28:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:38 2008 -0700"
      },
      "message": "memcg: avoid accounting special pages\n\nThere are not-on-LRU pages which can be mapped and they are not worth to\nbe accounted.  (becasue we can\u0027t shrink them and need dirty codes to\nhandle specical case) We\u0027d like to make use of usual objrmap/radix-tree\u0027s\nprotcol and don\u0027t want to account out-of-vm\u0027s control pages.\n\nWhen special_mapping_fault() is called, page-\u003emapping is tend to be NULL\nand it\u0027s charged as Anonymous page.  insert_page() also handles some\nspecial pages from drivers.\n\nThis patch is for avoiding to account special pages.\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@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": "b7abea9630bc8ffc663a751e46680db25c4cdf8d",
      "tree": "b37d5ba073ccea31328812c74598872d49a85735",
      "parents": [
        "073e587ec2cc377867e53d8b8959738a8e16cff6"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sat Oct 18 20:28:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:38 2008 -0700"
      },
      "message": "memcg: make page-\u003emapping NULL before uncharge\n\nThis patch tries to make page-\u003emapping to be NULL before\nmem_cgroup_uncharge_cache_page() is called.\n\n\"page-\u003emapping \u003d\u003d NULL\" is a good check for \"whether the page is still\nradix-tree or not\".  This patch also adds BUG_ON() to\nmem_cgroup_uncharge_cache_page();\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@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": "073e587ec2cc377867e53d8b8959738a8e16cff6",
      "tree": "856aac72b818de4f52ce38448b852930554b3efa",
      "parents": [
        "47c59803becb55b72b26cdab3838d621a15badc8"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Sat Oct 18 20:28:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:38 2008 -0700"
      },
      "message": "memcg: move charge swapin under lock\n\nWhile page-cache\u0027s charge/uncharge is done under page_lock(), swap-cache\nisn\u0027t.  (anonymous page is charged when it\u0027s newly allocated.)\n\nThis patch moves do_swap_page()\u0027s charge() call under lock.  I don\u0027t see\nany bad problem *now* but this fix will be good for future for avoiding\nunnecessary racy state.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "5e9a0f023bee02bfb94e08590d998660c01f5a49",
      "tree": "3cd2131f12a09cc9c84c31f99375256148e400fd",
      "parents": [
        "2f007e74bb85b9fc4eab28524052161703300f1a"
      ],
      "author": {
        "name": "Brice Goglin",
        "email": "Brice.Goglin@inria.fr",
        "time": "Sat Oct 18 20:27:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:33 2008 -0700"
      },
      "message": "mm: extract do_pages_move() out of sys_move_pages()\n\nTo prepare the chunking, move the sys_move_pages() code that is used when\nnodes!\u003dNULL into do_pages_move().  And rename do_move_pages() into\ndo_move_page_to_node_array().\n\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@inria.fr\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\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": "2f007e74bb85b9fc4eab28524052161703300f1a",
      "tree": "8fa77e687aa5fd807767484bdafcce86e46a56af",
      "parents": [
        "e78bbfa8262424417a29349a8064a535053912b9"
      ],
      "author": {
        "name": "Brice Goglin",
        "email": "Brice.Goglin@inria.fr",
        "time": "Sat Oct 18 20:27:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:33 2008 -0700"
      },
      "message": "mm: don\u0027t vmalloc a huge page_to_node array for do_pages_stat()\n\ndo_pages_stat() does not need any page_to_node entry for real.  Just pass\nthe pointers to the user-space page address array and to the user-space\nstatus array, and have do_pages_stat() traverse the former and fill the\nlatter directly.\n\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@inria.fr\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\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": "e78bbfa8262424417a29349a8064a535053912b9",
      "tree": "dc1f1cdd4390b3f817a2d3a2835c11eb3b41b3ea",
      "parents": [
        "de7f0cba96786cf9ec9da4532c1b25f733da9b6f"
      ],
      "author": {
        "name": "Brice Goglin",
        "email": "Brice.Goglin@inria.fr",
        "time": "Sat Oct 18 20:27:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:33 2008 -0700"
      },
      "message": "mm: stop returning -ENOENT from sys_move_pages() if nothing got migrated\n\nA patchset reworking sys_move_pages().  It removes the possibly large\nvmalloc by using multiple chunks when migrating large buffers.  It also\ndramatically increases the throughput for large buffers since the lookup\nin new_page_node() is now limited to a single chunk, causing the quadratic\ncomplexity to have a much slower impact.  There is no need to use any\nradix-tree-like structure to improve this lookup.\n\nsys_move_pages() duration on a 4-quadcore-opteron 2347HE (1.9Gz),\nmigrating between nodes #2 and #3:\n\n\tlength\t\tmove_pages (us)\t\tmove_pages+patch (us)\n\t4kB\t\t126\t\t\t98\n\t40kB\t\t198\t\t\t168\n\t400kB\t\t963\t\t\t937\n\t4MB\t\t12503\t\t\t11930\n\t40MB\t\t246867\t\t\t11848\n\nPatches #1 and #4 are the important ones:\n1) stop returning -ENOENT from sys_move_pages() if nothing got migrated\n2) don\u0027t vmalloc a huge page_to_node array for do_pages_stat()\n3) extract do_pages_move() out of sys_move_pages()\n4) rework do_pages_move() to work on page_sized chunks\n5) move_pages: no need to set pp-\u003epage to ZERO_PAGE(0) by default\n\nThis patch:\n\nThere is no point in returning -ENOENT from sys_move_pages() if all pages\nwere already on the right node, while we return 0 if only 1 page was not.\nMost application don\u0027t know where their pages are allocated, so it\u0027s not\nan error to try to migrate them anyway.\n\nJust return 0 and let the status array in user-space be checked if the\napplication needs details.\n\nIt will make the upcoming chunked-move_pages() support much easier.\n\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@inria.fr\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\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": "de7f0cba96786cf9ec9da4532c1b25f733da9b6f",
      "tree": "fc0273587d255ac3f1b554b4a98229c3e231ebf6",
      "parents": [
        "7a6560e02556b6f0a798c247f3a557c523d9701b"
      ],
      "author": {
        "name": "Nathan Fontenot",
        "email": "nfont@austin.ibm.com",
        "time": "Sat Oct 18 20:27:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "memory hotplug: release memory regions in PAGES_PER_SECTION chunks\n\nDuring hotplug memory remove, memory regions should be released on a\nPAGES_PER_SECTION size chunks.  This mirrors the code in add_memory where\nresources are requested on a PAGES_PER_SECTION size.\n\nAttempting to release the entire memory region fails because there is not\na single resource for the total number of pages being removed.  Instead\nthe resources for the pages are split in PAGES_PER_SECTION size chunks as\nrequested during memory add.\n\nSigned-off-by: Nathan Fontenot \u003cnfont@austin.ibm.com\u003e\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Yasunori Goto \u003cy-goto@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": "1125b4e3949949b44a7c80b619507c6f61d62911",
      "tree": "74d1461ce1bb7eec62ce5f020061c4d7c1a4feba",
      "parents": [
        "4b2e38ad703541f7845c2d766426148b8d1aa329"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "gerald.schaefer@de.ibm.com",
        "time": "Sat Oct 18 20:27:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "setup_per_zone_pages_min(): take zone-\u003elock instead of zone-\u003elru_lock\n\nThis replaces zone-\u003elru_lock in setup_per_zone_pages_min() with zone-\u003elock.\nThere seems to be no need for the lru_lock anymore, but there is a need for\nzone-\u003elock instead, because that function may call move_freepages() via\nsetup_zone_migrate_reserve().\n\nSigned-off-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: Yasunori Goto \u003cy-goto@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": "4b2e38ad703541f7845c2d766426148b8d1aa329",
      "tree": "aaafbec5325d15c38c382c655120fb6492c11f82",
      "parents": [
        "e575f111dc0f27044e170580e7de50985ab3e011"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Sat Oct 18 20:27:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "hugepage: support ZERO_PAGE()\n\nPresently hugepage doesn\u0027t use zero page at all because zero page is only\nused for coredumping and hugepage can\u0027t core dump.\n\nHowever we have now implemented hugepage coredumping.  Therefore we should\nimplement the zero page of hugepage.\n\nImplementation note:\n\no Why do we only check VM_SHARED for zero page?\n  normal page checked as ..\n\n\tstatic inline int use_zero_page(struct vm_area_struct *vma)\n\t{\n\t        if (vma-\u003evm_flags \u0026 (VM_LOCKED | VM_SHARED))\n\t                return 0;\n\n\t        return !vma-\u003evm_ops || !vma-\u003evm_ops-\u003efault;\n\t}\n\nFirst, hugepages are never mlock()ed.  We aren\u0027t concerned with VM_LOCKED.\n\nSecond, hugetlbfs is a pseudo filesystem, not a real filesystem and it\ndoesn\u0027t have any file backing.  Thus ops-\u003efault checking is meaningless.\n\no Why don\u0027t we use zero page if !pte.\n\n!pte indicate {pud, pmd} doesn\u0027t exist or some error happened.  So we\nshouldn\u0027t return zero page if any error occurred.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Kawai Hidehiro \u003chidehiro.kawai.ez@hitachi.com\u003e\nCc: Mel Gorman \u003cmel@skynet.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d903ef9f38813e7eb268744a7e579e92f411c83a",
      "tree": "7d9337e6c27fcbc78569757d6dd6399a318174ca",
      "parents": [
        "2a4b3ded5c76fbe373d6415b1b3ad4841f15c9bd"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Sat Oct 18 20:27:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: print out meminit for memmap\n\nImprove debuggability of memory setup problems.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a4b3ded5c76fbe373d6415b1b3ad4841f15c9bd",
      "tree": "32569113d280e8b69c81359246a51173b187ed74",
      "parents": [
        "db64fe02258f1507e13fe5212a989922323685ce"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Sat Oct 18 20:27:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: hugetlb.c make functions static, use NULL rather than 0\n\nmm/hugetlb.c:265:17: warning: symbol \u0027resv_map_alloc\u0027 was not declared. Should it be static?\nmm/hugetlb.c:277:6: warning: symbol \u0027resv_map_release\u0027 was not declared. Should it be static?\nmm/hugetlb.c:292:9: warning: Using plain integer as NULL pointer\nmm/hugetlb.c:1750:5: warning: symbol \u0027unmap_ref_private\u0027 was not declared. Should it be static?\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nAcked-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "db64fe02258f1507e13fe5212a989922323685ce",
      "tree": "ed24c8d4e3b0bcadfce3a8c3916a6b35d6c891cb",
      "parents": [
        "cb8f488c33539f096580e202f5438a809195008f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:27:03 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: rewrite vmap layer\n\nRewrite the vmap allocator to use rbtrees and lazy tlb flushing, and\nprovide a fast, scalable percpu frontend for small vmaps (requires a\nslightly different API, though).\n\nThe biggest problem with vmap is actually vunmap.  Presently this requires\na global kernel TLB flush, which on most architectures is a broadcast IPI\nto all CPUs to flush the cache.  This is all done under a global lock.  As\nthe number of CPUs increases, so will the number of vunmaps a scaled\nworkload will want to perform, and so will the cost of a global TLB flush.\n This gives terrible quadratic scalability characteristics.\n\nAnother problem is that the entire vmap subsystem works under a single\nlock.  It is a rwlock, but it is actually taken for write in all the fast\npaths, and the read locking would likely never be run concurrently anyway,\nso it\u0027s just pointless.\n\nThis is a rewrite of vmap subsystem to solve those problems.  The existing\nvmalloc API is implemented on top of the rewritten subsystem.\n\nThe TLB flushing problem is solved by using lazy TLB unmapping.  vmap\naddresses do not have to be flushed immediately when they are vunmapped,\nbecause the kernel will not reuse them again (would be a use-after-free)\nuntil they are reallocated.  So the addresses aren\u0027t allocated again until\na subsequent TLB flush.  A single TLB flush then can flush multiple\nvunmaps from each CPU.\n\nXEN and PAT and such do not like deferred TLB flushing because they can\u0027t\nalways handle multiple aliasing virtual addresses to a physical address.\nThey now call vm_unmap_aliases() in order to flush any deferred mappings.\nThat call is very expensive (well, actually not a lot more expensive than\na single vunmap under the old scheme), however it should be OK if not\ncalled too often.\n\nThe virtual memory extent information is stored in an rbtree rather than a\nlinked list to improve the algorithmic scalability.\n\nThere is a per-CPU allocator for small vmaps, which amortizes or avoids\nglobal locking.\n\nTo use the per-CPU interface, the vm_map_ram / vm_unmap_ram interfaces\nmust be used in place of vmap and vunmap.  Vmalloc does not use these\ninterfaces at the moment, so it will not be quite so scalable (although it\nwill use lazy TLB flushing).\n\nAs a quick test of performance, I ran a test that loops in the kernel,\nlinearly mapping then touching then unmapping 4 pages.  Different numbers\nof tests were run in parallel on an 4 core, 2 socket opteron.  Results are\nin nanoseconds per map+touch+unmap.\n\nthreads           vanilla         vmap rewrite\n1                 14700           2900\n2                 33600           3000\n4                 49500           2800\n8                 70631           2900\n\nSo with a 8 cores, the rewritten version is already 25x faster.\n\nIn a slightly more realistic test (although with an older and less\nscalable version of the patch), I ripped the not-very-good vunmap batching\ncode out of XFS, and implemented the large buffer mapping with vm_map_ram\nand vm_unmap_ram...  along with a couple of other tricks, I was able to\nspeed up a large directory workload by 20x on a 64 CPU system.  I believe\nvmap/vunmap is actually sped up a lot more than 20x on such a system, but\nI\u0027m running into other locks now.  vmap is pretty well blown off the\nprofiles.\n\nBefore:\n1352059 total                                      0.1401\n798784 _write_lock                              8320.6667 \u003c- vmlist_lock\n529313 default_idle                             1181.5022\n 15242 smp_call_function                         15.8771  \u003c- vmap tlb flushing\n  2472 __get_vm_area_node                         1.9312  \u003c- vmap\n  1762 remove_vm_area                             4.5885  \u003c- vunmap\n   316 map_vm_area                                0.2297  \u003c- vmap\n   312 kfree                                      0.1950\n   300 _spin_lock                                 3.1250\n   252 sn_send_IPI_phys                           0.4375  \u003c- tlb flushing\n   238 vmap                                       0.8264  \u003c- vmap\n   216 find_lock_page                             0.5192\n   196 find_next_bit                              0.3603\n   136 sn2_send_IPI                               0.2024\n   130 pio_phys_write_mmr                         2.0312\n   118 unmap_kernel_range                         0.1229\n\nAfter:\n 78406 total                                      0.0081\n 40053 default_idle                              89.4040\n 33576 ia64_spinlock_contention                 349.7500\n  1650 _spin_lock                                17.1875\n   319 __reg_op                                   0.5538\n   281 _atomic_dec_and_lock                       1.0977\n   153 mutex_unlock                               1.5938\n   123 iget_locked                                0.1671\n   117 xfs_dir_lookup                             0.1662\n   117 dput                                       0.1406\n   114 xfs_iget_core                              0.0268\n    92 xfs_da_hashname                            0.1917\n    75 d_alloc                                    0.0670\n    68 vmap_page_range                            0.0462 \u003c- vmap\n    58 kmem_cache_alloc                           0.0604\n    57 memset                                     0.0540\n    52 rb_next                                    0.1625\n    50 __copy_user                                0.0208\n    49 bitmap_find_free_region                    0.2188 \u003c- vmap\n    46 ia64_sn_udelay                             0.1106\n    45 find_inode_fast                            0.1406\n    42 memcmp                                     0.2188\n    42 finish_task_switch                         0.1094\n    42 __d_lookup                                 0.0410\n    40 radix_tree_lookup_slot                     0.1250\n    37 _spin_unlock_irqrestore                    0.3854\n    36 xfs_bmapi                                  0.0050\n    36 kmem_cache_free                            0.0256\n    35 xfs_vn_getattr                             0.0322\n    34 radix_tree_lookup                          0.1062\n    33 __link_path_walk                           0.0035\n    31 xfs_da_do_buf                              0.0091\n    30 _xfs_buf_find                              0.0204\n    28 find_get_page                              0.0875\n    27 xfs_iread                                  0.0241\n    27 __strncpy_from_user                        0.2812\n    26 _xfs_buf_initialize                        0.0406\n    24 _xfs_buf_lookup_pages                      0.0179\n    24 vunmap_page_range                          0.0250 \u003c- vunmap\n    23 find_lock_page                             0.0799\n    22 vm_map_ram                                 0.0087 \u003c- vmap\n    20 kfree                                      0.0125\n    19 put_page                                   0.0330\n    18 __kmalloc                                  0.0176\n    17 xfs_da_node_lookup_int                     0.0086\n    17 _read_lock                                 0.0885\n    17 page_waitqueue                             0.0664\n\nvmap has gone from being the top 5 on the profiles and flushing the crap\nout of all TLBs, to using less than 1% of kernel time.\n\n[akpm@linux-foundation.org: cleanups, section fix]\n[akpm@linux-foundation.org: fix build on alpha]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nCc: Krzysztof Helt \u003ckrzysztof.h1@poczta.fm\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb8f488c33539f096580e202f5438a809195008f",
      "tree": "888b60a8638774d50ba897526e24b25ccc28c30f",
      "parents": [
        "51b07fc3c5c830bb49c80fc5eac041e1f66a72e7"
      ],
      "author": {
        "name": "Denys Vlasenko",
        "email": "vda.linux@googlemail.com",
        "time": "Sat Oct 18 20:27:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mmap.c: deinline a few functions\n\n__vma_link_file and expand_downwards functions are not small, yeat they\nare marked inline.  They probably had one callsite sometime in the past,\nbut now they have more.  In order to prevent similar thing, I also\ndeinlined expand_upwards, despite it having only pne callsite.  Nowadays\ngcc auto-inlines such static functions anyway.  In find_extend_vma, I\nremoved one extra level of indirection.\n\nPatch is deliberately generated with -U $BIGNUM to make\nit easier to see that functions are big.\n\nResult:\n\n# size */*/mmap.o */vmlinux\n   text    data     bss     dec     hex filename\n   9514     188      16    9718    25f6 0.org/mm/mmap.o\n   9237     188      16    9441    24e1 deinline/mm/mmap.o\n6124402  858996  389480 7372878  70804e 0.org/vmlinux\n6124113  858996  389480 7372589  707f2d deinline/vmlinux\n\nSigned-off-by: Denys Vlasenko \u003cvda.linux@googlemail.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": "8413ac9d8c9a1366a4f57880723126cd24e5a5c3",
      "tree": "fcee6ff670dcfccf895a48e92d27f52902d34301",
      "parents": [
        "a978d6f521063514812a7094dbe5036e056e4de3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: page lock use lock bitops\n\ntrylock_page, unlock_page open and close a critical section. Hence,\nwe can use the lock bitops to get the desired memory ordering.\n\nAlso, mark trylock as likely to succeed (and remove the annotation from\ncallers).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a978d6f521063514812a7094dbe5036e056e4de3",
      "tree": "aaaed7caff558d8f9676f8cfd16b50ae6ca99573",
      "parents": [
        "f45840b5c128445da70e7ec33adc47b4a12bdaf4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: unlockless reclaim\n\nunlock_page is fairly expensive.  It can be avoided in page reclaim\nsuccess path.  By definition if we have any other references to the page\nit would be a bug anyway.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-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": "f45840b5c128445da70e7ec33adc47b4a12bdaf4",
      "tree": "3815a03d12d1c69d71a48c44cd216c3e1e84272a",
      "parents": [
        "9978ad583e100945b74e4f33e73317983ea32df9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:57 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mm: pagecache insertion fewer atomics\n\nSetting and clearing the page locked when inserting it into swapcache /\npagecache when it has no other references can use non-atomic page flags\noperations because no other CPU may be operating on it at this time.\n\nThis saves one atomic operation when inserting a page into pagecache.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9978ad583e100945b74e4f33e73317983ea32df9",
      "tree": "132d3a06664e04cac4635ddba55a0ec36ff2a001",
      "parents": [
        "c11d69d8c830e09a0e7b3935c952afb26c48bba8"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mlock: make mlock error return Posixly Correct\n\nRework Posix error return for mlock().\n\nPosix requires error code for mlock*() system calls for some conditions\nthat differ from what kernel low level functions, such as\nget_user_pages(), return for those conditions.  For more info, see:\n\nhttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d121750892930775\u0026w\u003d2\n\nThis patch provides the same translation of get_user_pages()\nerror codes to posix specified error codes in the context\nof the mlock rework for unevictable lru.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c11d69d8c830e09a0e7b3935c952afb26c48bba8",
      "tree": "c419910614bf29a77b3491014e13a7089093993a",
      "parents": [
        "e0f79b8f1f3394bb344b7b83d6f121ac2af327de"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mlock: revert mainline handling of mlock error return\n\nThis change is intended to make mlock() error returns correct.\nmake_page_present() is a lower level function used by more than mlock().\nSubsequent patch[es] will add this error return fixup in an mlock specific\npath.\n\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0f79b8f1f3394bb344b7b83d6f121ac2af327de",
      "tree": "71fbe51998f2e22889bb59d361acf36898d71732",
      "parents": [
        "902d2e8ae0de29f483840ba1134af27343b9564d"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Sat Oct 18 20:26:55 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "vmscan: don\u0027t accumulate scan pressure on unrelated lists\n\nDuring each reclaim scan we accumulate scan pressure on unrelated lists\nwhich will result in bogus scans and unwanted reclaims eventually.\n\nScanning lists with few reclaim candidates results in a lot of rotation\nand therefor also disturbs the list balancing, putting even more\npressure on the wrong lists.\n\nIn a test-case with much streaming IO, and therefor a crowded inactive\nfile page list, swapping started because\n\n  a) anon pages were reclaimed after swap_cluster_max reclaim\n  invocations -- nr_scan of this list has just accumulated\n\n  b) active file pages were scanned because *their* nr_scan has also\n  accumulated through the same logic.  And this in return created a\n  lot of rotation for file pages and resulted in a decrease of file\n  list priority, again increasing the pressure on anon pages.\n\nThe result was an evicted working set of anon pages while there were\ntons of inactive file pages that should have been taken instead.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\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": "985737cf2ea096ea946aed82c7484d40defc71a8",
      "tree": "b96dc3b8c28f743857a7a1fff25472d6e0f60120",
      "parents": [
        "af936a1606246a10c145feac3770f6287f483f02"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mlock: count attempts to free mlocked page\n\nAllow free of mlock()ed pages.  This shouldn\u0027t happen, but during\ndevelopement, it occasionally did.\n\nThis patch allows us to survive that condition, while keeping the\nstatistics and events correct for debug.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-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": "af936a1606246a10c145feac3770f6287f483f02",
      "tree": "8b1ca7fabb5c749ffdecd654519889c6c2ed2fb6",
      "parents": [
        "64d6519dda3905dfb94d3f93c07c5f263f41813f"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "vmscan: unevictable LRU scan sysctl\n\nThis patch adds a function to scan individual or all zones\u0027 unevictable\nlists and move any pages that have become evictable onto the respective\nzone\u0027s inactive list, where shrink_inactive_list() will deal with them.\n\nAdds sysctl to scan all nodes, and per node attributes to individual\nnodes\u0027 zones.\n\nKosaki: If evictable page found in unevictable lru when write\n/proc/sys/vm/scan_unevictable_pages, print filename and file offset of\nthese pages.\n\n[akpm@linux-foundation.org: fix one CONFIG_MMU\u003dn build error]\n[kosaki.motohiro@jp.fujitsu.com: adapt vmscan-unevictable-lru-scan-sysctl.patch to new sysfs API]\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\nSigned-off-by: 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": "64d6519dda3905dfb94d3f93c07c5f263f41813f",
      "tree": "62cae88edcb858c42a5b4b568eb77801299250bb",
      "parents": [
        "5344b7e648980cc2ca613ec03a56a8222ff48820"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "swap: cull unevictable pages in fault path\n\nIn the fault paths that install new anonymous pages, check whether the\npage is evictable or not using lru_cache_add_active_or_unevictable().  If\nthe page is evictable, just add it to the active lru list [via the pagevec\ncache], else add it to the unevictable list.\n\nThis \"proactive\" culling in the fault path mimics the handling of mlocked\npages in Nick Piggin\u0027s series to keep mlocked pages off the lru lists.\n\nNotes:\n\n1) This patch is optional--e.g., if one is concerned about the\n   additional test in the fault path.  We can defer the moving of\n   nonreclaimable pages until when vmscan [shrink_*_list()]\n   encounters them.  Vmscan will only need to handle such pages\n   once, but if there are a lot of them it could impact system\n   performance.\n\n2) The \u0027vma\u0027 argument to page_evictable() is require to notice that\n   we\u0027re faulting a page into an mlock()ed vma w/o having to scan the\n   page\u0027s rmap in the fault path.   Culling mlock()ed anon pages is\n   currently the only reason for this patch.\n\n3) We can\u0027t cull swap pages in read_swap_cache_async() because the\n   vma argument doesn\u0027t necessarily correspond to the swap cache\n   offset passed in by swapin_readahead().  This could [did!] result\n   in mlocking pages in non-VM_LOCKED vmas if [when] we tried to\n   cull in this path.\n\n4) Move set_pte_at() to after where we add page to lru to keep it\n   hidden from other tasks that might walk the page table.\n   We already do it in this order in do_anonymous() page.  And,\n   these are COW\u0027d anon pages.  Is this safe?\n\n[riel@redhat.com: undo an overzealous code cleanup]\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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5344b7e648980cc2ca613ec03a56a8222ff48820",
      "tree": "f9f8773ae8e38fb91aec52ca9ad2bd81f039b565",
      "parents": [
        "ba470de43188cdbff795b5da43a1474523c6c2fb"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:51 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "vmstat: mlocked pages statistics\n\nAdd NR_MLOCK zone page state, which provides a (conservative) count of\nmlocked pages (actually, the number of mlocked pages moved off the LRU).\n\nReworked by lts to fit in with the modified mlock page support in the\nReclaim Scalability series.\n\n[kosaki.motohiro@jp.fujitsu.com: fix incorrect Mlocked field of /proc/meminfo]\n[lee.schermerhorn@hp.com: mlocked-pages: add event counting with statistics]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba470de43188cdbff795b5da43a1474523c6c2fb",
      "tree": "0477460fa8c3e61edd9f1534cd2193656e586f8b",
      "parents": [
        "8edb08caf68184fb170f4f69c7445929e199eaea"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mmap: handle mlocked pages during map, remap, unmap\n\nOriginally by Nick Piggin \u003cnpiggin@suse.de\u003e\n\nRemove mlocked pages from the LRU using \"unevictable infrastructure\"\nduring mmap(), munmap(), mremap() and truncate().  Try to move back to\nnormal LRU lists on munmap() when last mlocked mapping removed.  Remove\nPageMlocked() status when page truncated from file.\n\n[akpm@linux-foundation.org: cleanup]\n[kamezawa.hiroyu@jp.fujitsu.com: fix double unlock_page()]\n[kosaki.motohiro@jp.fujitsu.com: split LRU: munlock rework]\n[lee.schermerhorn@hp.com: mlock: fix __mlock_vma_pages_range comment block]\n[akpm@linux-foundation.org: remove bogus kerneldoc token]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\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\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamewzawa.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": "8edb08caf68184fb170f4f69c7445929e199eaea",
      "tree": "c0d8f24971c90e5627207f0f0cb7c06f9bdb5dc4",
      "parents": [
        "fa07e787733416c42938a310a8e717295934e33c"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:31 2008 -0700"
      },
      "message": "mlock: downgrade mmap sem while populating mlocked regions\n\nWe need to hold the mmap_sem for write to initiatate mlock()/munlock()\nbecause we may need to merge/split vmas.  However, this can lead to very\nlong lock hold times attempting to fault in a large memory region to mlock\nit into memory.  This can hold off other faults against the mm\n[multithreaded tasks] and other scans of the mm, such as via /proc.  To\nalleviate this, downgrade the mmap_sem to read mode during the population\nof the region for locking.  This is especially the case if we need to\nreclaim memory to lock down the region.  We [probably?] don\u0027t need to do\nthis for unlocking as all of the pages should be resident--they\u0027re already\nmlocked.\n\nNow, the caller\u0027s of the mlock functions [mlock_fixup() and\nmlock_vma_pages_range()] expect the mmap_sem to be returned in write mode.\n Changing all callers appears to be way too much effort at this point.\nSo, restore write mode before returning.  Note that this opens a window\nwhere the mmap list could change in a multithreaded process.  So, at least\nfor mlock_fixup(), where we could be called in a loop over multiple vmas,\nwe check that a vma still exists at the start address and that vma still\ncovers the page range [start,end).  If not, we return an error, -EAGAIN,\nand let the caller deal with it.\n\nReturn -EAGAIN from mlock_vma_pages_range() function and mlock_fixup() if\nthe vma at \u0027start\u0027 disappears or changes so that the page range\n[start,end) is no longer contained in the vma.  Again, let the caller deal\nwith it.  Looks like only sys_remap_file_pages() [via mmap_region()]\nshould actually care.\n\nWith this patch, I no longer see processes like ps(1) blocked for seconds\nor minutes at a time waiting for a large [multiple gigabyte] region to be\nlocked down.  However, I occassionally see delays while unlocking or\nunmapping a large mlocked region.  Should we also downgrade the mmap_sem\nfor the unlock path?\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-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": "b291f000393f5a0b679012b39d79fbc85c018233",
      "tree": "28eb785d4d157d3396e4377294e6054635a4bd90",
      "parents": [
        "89e004ea55abe201b29e2d6e35124101f1288ef7"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:30 2008 -0700"
      },
      "message": "mlock: mlocked pages are unevictable\n\nMake sure that mlocked pages also live on the unevictable LRU, so kswapd\nwill not scan them over and over again.\n\nThis is achieved through various strategies:\n\n1) add yet another page flag--PG_mlocked--to indicate that\n   the page is locked for efficient testing in vmscan and,\n   optionally, fault path.  This allows early culling of\n   unevictable pages, preventing them from getting to\n   page_referenced()/try_to_unmap().  Also allows separate\n   accounting of mlock\u0027d pages, as Nick\u0027s original patch\n   did.\n\n   Note:  Nick\u0027s original mlock patch used a PG_mlocked\n   flag.  I had removed this in favor of the PG_unevictable\n   flag + an mlock_count [new page struct member].  I\n   restored the PG_mlocked flag to eliminate the new\n   count field.\n\n2) add the mlock/unevictable infrastructure to mm/mlock.c,\n   with internal APIs in mm/internal.h.  This is a rework\n   of Nick\u0027s original patch to these files, taking into\n   account that mlocked pages are now kept on unevictable\n   LRU list.\n\n3) update vmscan.c:page_evictable() to check PageMlocked()\n   and, if vma passed in, the vm_flags.  Note that the vma\n   will only be passed in for new pages in the fault path;\n   and then only if the \"cull unevictable pages in fault\n   path\" patch is included.\n\n4) add try_to_unlock() to rmap.c to walk a page\u0027s rmap and\n   ClearPageMlocked() if no other vmas have it mlocked.\n   Reuses as much of try_to_unmap() as possible.  This\n   effectively replaces the use of one of the lru list links\n   as an mlock count.  If this mechanism let\u0027s pages in mlocked\n   vmas leak through w/o PG_mlocked set [I don\u0027t know that it\n   does], we should catch them later in try_to_unmap().  One\n   hopes this will be rare, as it will be relatively expensive.\n\nOriginal mm/internal.h, mm/rmap.c and mm/mlock.c changes:\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nsplitlru: introduce __get_user_pages():\n\n  New munlock processing need to GUP_FLAGS_IGNORE_VMA_PERMISSIONS.\n  because current get_user_pages() can\u0027t grab PROT_NONE pages theresore it\n  cause PROT_NONE pages can\u0027t munlock.\n\n[akpm@linux-foundation.org: fix this for pagemap-pass-mm-into-pagewalkers.patch]\n[akpm@linux-foundation.org: untangle patch interdependencies]\n[akpm@linux-foundation.org: fix things after out-of-order merging]\n[hugh@veritas.com: fix page-flags mess]\n[lee.schermerhorn@hp.com: fix munlock page table walk - now requires \u0027mm\u0027]\n[kosaki.motohiro@jp.fujitsu.com: build fix]\n[kosaki.motohiro@jp.fujitsu.com: fix truncate race and sevaral comments]\n[kosaki.motohiro@jp.fujitsu.com: splitlru: introduce __get_user_pages()]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dave Hansen \u003cdave@linux.vnet.ibm.com\u003e\nCc: Matt Mackall \u003cmpm@selenic.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": "89e004ea55abe201b29e2d6e35124101f1288ef7",
      "tree": "272a8f453106fd33d66fd7153f44696648dbe8b6",
      "parents": [
        "ba9ddf49391645e6bb93219131a40446538a5e76"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:43 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "SHM_LOCKED pages are unevictable\n\nShmem segments locked into memory via shmctl(SHM_LOCKED) should not be\nkept on the normal LRU, since scanning them is a waste of time and might\nthrow off kswapd\u0027s balancing algorithms.  Place them on the unevictable\nLRU list instead.\n\nUse the AS_UNEVICTABLE flag to mark address_space of SHM_LOCKed shared\nmemory regions as unevictable.  Then these pages will be culled off the\nnormal LRU lists during vmscan.\n\nAdd new wrapper function to clear the mapping\u0027s unevictable state when/if\nshared memory segment is munlocked.\n\nAdd \u0027scan_mapping_unevictable_page()\u0027 to mm/vmscan.c to scan all pages in\nthe shmem segment\u0027s mapping [struct address_space] for evictability now\nthat they\u0027re no longer locked.  If so, move them to the appropriate zone\nlru list.\n\nChanges depend on [CONFIG_]UNEVICTABLE_LRU.\n\n[kosaki.motohiro@jp.fujitsu.com: revert shm change]\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\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba9ddf49391645e6bb93219131a40446538a5e76",
      "tree": "2202525ca36c6f629685f5fea60b5b3ba335f546",
      "parents": [
        "7b854121eb3e5ba0241882ff939e2c485228c9c5"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "Ramfs and Ram Disk pages are unevictable\n\nChristoph Lameter pointed out that ram disk pages also clutter the LRU\nlists.  When vmscan finds them dirty and tries to clean them, the ram disk\nwriteback function just redirties the page so that it goes back onto the\nactive list.  Round and round she goes...\n\nWith the ram disk driver [rd.c] replaced by the newer \u0027brd.c\u0027, this is no\nlonger the case, as ram disk pages are no longer maintained on the lru.\n[This makes them unmigratable for defrag or memory hot remove, but that\ncan be addressed by a separate patch series.] However, the ramfs pages\nbehave like ram disk pages used to, so:\n\nDefine new address_space flag [shares address_space flags member with\nmapping\u0027s gfp mask] to indicate that the address space contains all\nunevictable pages.  This will provide for efficient testing of ramfs pages\nin page_evictable().\n\nAlso provide wrapper functions to set/test the unevictable state to\nminimize #ifdefs in ramfs driver and any other users of this facility.\n\nSet the unevictable state on address_space structures for new ramfs\ninodes.  Test the unevictable state in page_evictable() to cull\nunevictable pages.\n\nThese changes depend on [CONFIG_]UNEVICTABLE_LRU.\n\n[riel@redhat.com: undo the brd.c part]\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nDebugged-by: 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": "7b854121eb3e5ba0241882ff939e2c485228c9c5",
      "tree": "e553bc3b3c2be3b36cfcce5219b2ef85646ea495",
      "parents": [
        "bbfd28eee9fbd73e780b19beb3dc562befbb94fa"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "Lee.Schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "Unevictable LRU Page Statistics\n\nReport unevictable pages per zone and system wide.\n\nKosaki Motohiro added support for memory controller unevictable\nstatistics.\n\n[riel@redhat.com: fix printk in show_free_areas()]\n[akpm@linux-foundation.org: fix units in /proc/vmstats]\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: Hiroshi Shimamoto \u003ch-shimamoto@ct.jp.nec.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bbfd28eee9fbd73e780b19beb3dc562befbb94fa",
      "tree": "0e810fcd61501ef57e613a737593067b0bc61d40",
      "parents": [
        "894bc310419ac95f4fa4142dc364401a7e607f65"
      ],
      "author": {
        "name": "Lee Schermerhorn",
        "email": "lee.schermerhorn@hp.com",
        "time": "Sat Oct 18 20:26:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "unevictable lru: add event counting with statistics\n\nFix to unevictable-lru-page-statistics.patch\n\nAdd unevictable lru infrastructure vm events to the statistics patch.\nRename the \"NORECL_\" and \"noreclaim_\" symbols and text strings to\n\"UNEVICTABLE_\" and \"unevictable_\", respectively.\n\nCurrently, both the infrastructure and the mlocked pages event are\nadded by a single patch later in the series.  This makes it difficult\nto add or rework the incremental patches.  The events actually \"belong\"\nwith the stats, so pull them up to here.\n\nAlso, restore the event counting to putback_lru_page().  This was removed\nfrom previous patch in series where it was \"misplaced\".  The actual events\nweren\u0027t defined that early.\n\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: 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": "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": "33c120ed2843090e2bd316de1588b8bf8b96cbde",
      "tree": "7a6969fd7aae85fdaa8e63a90494950d8e4a0792",
      "parents": [
        "c5fdae469a6a26cd882d7fe0aa3fbfffb6b72fc5"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:26 2008 -0700"
      },
      "message": "more aggressively use lumpy reclaim\n\nDuring an AIM7 run on a 16GB system, fork started failing around 32000\nthreads, despite the system having plenty of free swap and 15GB of\npageable memory.  This was on x86-64, so 8k stacks.\n\nIf a higher order allocation fails, we can either:\n- keep evicting pages off the end of the LRUs and hope that\n  we eventually create a contiguous region; this is somewhat\n  unlikely if the system is under enough stress by new\n  allocations\n- after trying normal eviction for a bit, use lumpy reclaim\n\nThis patch switches the system to lumpy reclaim if the VM is having\ntrouble freeing enough pages, using the same threshold for detection as\nused by pageout congestion wait.\n\nSigned-off-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": "c5fdae469a6a26cd882d7fe0aa3fbfffb6b72fc5",
      "tree": "68eff4073f0e26be5aea7a6e69f210fb0cab02ea",
      "parents": [
        "7e9cd484204f9e5b316ed35b241abf088d76e0af"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: add newly swapped in pages to the inactive list\n\nSwapin_readahead can read in a lot of data that the processes in memory\nnever need.  Adding swap cache pages to the inactive list prevents them\nfrom putting too much pressure on the working set.\n\nThis has the potential to help the programs that are already in memory,\nbut it could also be a disadvantage to processes that are trying to get\nswapped in.\n\nSigned-off-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": "7e9cd484204f9e5b316ed35b241abf088d76e0af",
      "tree": "79f2567e7bb96af2d97d8d5407cc990e26eda95c",
      "parents": [
        "556adecba110bf5f1db6c6b56416cfab5bcab698"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: fix pagecache reclaim referenced bit check\n\nMoving referenced pages back to the head of the active list creates a huge\nscalability problem, because by the time a large memory system finally\nruns out of free memory, every single page in the system will have been\nreferenced.\n\nNot only do we not have the time to scan every single page on the active\nlist, but since they have will all have the referenced bit set, that bit\nconveys no useful information.\n\nA more scalable solution is to just move every page that hits the end of\nthe active list to the inactive list.\n\nWe clear the referenced bit off of mapped pages, which need just one\nreference to be moved back onto the active list.\n\nUnmapped pages will be moved back to the active list after two references\n(see mark_page_accessed).  We preserve the PG_referenced flag on unmapped\npages to preserve accesses that were made while the page was on the active\nlist.\n\nSigned-off-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": "556adecba110bf5f1db6c6b56416cfab5bcab698",
      "tree": "a721d84d28c4d99a54632b472b452ea3d4b2b137",
      "parents": [
        "4f98a2fee8acdb4ac84545df98cccecfd130f8db"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: second chance replacement for anonymous pages\n\nWe avoid evicting and scanning anonymous pages for the most part, but\nunder some workloads we can end up with most of memory filled with\nanonymous pages.  At that point, we suddenly need to clear the referenced\nbits on all of memory, which can take ages on very large memory systems.\n\nWe can reduce the maximum number of pages that need to be scanned by not\ntaking the referenced state into account when deactivating an anonymous\npage.  After all, every anonymous page starts out referenced, so why\ncheck?\n\nIf an anonymous page gets referenced again before it reaches the end of\nthe inactive list, we move it back to the active list.\n\nTo keep the maximum amount of necessary work reasonable, we scale the\nactive to inactive ratio with the size of memory, using the formula\nactive:inactive ratio \u003d sqrt(memory in GB * 10).\n\nKswapd CPU use now seems to scale by the amount of pageout bandwidth,\ninstead of by the amount of memory present in the system.\n\n[kamezawa.hiroyu@jp.fujitsu.com: fix OOM with memcg]\n[kamezawa.hiroyu@jp.fujitsu.com: memcg: lru scan fix]\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "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": "b2e185384f534781fd22f5ce170b2ad26f97df70",
      "tree": "3096b8250302c5a9f71b1b5122345f7cf62606cc",
      "parents": [
        "68a22394c286a2daf06ee8d65d8835f738faefa5"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "define page_file_cache() function\n\nDefine page_file_cache() function to answer the question:\n\tis page backed by a file?\n\nOriginally part of Rik van Riel\u0027s split-lru patch.  Extracted to make\navailable for other, independent reclaim patches.\n\nMoved inline function to linux/mm_inline.h where it will be needed by\nsubsequent \"split LRU\" and \"noreclaim\" patches.\n\nUnfortunately this needs to use a page flag, since the PG_swapbacked state\nneeds to be preserved all the way to the point where the page is last\nremoved from the LRU.  Trying to derive the status from other info in the\npage resulted in wrong VM statistics in earlier split VM patchsets.\n\nThe total number of page flags in use on a 32 bit machine after this patch\nis 19.\n\n[akpm@linux-foundation.org: fix up out-of-order merge fallout]\n[hugh@veritas.com: splitlru: shmem_getpage SetPageSwapBacked sooner[\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: MinChan Kim \u003cminchan.kim@gmail.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": "68a22394c286a2daf06ee8d65d8835f738faefa5",
      "tree": "1fb91d5bf57a1f6d1cabaac0a6f5d86060ebecb5",
      "parents": [
        "f04e9ebbe4909f9a41efd55149bc353299f4e83b"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: free swap space on swap-in/activation\n\nIf vm_swap_full() (swap space more than 50% full), the system will free\nswap space at swapin time.  With this patch, the system will also free the\nswap space in the pageout code, when we decide that the page is not a\ncandidate for swapout (and just wasting swap space).\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\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": "f04e9ebbe4909f9a41efd55149bc353299f4e83b",
      "tree": "4ff31c7f918edafe7d4e4dd0e926b6ac545c7897",
      "parents": [
        "b69408e88bd86b98feb7b9a38fd865e1ddb29827"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Sat Oct 18 20:26:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "swap: use an array for the LRU pagevecs\n\nTurn the pagevecs into an array just like the LRUs.  This significantly\ncleans up the source code and reduces the size of the kernel by about 13kB\nafter all the LRU lists have been created further down in the split VM\npatch series.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\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": "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": "62695a84eb8f2e718bf4dfb21700afaa7a08e0ea",
      "tree": "0af7bac599748a7e462bff16d70c702c9e33a2fb",
      "parents": [
        "71088785c6bc68fddb450063d57b1bd1c78e0ea1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: move isolate_lru_page() to vmscan.c\n\nOn large memory systems, the VM can spend way too much time scanning\nthrough pages that it cannot (or should not) evict from memory.  Not only\ndoes it use up CPU time, but it also provokes lock contention and can\nleave large systems under memory presure in a catatonic state.\n\nThis patch series improves VM scalability by:\n\n1) putting filesystem backed, swap backed and unevictable pages\n   onto their own LRUs, so the system only scans the pages that it\n   can/should evict from memory\n\n2) switching to two handed clock replacement for the anonymous LRUs,\n   so the number of pages that need to be scanned when the system\n   starts swapping is bound to a reasonable number\n\n3) keeping unevictable pages off the LRU completely, so the\n   VM does not waste CPU time scanning them. ramfs, ramdisk,\n   SHM_LOCKED shared memory segments and mlock()ed VMA pages\n   are keept on the unevictable list.\n\nThis patch:\n\nisolate_lru_page logically belongs to be in vmscan.c than migrate.c.\n\nIt is tough, because we don\u0027t need that function without memory migration\nso there is a valid argument to have it in migrate.c.  However a\nsubsequent patch needs to make use of it in the core mm, so we can happily\nmove it to vmscan.c.\n\nAlso, make the function a little more generic by not requiring that it\nadds an isolated page to a given list.  Callers can do that.\n\n\tNote that we now have \u0027__isolate_lru_page()\u0027, that does\n\tsomething quite different, visible outside of vmscan.c\n\tfor use with memory controller.  Methinks we need to\n\trationalize these names/purposes.\t--lts\n\n[akpm@linux-foundation.org: fix mm/memory_hotplug.c build]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71088785c6bc68fddb450063d57b1bd1c78e0ea1",
      "tree": "026e0e2be8aac85959424211f7e319be6cac40ca",
      "parents": [
        "8433ac61acf733dc4b427de5f0891518c21538f9"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sat Oct 18 20:25:58 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "mm: cleanup to make remove_memory() arch-neutral\n\nThere is nothing architecture specific about remove_memory().\nremove_memory() function is common for all architectures which support\nhotplug memory remove.  Instead of duplicating it in every architecture,\ncollapse them into arch neutral function.\n\n[akpm@linux-foundation.org: fix the export]\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@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": "d9d332e0874f46b91d8ac4604b68ee42b8a7a2c6",
      "tree": "070023e76343c4713c352aba31faae042ad3d4a6",
      "parents": [
        "0cfd81031a26717fe14380d18275f8e217571615"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 19 10:32:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 19 11:50:35 2008 -0700"
      },
      "message": "anon_vma_prepare: properly lock even newly allocated entries\n\nThe anon_vma code is very subtle, and we end up doing optimistic lookups\nof anon_vmas under RCU in page_lock_anon_vma() with no locking.  Other\nCPU\u0027s can also see the newly allocated entry immediately after we\u0027ve\nexposed it by setting \"vma-\u003eanon_vma\" to the new value.\n\nWe protect against the anon_vma being destroyed by having the SLAB\nmarked as SLAB_DESTROY_BY_RCU, so the RCU lookup can depend on the\nallocation not being destroyed - but it might still be free\u0027d and\nre-allocated here to a new vma.\n\nAs a result, we should not do the anon_vma list ops on a newly allocated\nvma without proper locking.\n\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f7ea4a4ba84f382e8eb143e435551de0feee5b4b",
      "tree": "0771d5413f1b9104816ca0ddec21c5503d562a3d",
      "parents": [
        "5564da7e9d12ea80745f66c8d2ec7bd00f3f94eb",
        "4b40893918203ee1a1f6a114316c2a19c072e9bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 15:09:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 17 15:09:20 2008 -0700"
      },
      "message": "Merge branch \u0027drm-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6\n\n* \u0027drm-next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (44 commits)\n  drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831)\n  drm: make CONFIG_DRM depend on CONFIG_SHMEM.\n  radeon: fix PCI bus mastering support enables.\n  radeon: add RS400 family support.\n  drm/radeon: add support for RS740 IGP chipsets.\n  i915: GM45 has GM965-style MCH setup.\n  i915: Don\u0027t run retire work handler while suspended\n  i915: Map status page cached for chips with GTT-based HWS location.\n  i915: Fix up ring initialization to cover G45 oddities\n  i915: Use non-reserved status page index for breadcrumb\n  drm: Increment dev_priv-\u003eirq_received so i915_gem_interrupts count works.\n  drm: kill drm_device-\u003eirq\n  drm: wbinvd is cache coherent.\n  i915: add missing return in error path.\n  i915: fixup permissions on gem ioctls.\n  drm: Clean up many sparse warnings in i915.\n  drm: Use ioremap_wc in i915_driver instead of ioremap, since we always want WC.\n  drm: G33-class hardware has a newer 965-style MCH (no DCC register).\n  drm: Avoid oops in GEM execbuffers with bad arguments.\n  DRM: Return -EBADF on bad object in flink, and return curent name if it exists.\n  ...\n"
    }
  ],
  "next": "395e0ddc44005ced5e4fed9bfc2e4bdf63d37627"
}
