)]}'
{
  "log": [
    {
      "commit": "d7824370e26325c881b665350ce64fb0a4fde24a",
      "tree": "c3fb9ceb074d52c3edd166a927314c642f2fe631",
      "parents": [
        "1b68c9596ce17a1e06918ed65fc3d19b92b04aab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 15 11:35:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Aug 15 11:35:52 2010 -0700"
      },
      "message": "mm: fix up some user-visible effects of the stack guard page\n\nThis commit makes the stack guard page somewhat less visible to user\nspace. It does this by:\n\n - not showing the guard page in /proc/\u003cpid\u003e/maps\n\n   It looks like lvm-tools will actually read /proc/self/maps to figure\n   out where all its mappings are, and effectively do a specialized\n   \"mlockall()\" in user space.  By not showing the guard page as part of\n   the mapping (by just adding PAGE_SIZE to the start for grows-up\n   pages), lvm-tools ends up not being aware of it.\n\n - by also teaching the _real_ mlock() functionality not to try to lock\n   the guard page.\n\n   That would just expand the mapping down to create a new guard page,\n   so there really is no point in trying to lock it in place.\n\nIt would perhaps be nice to show the guard page specially in\n/proc/\u003cpid\u003e/maps (or at least mark grow-down segments some way), but\nlet\u0027s not open ourselves up to more breakage by user space from programs\nthat depends on the exact deails of the \u0027maps\u0027 file.\n\nSpecial thanks to Henrique de Moraes Holschuh for diving into lvm-tools\nsource code to see what was going on with the whole new warning.\n\nReported-and-tested-by: François Valenduc \u003cfrancois.valenduc@tvcablenet.be\nReported-by: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "03ab450f030b08d786c7a262b67816396f09c7ab",
      "tree": "1c6e245f823bd3c2c3f5b584f6f25cf83d1c2447",
      "parents": [
        "163475fb111cb2f85aef2428a6c1f9eefba8be23"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat Aug 14 13:05:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 14 16:20:59 2010 -0700"
      },
      "message": "mm/page-writeback: fix non-kernel-doc function comments\n\nRemove leading /** from non-kernel-doc function comments to prevent\nkernel-doc warnings.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11ac552477e32835cb6970bf0a70c210807f5673",
      "tree": "959521ee3e217da81b08209df0f0db760e1efdb8",
      "parents": [
        "92fa5bd9a946b6e7aab6764e7312e4e3d9bed295"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 14 11:44:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 14 11:44:56 2010 -0700"
      },
      "message": "mm: fix page table unmap for stack guard page properly\n\nWe do in fact need to unmap the page table _before_ doing the whole\nstack guard page logic, because if it is needed (mainly 32-bit x86 with\nPAE and CONFIG_HIGHPTE, but other architectures may use it too) then it\nwill do a kmap_atomic/kunmap_atomic.\n\nAnd those kmaps will create an atomic region that we cannot do\nallocations in.  However, the whole stack expand code will need to do\nanon_vma_prepare() and vma_lock_anon_vma() and they cannot do that in an\natomic region.\n\nNow, a better model might actually be to do the anon_vma_prepare() when\n_creating_ a VM_GROWSDOWN segment, and not have to worry about any of\nthis at page fault time.  But in the meantime, this is the\nstraightforward fix for the issue.\n\nSee https://bugzilla.kernel.org/show_bug.cgi?id\u003d16588 for details.\n\nReported-by: Wylda \u003cwylda@volny.cz\u003e\nReported-by: Sedat Dilek \u003csedat.dilek@gmail.com\u003e\nReported-by: Mike Pagano \u003cmpagano@gentoo.org\u003e\nReported-by: François Valenduc \u003cfrancois.valenduc@tvcablenet.be\u003e\nTested-by: Ed Tomlinson \u003cedt@aei.ca\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fe622e76fddd986e56f22842a6ce292504727ef1",
      "tree": "7e901e8d5f42a76c0e9e8e33d75b6ff791a7b759",
      "parents": [
        "c7887325230aec47d47a32562a6e26014a0fafca"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Fri Aug 13 11:25:12 2010 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 13 16:55:25 2010 -0700"
      },
      "message": "NOMMU: Remove an extraneous no_printk()\n\nRemove an extraneous no_printk() in mm/nommu.c that got missed when the\nfunction got generalised from several things that used it in commit\n12fdff3fc248 (\"Add a dummy printk function for the maintenance of unused\nprintks\").\n\nWithout this, the following error is observed:\n\n  mm/nommu.c:41: error: conflicting types for \u0027no_printk\u0027\n  include/linux/kernel.h:314: error: previous definition of \u0027no_printk\u0027 was here\n\nReported-by: Michal Simek \u003cmonstr@monstr.eu\u003e\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5528f9132cf65d4d892bcbc5684c61e7822b21e9",
      "tree": "46ad9b7a106a42579b869b42bf237a663370a613",
      "parents": [
        "320b2b8de12698082609ebbc1a17165727f4c893"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 13 09:24:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 13 09:24:04 2010 -0700"
      },
      "message": "mm: fix missing page table unmap for stack guard page failure case\n\n.. which didn\u0027t show up in my tests because it\u0027s a no-op on x86-64 and\nmost other architectures.  But we enter the function with the last-level\npage table mapped, and should unmap it at exit.\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "320b2b8de12698082609ebbc1a17165727f4c893",
      "tree": "bb62fe1ba3bb8bf68ff1fd44e613ece9c9581c36",
      "parents": [
        "2069601b3f0ea38170d4b509b89f3ca0a373bdc1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 17:54:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 17:54:33 2010 -0700"
      },
      "message": "mm: keep a guard page below a grow-down stack segment\n\nThis is a rather minimally invasive patch to solve the problem of the\nuser stack growing into a memory mapped area below it.  Whenever we fill\nthe first page of the stack segment, expand the segment down by one\npage.\n\nNow, admittedly some odd application might _want_ the stack to grow down\ninto the preceding memory mapping, and so we may at some point need to\nmake this a process tunable (some people might also want to have more\nthan a single page of guarding), but let\u0027s try the minimal approach\nfirst.\n\nTested with trivial application that maps a single page just below the\nstack, and then starts recursing.  Without this, we will get a SIGSEGV\n_after_ the stack has smashed the mapping.  With this patch, we\u0027ll get a\nnice SIGBUS just as the stack touches the page just above the mapping.\n\nRequested-by: Keith Packard \u003ckeithp@keithp.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1021a645344d4a77333e19e60d37b9343be0d7b7",
      "tree": "7a78ab55f27f97209ed1b85ccfd88c6d5b8416d3",
      "parents": [
        "7367f5b013fee33f7d40a5a10a39d5134f529ec8",
        "28957a5467bab9ed51a237d21e31055fad987887"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 10:15:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 10:15:10 2010 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6:\n  hugetlb: add missing unlock in avoidcopy path in hugetlb_cow()\n  hwpoison: rename CONFIG\n  HWPOISON, hugetlb: support hwpoison injection for hugepage\n  HWPOISON, hugetlb: detect hwpoison in hugetlb code\n  HWPOISON, hugetlb: isolate corrupted hugepage\n  HWPOISON, hugetlb: maintain mce_bad_pages in handling hugepage error\n  HWPOISON, hugetlb: set/clear PG_hwpoison bits on hugepage\n  HWPOISON, hugetlb: enable error handling path for hugepage\n  hugetlb, rmap: add reverse mapping for hugepage\n  hugetlb: move definition of is_vm_hugetlb_page() to hugepage_inline.h\n\nFix up trivial conflicts in mm/memory-failure.c\n"
    },
    {
      "commit": "26f0cf91813bdc8e61595f8ad6660251e2ee9cf6",
      "tree": "db129d45fba03e3e59392410d0f35ba7d3e438e6",
      "parents": [
        "d862b13bc8cbab9692fbe0ef44c40d0488b81af1",
        "fe96eb404e33b59bb39f7050205f7c56c1c7d686"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 09:09:41 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 09:09:41 2010 -0700"
      },
      "message": "Merge branch \u0027stable/xen-swiotlb-0.8.6\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen\n\n* \u0027stable/xen-swiotlb-0.8.6\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:\n  x86: Detect whether we should use Xen SWIOTLB.\n  pci-swiotlb-xen: Add glue code to setup dma_ops utilizing xen_swiotlb_* functions.\n  swiotlb-xen: SWIOTLB library for Xen PV guest with PCI passthrough.\n  xen/mmu: inhibit vmap aliases rather than trying to clear them out\n  vmap: add flag to allow lazy unmap to be disabled at runtime\n  xen: Add xen_create_contiguous_region\n  xen: Rename the balloon lock\n  xen: Allow unprivileged Xen domains to create iomap pages\n  xen: use _PAGE_IOMAP in ioremap to do machine mappings\n\nFix up trivial conflicts (adding both xen swiotlb and xen pci platform\ndriver setup close to each other) in drivers/xen/{Kconfig,Makefile} and\ninclude/xen/xen-ops.h\n"
    },
    {
      "commit": "1babe18385d3976043c04237ce837f3736197eb4",
      "tree": "c766bb0022ec5188cd7e991fc1f9ad51687e8aca",
      "parents": [
        "16c4042f08919f447d6b2a55679546c9b97c7264"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Aug 11 14:17:40 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:30 2010 -0700"
      },
      "message": "writeback: add comment to the dirty limit functions\n\nDocument global_dirty_limits() and bdi_dirty_limit().\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "16c4042f08919f447d6b2a55679546c9b97c7264",
      "tree": "0248b64d46237854ebe67efe8c742cb5878d8611",
      "parents": [
        "e50e37201ae2e7d6a52e87815759e6481f0bcfb9"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Aug 11 14:17:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:29 2010 -0700"
      },
      "message": "writeback: avoid unnecessary calculation of bdi dirty thresholds\n\nSplit get_dirty_limits() into global_dirty_limits()+bdi_dirty_limit(), so\nthat the latter can be avoided when under global dirty background\nthreshold (which is the normal state for most systems).\n\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e50e37201ae2e7d6a52e87815759e6481f0bcfb9",
      "tree": "efb500382d5e9628351cb16286f579ad9bd455db",
      "parents": [
        "a292dfa01794477126d3f022559eb235edde00b0"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Wed Aug 11 14:17:37 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:29 2010 -0700"
      },
      "message": "writeback: balance_dirty_pages(): reduce calls to global_page_state\n\nReducing the number of times balance_dirty_pages calls global_page_state\nreduces the cache references and so improves write performance on a\nvariety of workloads.\n\n\u0027perf stats\u0027 of simple fio write tests shows the reduction in cache\naccess.  Where the test is fio \u0027write,mmap,600Mb,pre_read\u0027 on AMD AthlonX2\nwith 3Gb memory (dirty_threshold approx 600 Mb) running each test 10\ntimes, dropping the fasted \u0026 slowest values then taking the average \u0026\nstandard deviation\n\n\t\taverage (s.d.) in millions (10^6)\n2.6.31-rc8\t648.6 (14.6)\n+patch\t\t620.1 (16.5)\n\nAchieving this reduction is by dropping clip_bdi_dirty_limit as it rereads\nthe counters to apply the dirty_threshold and moving this check up into\nbalance_dirty_pages where it has already read the counters.\n\nAlso by rearrange the for loop to only contain one copy of the limit tests\nallows the pdflush test after the loop to use the local copies of the\ncounters rather than rereading them.\n\nIn the common case with no throttling it now calls global_page_state 5\nfewer times and bdi_stat 2 fewer.\n\nFengguang:\n\nThis patch slightly changes behavior by replacing clip_bdi_dirty_limit()\nwith the explicit check (nr_reclaimable + nr_writeback \u003e\u003d dirty_thresh) to\navoid exceeding the dirty limit.  Since the bdi dirty limit is mostly\naccurate we don\u0027t need to do routinely clip.  A simple dirty limit check\nwould be enough.\n\nThe check is necessary because, in principle we should throttle everything\ncalling balance_dirty_pages() when we\u0027re over the total limit, as said by\nPeter.\n\nWe now set and clear dirty_exceeded not only based on bdi dirty limits,\nbut also on the global dirty limit.  The global limit check is added in\nplace of clip_bdi_dirty_limit() for safety and not intended as a behavior\nchange.  The bdi limits should be tight enough to keep all dirty pages\nunder the global limit at most time; occasional small exceeding should be\nOK though.  The change makes the logic more obvious: the global limit is\nthe ultimate goal and shall be always imposed.\n\nWe may now start background writeback work based on outdated conditions.\nThat\u0027s safe because the bdi flush thread will (and have to) double check\nthe states.  It reduces overall overheads because the test based on old\nstates still have good chance to be right.\n\n[akpm@linux-foundation.org] fix uninitialized dirty_exceeded\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.com\u003e\nCc: Jan Kara \u003cjack@suse.cz\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3c111a071da260aa1e9cae3e882e2109c4e9bdfc",
      "tree": "27a830f9981dc1a9734a190d9890d4eddf0e6357",
      "parents": [
        "0a7992c90828a65281c3c9cf180be3b432d277b2"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Wed Aug 11 14:17:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Aug 12 08:43:29 2010 -0700"
      },
      "message": "mm: fix fatal kernel-doc error\n\nFix a fatal kernel-doc error due to a #define coming between a function\u0027s\nkernel-doc notation and the function signature.  (kernel-doc cannot handle\nthis)\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": "13d7e3a2dba6a79589ed34dc0b9114d7b5ff9eab",
      "tree": "b22db0b9ab3af864c7517ca38887048423194e41",
      "parents": [
        "00918b6ab89df8984ca06397cb77994dabd73f9b"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: convert to use zone_to_nid() from bare zone-\u003ezone_pgdat-\u003enode_id\n\nWe have zone_to_nid().  this patch convert all existing users of\nzone-\u003ezone_pgdat-\u003enode_id.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nishimura Daisuke \u003cd-nishimura@mtf.biglobe.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00918b6ab89df8984ca06397cb77994dabd73f9b",
      "tree": "2ca2f0f0e7f3ca235c254f05759f96f160e3c0ab",
      "parents": [
        "14fec79680f7cc4617d6ba69324e63d4a732986c"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:05 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: remove nid and zid argument from mem_cgroup_soft_limit_reclaim()\n\nmem_cgroup_soft_limit_reclaim() has zone, nid and zid argument.  but nid\nand zid can be calculated from zone.  So remove it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Nishimura Daisuke \u003cd-nishimura@mtf.biglobe.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14fec79680f7cc4617d6ba69324e63d4a732986c",
      "tree": "f8a9b627a03d04ec7c76fb67f8ea66c81c57a92f",
      "parents": [
        "da280d636b83f0f5d92921c99ef5c7d7c3e751cc"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:05 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: mem_cgroup_shrink_node_zone() doesn\u0027t need sc.nodemask\n\nCurrently mem_cgroup_shrink_node_zone() call shrink_zone() directly.  thus\nit doesn\u0027t need to initialize sc.nodemask because shrink_zone() doesn\u0027t\nuse it at all.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Nishimura Daisuke \u003cd-nishimura@mtf.biglobe.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "da280d636b83f0f5d92921c99ef5c7d7c3e751cc",
      "tree": "8f64c4234031589b7818f3d90a1a9552016161ff",
      "parents": [
        "b8f5c5664d51776d74c84228c4b7165abfa92a18"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: kill unnecessary initialization in mem_cgroup_shrink_node_zone()\n\nsc.nr_reclaimed and sc.nr_scanned have already been initialized few lines\nabove \"struct scan_control sc \u003d {}\" statement.\n\nSo, This patch remove this unnecessary code.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Nishimura Daisuke \u003cd-nishimura@mtf.biglobe.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b8f5c5664d51776d74c84228c4b7165abfa92a18",
      "tree": "951e09e1810a356d8ecff7a85637e9c2e2f4e49d",
      "parents": [
        "f75ca962037ffd639a44fd88933cd9b84c4c4411"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: sc.nr_to_reclaim should be initialized\n\nCurrently, mem_cgroup_shrink_node_zone() initialize sc.nr_to_reclaim as 0.\n It mean shrink_zone() only scan 32 pages and immediately return even if\nit doesn\u0027t reclaim any pages.\n\nThis patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Nishimura Daisuke \u003cd-nishimura@mtf.biglobe.ne.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f75ca962037ffd639a44fd88933cd9b84c4c4411",
      "tree": "4773cd57ae45831c11783cd355f9dcb516eb66f0",
      "parents": [
        "158e0a2d1b3cffed8b46cbc56393a1394672ef79"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: avoid css_get()\n\nNow, memory cgroup increments css(cgroup subsys state)\u0027s reference count\nper a charged page.  And the reference count is kept until the page is\nuncharged.  But this has 2 bad effect.\n\n 1. Because css_get/put calls atomic_inc()/dec, heavy call of them\n    on large smp will not scale well.\n 2. Because css\u0027s refcnt cannot be in a state as \"ready-to-release\",\n    cgroup\u0027s notify_on_release handler can\u0027t work with memcg.\n 3. css\u0027s refcnt is atomic_t, it means smaller than 32bit. Maybe too small.\n\nThis has been a problem since the 1st merge of memcg.\n\nThis is a trial to remove css\u0027s refcnt per a page. Even if we remove\nrefcnt, pre_destroy() does enough synchronization as\n  - check res-\u003eusage \u003d\u003d 0.\n  - check no pages on LRU.\n\nThis patch removes css\u0027s refcnt per page.  Even after this patch, at the\n1st look, it seems css_get() is still called in try_charge().\n\nBut the logic is.\n\n  - If a memcg of mm-\u003eowner is cached one, consume_stock() will work.\n    At success, return immediately.\n  - If consume_stock returns false, css_get() is called and go to\n    slow path which may be blocked. At the end of slow path,\n    css_put() is called and restart from the start if necessary.\n\nSo, in the fast path, we don\u0027t call css_get() and can avoid access to\nshared counter. This patch can make the most possible case fast.\n\nHere is a result of multi-threaded page fault benchmark.\n\n[Before]\n    25.32%  multi-fault-all  [kernel.kallsyms]      [k] clear_page_c\n     9.30%  multi-fault-all  [kernel.kallsyms]      [k] _raw_spin_lock_irqsave\n     8.02%  multi-fault-all  [kernel.kallsyms]      [k] try_get_mem_cgroup_from_mm \u003c\u003d\u003d\u003d\u003d\u003d(*)\n     7.83%  multi-fault-all  [kernel.kallsyms]      [k] down_read_trylock\n     5.38%  multi-fault-all  [kernel.kallsyms]      [k] __css_put\n     5.29%  multi-fault-all  [kernel.kallsyms]      [k] __alloc_pages_nodemask\n     4.92%  multi-fault-all  [kernel.kallsyms]      [k] _raw_spin_lock_irq\n     4.24%  multi-fault-all  [kernel.kallsyms]      [k] up_read\n     3.53%  multi-fault-all  [kernel.kallsyms]      [k] css_put\n     2.11%  multi-fault-all  [kernel.kallsyms]      [k] handle_mm_fault\n     1.76%  multi-fault-all  [kernel.kallsyms]      [k] __rmqueue\n     1.64%  multi-fault-all  [kernel.kallsyms]      [k] __mem_cgroup_commit_charge\n\n[After]\n    28.41%  multi-fault-all  [kernel.kallsyms]      [k] clear_page_c\n    10.08%  multi-fault-all  [kernel.kallsyms]      [k] _raw_spin_lock_irq\n     9.58%  multi-fault-all  [kernel.kallsyms]      [k] down_read_trylock\n     9.38%  multi-fault-all  [kernel.kallsyms]      [k] _raw_spin_lock_irqsave\n     5.86%  multi-fault-all  [kernel.kallsyms]      [k] __alloc_pages_nodemask\n     5.65%  multi-fault-all  [kernel.kallsyms]      [k] up_read\n     2.82%  multi-fault-all  [kernel.kallsyms]      [k] handle_mm_fault\n     2.64%  multi-fault-all  [kernel.kallsyms]      [k] mem_cgroup_add_lru_list\n     2.48%  multi-fault-all  [kernel.kallsyms]      [k] __mem_cgroup_commit_charge\n\nThen, 8.02% of try_get_mem_cgroup_from_mm() disappears because this patch\nremoves css_tryget() in it. (But yes, this is an extreme case.)\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "158e0a2d1b3cffed8b46cbc56393a1394672ef79",
      "tree": "a044d53137609fdfc8c1afdde366b3e205c96eda",
      "parents": [
        "73045c47b6facbdf4656e6763c8cb469de4337e2"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Aug 10 18:03:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: use find_lock_task_mm() in memory cgroups oom\n\nWhen the OOM killer scans task, it check a task is under memcg or\nnot when it\u0027s called via memcg\u0027s context.\n\nBut, as Oleg pointed out, a thread group leader may have NULL -\u003emm\nand task_in_mem_cgroup() may do wrong decision. We have to use\nfind_lock_task_mm() in memcg as generic OOM-Killer does.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReviewed-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": "73045c47b6facbdf4656e6763c8cb469de4337e2",
      "tree": "e791667803261eb9ae5325dcd8c70acefeee9196",
      "parents": [
        "bd0d24bfe8a8f8d2400569740874a67d164d40a9"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Tue Aug 10 18:02:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:19 2010 -0700"
      },
      "message": "memcg: remove mem from arg of charge_common\n\nmem_cgroup_charge_common() is always called with @mem \u003d NULL, so it\u0027s\nmeaningless.  This patch removes it.\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd0d24bfe8a8f8d2400569740874a67d164d40a9",
      "tree": "9d592f6566adacc3e8da3d2c06411a16b2d45763",
      "parents": [
        "2bd9bb206b338888b226e70139a25a67d10007f0"
      ],
      "author": {
        "name": "Daisuke Nishimura",
        "email": "nishimura@mxp.nes.nec.co.jp",
        "time": "Tue Aug 10 18:02:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:18 2010 -0700"
      },
      "message": "memcg: remove redundant code\n\n- try_get_mem_cgroup_from_mm() calls rcu_read_lock/unlock by itself, so we\n  don\u0027t have to call them in task_in_mem_cgroup().\n- *mz is not used in __mem_cgroup_uncharge_common().\n- we don\u0027t have to call lookup_page_cgroup() in mem_cgroup_end_migration()\n  after we\u0027ve cleared PCG_MIGRATION of @oldpage.\n- remove empty comment.\n- remove redundant empty line in mem_cgroup_cache_charge().\n\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bd9bb206b338888b226e70139a25a67d10007f0",
      "tree": "ac556b1bfa52f06fe2998371d10edec38d5cf2a9",
      "parents": [
        "4b53433468c87794b523e4683fbd4e8e8aca1f63"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Aug 10 18:02:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:18 2010 -0700"
      },
      "message": "memcg: clean up waiting move acct\n\nNow, for checking a memcg is under task-account-moving, we do css_tryget()\nagainst mc.to and mc.from.  But this is just complicating things.  This\npatch makes the check easier.\n\nThis patch adds a spinlock to move_charge_struct and guard modification of\nmc.to and mc.from.  By this, we don\u0027t have to think about complicated\nraces arount this not-critical path.\n\n[balbir@linux.vnet.ibm.com: don\u0027t crash on a null memcg being passed]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4b53433468c87794b523e4683fbd4e8e8aca1f63",
      "tree": "08f80fd5ec5d824a28aa4e0b15c7e2e83eed9fec",
      "parents": [
        "65e0e811667dedd4f19b268df9d856ecacb629de"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Aug 10 18:02:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 11 08:59:18 2010 -0700"
      },
      "message": "memcg: clean up try_charge main loop\n\nmem_cgroup_try_charge() has a big loop in it and seems to be hard to read.\n Most of routines are for slow path.  This patch moves codes out from the\nloop and make it clear what\u0027s done.\n\nSummary:\n - refactoring a function to detect a memcg is under acccount move or not.\n - refactoring a function to wait for the end of moving task acct.\n - refactoring a main loop(\u0027s slow path) as a function and make it clear\n   why we retry or quit by return code.\n - add fatal_signal_pending() check for bypassing charge loops.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28957a5467bab9ed51a237d21e31055fad987887",
      "tree": "1bc0a2bee4744516fb9874e36bbd7eb6cd9020b3",
      "parents": [
        "e3390f67a7267daa227380b6f1bbf13c7ddd4aff"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri Jul 02 14:47:20 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:23:48 2010 +0200"
      },
      "message": "hugetlb: add missing unlock in avoidcopy path in hugetlb_cow()\n\nThis patch fixes possible deadlock in hugepage lock_page()\nby adding missing unlock_page().\n\nlibhugetlbfs test will hit this bug when the next patch in this\npatchset (\"hugetlb, HWPOISON: move PG_HWPoison bit check\") is applied.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "e3390f67a7267daa227380b6f1bbf13c7ddd4aff",
      "tree": "7f0285b20cc844b9ea403d5d1278a9643a1baec5",
      "parents": [
        "43131e141abdb44c487cf79af3ef1fe5164dcef9"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Tue Jun 15 13:18:13 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:23:22 2010 +0200"
      },
      "message": "hwpoison: rename CONFIG\n\nCONFIG_HUGETLBFS controls hugetlbfs interface code.\nOTOH, CONFIG_HUGETLB_PAGE controls hugepage management code.\nSo we should use CONFIG_HUGETLB_PAGE here.\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "43131e141abdb44c487cf79af3ef1fe5164dcef9",
      "tree": "374312457143abd52f1c4b0dbada363f5a69ba55",
      "parents": [
        "fd6a03edd271cf2d69a61aa8df98dd05fa6b9afd"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:22 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:23:11 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: support hwpoison injection for hugepage\n\nThis patch enables hwpoison injection through debug/hwpoison interfaces,\nwith which we can test memory error handling for free or reserved\nhugepages (which cannot be tested by madvise() injector).\n\n[AK: Export PageHuge too for the injection module]\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "fd6a03edd271cf2d69a61aa8df98dd05fa6b9afd",
      "tree": "32d3e89f1f66a3d9b68bccc88fec548acc361bf5",
      "parents": [
        "93f70f900da36fbc19c13c2aa04b2e468c8d00fb"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:21 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:23:01 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: detect hwpoison in hugetlb code\n\nThis patch enables to block access to hwpoisoned hugepage and\nalso enables to block unmapping for it.\n\nDependency:\n  \"HWPOISON, hugetlb: enable error handling path for hugepage\"\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "93f70f900da36fbc19c13c2aa04b2e468c8d00fb",
      "tree": "7868f891bca0ed18c9806771a68feac0b4010517",
      "parents": [
        "c9fbdd5f131440981b124883656ea21fb12cde4a"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:20 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:22:46 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: isolate corrupted hugepage\n\nIf error hugepage is not in-use, we can fully recovery from error\nby dequeuing it from freelist, so return RECOVERY.\nOtherwise whether or not we can recovery depends on user processes,\nso return DELAYED.\n\nDependency:\n  \"HWPOISON, hugetlb: enable error handling path for hugepage\"\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "c9fbdd5f131440981b124883656ea21fb12cde4a",
      "tree": "72de1cb1bb49525fca9e3f77678db9c77b94d912",
      "parents": [
        "7013febc8940960eaaba039bac0f80910f679ce1"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:19 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:22:32 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: maintain mce_bad_pages in handling hugepage error\n\nFor now all pages in the error hugepage are considered as hwpoisoned,\nso count all of them in mce_bad_pages.\n\nDependency:\n  \"HWPOISON, hugetlb: enable error handling path for hugepage\"\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "7013febc8940960eaaba039bac0f80910f679ce1",
      "tree": "27a61a69ae8c1df5149ba9ac98cc573e8bf19b95",
      "parents": [
        "7af446a841a264a1a9675001005b29ce01d1fc57"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:18 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:22:12 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: set/clear PG_hwpoison bits on hugepage\n\nTo avoid race condition between concurrent memory errors on identified\nhugepage, we atomically test and set PG_hwpoison bit on the head page.\nAll pages in the error hugepage are considered as hwpoisoned\nfor now, so set and clear all PG_hwpoison bits in the hugepage\nwith page lock of the head page held.\n\nDependency:\n  \"HWPOISON, hugetlb: enable error handling path for hugepage\"\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "7af446a841a264a1a9675001005b29ce01d1fc57",
      "tree": "902fec55a889d33771f267fc6242b1de43d9d0c6",
      "parents": [
        "0fe6e20b9c4c53b3e97096ee73a0857f60aad43f"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:17 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:21:36 2010 +0200"
      },
      "message": "HWPOISON, hugetlb: enable error handling path for hugepage\n\nThis patch just enables handling path. Real containing and\nrecovering operation will be implemented in following patches.\n\nDependency:\n  \"hugetlb, rmap: add reverse mapping for hugepage.\"\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "0fe6e20b9c4c53b3e97096ee73a0857f60aad43f",
      "tree": "3014636f2ed66fdebecb6f6bab338b39c3543a07",
      "parents": [
        "8edf344c66a3f214d709dad1421c29d678915b3f"
      ],
      "author": {
        "name": "Naoya Horiguchi",
        "email": "n-horiguchi@ah.jp.nec.com",
        "time": "Fri May 28 09:29:16 2010 +0900"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Aug 11 09:21:15 2010 +0200"
      },
      "message": "hugetlb, rmap: add reverse mapping for hugepage\n\nThis patch adds reverse mapping feature for hugepage by introducing\nmapcount for shared/private-mapped hugepage and anon_vma for\nprivate-mapped hugepage.\n\nWhile hugepage is not currently swappable, reverse mapping can be useful\nfor memory error handler.\n\nWithout this patch, memory error handler cannot identify processes\nusing the bad hugepage nor unmap it from them. That is:\n- for shared hugepage:\n  we can collect processes using a hugepage through pagecache,\n  but can not unmap the hugepage because of the lack of mapcount.\n- for privately mapped hugepage:\n  we can neither collect processes nor unmap the hugepage.\nThis patch solves these problems.\n\nThis patch include the bug fix given by commit 23be7468e8, so reverts it.\n\nDependency:\n  \"hugetlb: move definition of is_vm_hugetlb_page() to hugepage_inline.h\"\n\nChangeLog since May 24.\n- create hugetlb_inline.h and move is_vm_hugetlb_index() in it.\n- move functions setting up anon_vma for hugepage into mm/rmap.c.\n\nChangeLog since May 13.\n- rebased to 2.6.34\n- fix logic error (in case that private mapping and shared mapping coexist)\n- move is_vm_hugetlb_page() into include/linux/mm.h to use this function\n  from linear_page_index()\n- define and use linear_hugepage_index() instead of compound_order()\n- use page_move_anon_rmap() in hugetlb_cow()\n- copy exclusive switch of __set_page_anon_rmap() into hugepage counterpart.\n- revert commit 24be7468 completely\n\nSigned-off-by: Naoya Horiguchi \u003cn-horiguchi@ah.jp.nec.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nAcked-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "2f9e825d3e0e2b407ae8f082de5c00afcf7378fb",
      "tree": "f8b3ee40674ce4acd5508a0a0bf52a30904caf6c",
      "parents": [
        "7ae0dea900b027cd90e8a3e14deca9a19e17638b",
        "de75d60d5ea235e6e09f4962ab22541ce0fe176a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:22:42 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.36\u0027 of git://git.kernel.dk/linux-2.6-block: (149 commits)\n  block: make sure that REQ_* types are seen even with CONFIG_BLOCK\u003dn\n  xen-blkfront: fix missing out label\n  blkdev: fix blkdev_issue_zeroout return value\n  block: update request stacking methods to support discards\n  block: fix missing export of blk_types.h\n  writeback: fix bad _bh spinlock nesting\n  drbd: revert \"delay probes\", feature is being re-implemented differently\n  drbd: Initialize all members of sync_conf to their defaults [Bugz 315]\n  drbd: Disable delay probes for the upcomming release\n  writeback: cleanup bdi_register\n  writeback: add new tracepoints\n  writeback: remove unnecessary init_timer call\n  writeback: optimize periodic bdi thread wakeups\n  writeback: prevent unnecessary bdi threads wakeups\n  writeback: move bdi threads exiting logic to the forker thread\n  writeback: restructure bdi forker loop a little\n  writeback: move last_active to bdi\n  writeback: do not remove bdi from bdi_list\n  writeback: simplify bdi code a little\n  writeback: do not lose wake-ups in bdi threads\n  ...\n\nFixed up pretty trivial conflicts in drivers/block/virtio_blk.c and\ndrivers/scsi/scsi_error.c as per Jens.\n"
    },
    {
      "commit": "4c619407b0439c59c20398b9459020c0d297f424",
      "tree": "17d5401aebd5fe00a4878353353e29fc8c569b89",
      "parents": [
        "26b55633a891a28bf04f42882de145eb8e9cb9ad",
        "145b64b9588c123d2bd00981c5ce8e03215ed2ee"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 13:58:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 13:58:11 2010 -0700"
      },
      "message": "Merge branch \u0027kmemleak\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm\n\n* \u0027kmemleak\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm:\n  kmemleak: Fix typo in the comment\n  lib/scatterlist: Hook sg_kmalloc into kmemleak (v2)\n  kmemleak: Add DocBook style comments to kmemleak.c\n  kmemleak: Introduce a default off mode for kmemleak\n  kmemleak: Show more information for objects found by alias\n"
    },
    {
      "commit": "5f248c9c251c60af3403902b26e08de43964ea0b",
      "tree": "6d3328e72a7e4015a64017eb30be18095c6a3c64",
      "parents": [
        "f6cec0ae58c17522a7bc4e2f39dae19f199ab534",
        "dca332528bc69e05f67161e1ed59929633d5e63d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 11:26:52 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (96 commits)\n  no need for list_for_each_entry_safe()/resetting with superblock list\n  Fix sget() race with failing mount\n  vfs: don\u0027t hold s_umount over close_bdev_exclusive() call\n  sysv: do not mark superblock dirty on remount\n  sysv: do not mark superblock dirty on mount\n  btrfs: remove junk sb_dirt change\n  BFS: clean up the superblock usage\n  AFFS: wait for sb synchronization when needed\n  AFFS: clean up dirty flag usage\n  cifs: truncate fallout\n  mbcache: fix shrinker function return value\n  mbcache: Remove unused features\n  add f_flags to struct statfs(64)\n  pass a struct path to vfs_statfs\n  update VFS documentation for method changes.\n  All filesystems that need invalidate_inode_buffers() are doing that explicitly\n  convert remaining -\u003eclear_inode() to -\u003eevict_inode()\n  Make -\u003edrop_inode() just return whether inode needs to be dropped\n  fs/inode.c:clear_inode() is gone\n  fs/inode.c:evict() doesn\u0027t care about delete vs. non-delete paths now\n  ...\n\nFix up trivial conflicts in fs/nilfs2/super.c\n"
    },
    {
      "commit": "1989425a3aed215f1accd5d8019b18b345166a63",
      "tree": "edf01f8cddce137588a501d74eedb43e98911c62",
      "parents": [
        "0fc2f137226eff4c9dd90864dda5c237474c3ec5",
        "e32e78c5ee8aadef020fbaecbe6fb741ed9029fd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 21:02:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 21:02:42 2010 -0700"
      },
      "message": "Merge branch \u0027merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc\n\n* \u0027merge\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:\n  powerpc: fix build with make 3.82\n  Revert \"Input: appletouch - fix integer overflow issue\"\n  memblock: Fix memblock_is_region_reserved() to return a boolean\n  powerpc: Trim defconfigs\n  powerpc: fix i8042 module build error\n  sound/soc: mpc5200_psc_ac97: Use gpio pins for cold reset\n  powerpc/5200: add mpc5200_psc_ac97_gpio_reset\n"
    },
    {
      "commit": "d2997b1042ec150616c1963b5e5e919ffd0b0ebf",
      "tree": "c970746ad3d5c3e0ccbd1695d07144dbe4534ec4",
      "parents": [
        "966cca029f739716fbcc8068b8c6dfe381f86fc3"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Aug 09 17:20:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:04 2010 -0700"
      },
      "message": "hibernation: freeze swap at hibernation\n\nWhen taking a memory snapshot in hibernate_snapshot(), all (directly\ncalled) memory allocations use GFP_ATOMIC.  Hence swap misusage during\nhibernation never occurs.\n\nBut from a pessimistic point of view, there is no guarantee that no page\nallcation has __GFP_WAIT.  It is better to have a global indication \"we\nenter hibernation, don\u0027t use swap!\".\n\nThis patch tries to freeze new-swap-allocation during hibernation.  (All\nuser processes are frozenm so swapin is not a concern).\n\nThis way, no updates will happen to swap_map[] between\nhibernate_snapshot() and save_image().  Swap is thawed when swsusp_free()\nis called.  We can be assured that swap corruption will not occur.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Ondrej Zary \u003clinux@rainbow-software.org\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "966cca029f739716fbcc8068b8c6dfe381f86fc3",
      "tree": "838686762076c262c425e3dc09d0cda4e9e5e83d",
      "parents": [
        "979f867191f80e74713394cf8c0a3c1b3662b648"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Mon Aug 09 17:20:09 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:04 2010 -0700"
      },
      "message": "mm: fix corruption of hibernation caused by reusing swap during image saving\n\nSince 2.6.31, swap_map[]\u0027s refcounting was changed to show that a used\nswap entry is just for swap-cache, can be reused.  Then, while scanning\nfree entry in swap_map[], a swap entry may be able to be reclaimed and\nreused.  It was caused by commit c9e444103b5e7a5 (\"mm: reuse unused swap\nentry if necessary\").\n\nBut this caused deta corruption at resume. The scenario is\n\n- Assume a clean-swap cache, but mapped.\n\n- at hibernation_snapshot[], clean-swap-cache is saved as\n  clean-swap-cache and swap_map[] is marked as SWAP_HAS_CACHE.\n\n- then, save_image() is called.  And reuse SWAP_HAS_CACHE entry to save\n  image, and break the contents.\n\nAfter resume:\n\n- the memory reclaim runs and finds clean-not-referenced-swap-cache and\n  discards it because it\u0027s marked as clean.  But here, the contents on\n  disk and swap-cache is inconsistent.\n\nHance memory is corrupted.\n\nThis patch avoids the bug by not reclaiming swap-entry during hibernation.\nThis is a quick fix for backporting.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nReported-by: Ondreg Zary \u003clinux@rainbow-software.org\u003e\nTested-by: Ondreg Zary \u003clinux@rainbow-software.org\u003e\nTested-by: Andrea Gelmini \u003candrea.gelmini@gmail.com\u003e\nAcked-by: Hugh Dickins \u003chughd@google.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d9f8984c2c23b91e202a764fe4b15041a29a201a",
      "tree": "d211f4ee42c5c0859f30d26296d053aac8df3657",
      "parents": [
        "e31f3698cd3499e676f6b0ea12e3528f569c4fa3"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Mon Aug 09 17:20:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:03 2010 -0700"
      },
      "message": "ksm: cleanup for mm_slots_hash\n\nUse compile-allocated memory instead of dynamic allocated memory for\nmm_slots_hash.\n\nUse hash_ptr() instead divisions for bucket calculation.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e31f3698cd3499e676f6b0ea12e3528f569c4fa3",
      "tree": "0133cc0e11384c7293bdf0812ee04996a02c8826",
      "parents": [
        "51980ac9e72fb5f22c81b7798d65b691125d70ee"
      ],
      "author": {
        "name": "Wu Fengguang",
        "email": "fengguang.wu@intel.com",
        "time": "Mon Aug 09 17:20:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:03 2010 -0700"
      },
      "message": "vmscan: raise the bar to PAGEOUT_IO_SYNC stalls\n\nFix \"system goes unresponsive under memory pressure and lots of\ndirty/writeback pages\" bug.\n\n\thttp://lkml.org/lkml/2010/4/4/86\n\nIn the above thread, Andreas Mohr described that\n\n\tInvoking any command locked up for minutes (note that I\u0027m\n\ttalking about attempted additional I/O to the _other_,\n\t_unaffected_ main system HDD - such as loading some shell\n\tbinaries -, NOT the external SSD18M!!).\n\nThis happens when the two conditions are both meet:\n- under memory pressure\n- writing heavily to a slow device\n\nOOM also happens in Andreas\u0027 system.  The OOM trace shows that 3 processes\nare stuck in wait_on_page_writeback() in the direct reclaim path.  One in\ndo_fork() and the other two in unix_stream_sendmsg().  They are blocked on\nthis condition:\n\n\t(sc-\u003eorder \u0026\u0026 priority \u003c DEF_PRIORITY - 2)\n\nwhich was introduced in commit 78dc583d (vmscan: low order lumpy reclaim\nalso should use PAGEOUT_IO_SYNC) one year ago.  That condition may be too\npermissive.  In Andreas\u0027 case, 512MB/1024 \u003d 512KB.  If the direct reclaim\nfor the order-1 fork() allocation runs into a range of 512KB\nhard-to-reclaim LRU pages, it will be stalled.\n\nIt\u0027s a severe problem in three ways.\n\nFirstly, it can easily happen in daily desktop usage.  vmscan priority can\neasily go below (DEF_PRIORITY - 2) on _local_ memory pressure.  Even if\nthe system has 50% globally reclaimable pages, it still has good\nopportunity to have 0.1% sized hard-to-reclaim ranges.  For example, a\nsimple dd can easily create a big range (up to 20%) of dirty pages in the\nLRU lists.  And order-1 to order-3 allocations are more than common with\nSLUB.  Try \"grep -v \u00271 :\u0027 /proc/slabinfo\" to get the list of high order\nslab caches.  For example, the order-1 radix_tree_node slab cache may\nstall applications at swap-in time; the order-3 inode cache on most\nfilesystems may stall applications when trying to read some file; the\norder-2 proc_inode_cache may stall applications when trying to open a\n/proc file.\n\nSecondly, once triggered, it will stall unrelated processes (not doing IO\nat all) in the system.  This \"one slow USB device stalls the whole system\"\navalanching effect is very bad.\n\nThirdly, once stalled, the stall time could be intolerable long for the\nusers.  When there are 20MB queued writeback pages and USB 1.1 is writing\nthem in 1MB/s, wait_on_page_writeback() will stuck for up to 20 seconds.\nNot to mention it may be called multiple times.\n\nSo raise the bar to only enable PAGEOUT_IO_SYNC when priority goes below\nDEF_PRIORITY/3, or 6.25% LRU size.  As the default dirty throttle ratio is\n20%, it will hardly be triggered by pure dirty pages.  We\u0027d better treat\nPAGEOUT_IO_SYNC as some last resort workaround -- its stall time is so\nuncomfortably long (easily goes beyond 1s).\n\nThe bar is only raised for (order \u003c PAGE_ALLOC_COSTLY_ORDER) allocations,\nwhich are easy to satisfy in 1TB memory boxes.  So, although 6.25% of\nmemory could be an awful lot of pages to scan on a system with 1TB of\nmemory, it won\u0027t really have to busy scan that much.\n\nAndreas tested an older version of this patch and reported that it mostly\nfixed his problem.  Mel Gorman helped improve it and KOSAKI Motohiro will\nfix it further in the next patch.\n\nReported-by: Andreas Mohr \u003candi@lisas.de\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Wu Fengguang \u003cfengguang.wu@intel.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": "51980ac9e72fb5f22c81b7798d65b691125d70ee",
      "tree": "fc12938848882bd76f7420f28d723056d9e5518e",
      "parents": [
        "cc8e970c3ce4d98afa8eb02dbd2526ce57f7611a"
      ],
      "author": {
        "name": "Kulikov Vasiliy",
        "email": "segooon@gmail.com",
        "time": "Mon Aug 09 17:19:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:03 2010 -0700"
      },
      "message": "mm/vmalloc.c: check kmalloc() return value\n\nkmalloc() may fail, if so return -ENOMEM.\n\nSigned-off-by: Kulikov Vasiliy \u003csegooon@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cc8e970c3ce4d98afa8eb02dbd2526ce57f7611a",
      "tree": "621ce988444b6df6eb67058b05ca5ddef23f6103",
      "parents": [
        "e17613c39b8894c164df782d0508c27ca559c24b"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:03 2010 -0700"
      },
      "message": "memcg: add mm_vmscan_memcg_isolate tracepoint\n\nMemcg also need to trace page isolation information as global reclaim.\nThis patch does it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\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": "bdce6d9ebf52c1f6c23163d1a33320ce7c007f73",
      "tree": "6070de94cdece474e277d8878721421671e212eb",
      "parents": [
        "cf4dcc3e9b374e1b61a7c22faf868707ce78d6a9"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:03 2010 -0700"
      },
      "message": "memcg, vmscan: add memcg reclaim tracepoint\n\nMemcg also need to trace reclaim progress as direct reclaim.  This patch\nadd it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\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": "4dc4b3d971b23e12d483ba9f3b93b648c54b298a",
      "tree": "845cc8debe146f683510841982323c338eb10000",
      "parents": [
        "57250a5bf0f6ff68dc339572adbd881a11f366fa"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:03 2010 -0700"
      },
      "message": "vmscan: shrink_slab() requires the number of lru_pages, not the page order\n\nPresently shrink_slab() has the following scanning equation.\n\n                            lru_scanned        max_pass\n  basic_scan_objects \u003d 4 x -------------  x -----------------------------\n                            lru_pages        shrinker-\u003eseeks (default:2)\n\n  scan_objects \u003d min(basic_scan_objects, max_pass * 2)\n\nIf we pass very small value as lru_pages instead real number of lru pages,\nshrink_slab() drop much objects rather than necessary.  And now,\n__zone_reclaim() pass \u0027order\u0027 as lru_pages by mistake.  That produces a\nbad result.\n\nFor example, if we receive very low memory pressure (scan \u003d 32, order \u003d\n0), shrink_slab() via zone_reclaim() always drop _all_ icache/dcache\nobjects.  (see above equation, very small lru_pages make very big\nscan_objects result).\n\nThis patch fixes it.\n\n[akpm@linux-foundation.org: fix layout, typos]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57250a5bf0f6ff68dc339572adbd881a11f366fa",
      "tree": "ef11c141a9f89403bcd4b1fc705d672c0ff41818",
      "parents": [
        "58c37f6e0dfaaab85a3c11fcbf24451dfe70c721"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Mon Aug 09 17:19:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:03 2010 -0700"
      },
      "message": "mmu-notifiers: remove mmu notifier calls in apply_to_page_range()\n\nIt is not appropriate for apply_to_page_range() to directly call any mmu\nnotifiers, because it is a general purpose function whose effect depends\non what context it is called in and what the callback function does.\n\nIn particular, if it is being used as part of an mmu notifier\nimplementation, the recursive calls can be particularly problematic.\n\nIt is up to apply_to_page_range\u0027s caller to do any notifier calls if\nnecessary.  It does not affect any in-tree users because they all operate\non init_mm, and mmu notifiers only pertain to usermode mappings.\n\n[stefano.stabellini@eu.citrix.com: remove unused local `start\u0027]\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nSigned-off-by: Stefano Stabellini \u003cstefano.stabellini@eu.citrix.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Stefano Stabellini \u003cstefano.stabellini@eu.citrix.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "58c37f6e0dfaaab85a3c11fcbf24451dfe70c721",
      "tree": "f1d6f6299059e5aa5fc3668ef9f561605491deb3",
      "parents": [
        "15748048991e801a2d18ce5da4e0d528852bc106"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:51 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "vmscan: protect reading of reclaim_stat with lru_lock\n\nRik van Riel pointed out reading reclaim_stat should be protected\nlru_lock, otherwise vmscan might sweep 2x much pages.\n\nThis fault was introduced by\n\n  commit 4f98a2fee8acdb4ac84545df98cccecfd130f8db\n  Author: Rik van Riel \u003criel@redhat.com\u003e\n  Date:   Sat Oct 18 20:26:32 2008 -0700\n\n    vmscan: split LRU lists into anon \u0026 file sets\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-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": "15748048991e801a2d18ce5da4e0d528852bc106",
      "tree": "e31dcdf36bbcfdd1c78546637d59faa963597bac",
      "parents": [
        "7ee92255470daa0edb93866aec6e27534cd9a177"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:50 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "vmscan: avoid subtraction of unsigned types\n\n\u0027slab_reclaimable\u0027 and \u0027nr_pages\u0027 are unsigned.  Subtraction is unsafe\nbecause negative results would be misinterpreted.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a5b489b870def9a93f5e89dac03ebe136f901db",
      "tree": "df7f0acfdb81ce0d77b78ff4d131c40472731994",
      "parents": [
        "ad8c2ee801ad7a52d919b478d9b2c7b39a72d295"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Aug 09 17:19:49 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "mm: set VM_FAULT_WRITE in do_swap_page()\n\nSet the flag if do_swap_page is decowing the page the same way do_wp_page\nwould too.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ad8c2ee801ad7a52d919b478d9b2c7b39a72d295",
      "tree": "bc56cc023da3467447b0aecd30c0516881d53992",
      "parents": [
        "51b1bd2ace1595b72956224deda349efa880b693"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Mon Aug 09 17:19:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "rmap: add exclusive page to private anon_vma on swapin\n\nOn swapin it is fairly common for a page to be owned exclusively by one\nprocess.  In that case we want to add the page to the anon_vma of that\nprocess\u0027s VMA, instead of to the root anon_vma.\n\nThis will reduce the amount of rmap searching that the swapout code needs\nto do.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@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": "a63d83f427fbce97a6cea0db2e64b0eb8435cd10",
      "tree": "8ac229cdf6e2289d97e82e35774057106fe7f4a2",
      "parents": [
        "74bcbf40546bb7500f2a7ba4ff3cc056a6bd004a"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:19:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: badness heuristic rewrite\n\nThis a complete rewrite of the oom killer\u0027s badness() heuristic which is\nused to determine which task to kill in oom conditions.  The goal is to\nmake it as simple and predictable as possible so the results are better\nunderstood and we end up killing the task which will lead to the most\nmemory freeing while still respecting the fine-tuning from userspace.\n\nInstead of basing the heuristic on mm-\u003etotal_vm for each task, the task\u0027s\nrss and swap space is used instead.  This is a better indication of the\namount of memory that will be freeable if the oom killed task is chosen\nand subsequently exits.  This helps specifically in cases where KDE or\nGNOME is chosen for oom kill on desktop systems instead of a memory\nhogging task.\n\nThe baseline for the heuristic is a proportion of memory that each task is\ncurrently using in memory plus swap compared to the amount of \"allowable\"\nmemory.  \"Allowable,\" in this sense, means the system-wide resources for\nunconstrained oom conditions, the set of mempolicy nodes, the mems\nattached to current\u0027s cpuset, or a memory controller\u0027s limit.  The\nproportion is given on a scale of 0 (never kill) to 1000 (always kill),\nroughly meaning that if a task has a badness() score of 500 that the task\nconsumes approximately 50% of allowable memory resident in RAM or in swap\nspace.\n\nThe proportion is always relative to the amount of \"allowable\" memory and\nnot the total amount of RAM systemwide so that mempolicies and cpusets may\noperate in isolation; they shall not need to know the true size of the\nmachine on which they are running if they are bound to a specific set of\nnodes or mems, respectively.\n\nRoot tasks are given 3% extra memory just like __vm_enough_memory()\nprovides in LSMs.  In the event of two tasks consuming similar amounts of\nmemory, it is generally better to save root\u0027s task.\n\nBecause of the change in the badness() heuristic\u0027s baseline, it is also\nnecessary to introduce a new user interface to tune it.  It\u0027s not possible\nto redefine the meaning of /proc/pid/oom_adj with a new scale since the\nABI cannot be changed for backward compatability.  Instead, a new tunable,\n/proc/pid/oom_score_adj, is added that ranges from -1000 to +1000.  It may\nbe used to polarize the heuristic such that certain tasks are never\nconsidered for oom kill while others may always be considered.  The value\nis added directly into the badness() score so a value of -500, for\nexample, means to discount 50% of its memory consumption in comparison to\nother tasks either on the system, bound to the mempolicy, in the cpuset,\nor sharing the same memory controller.\n\n/proc/pid/oom_adj is changed so that its meaning is rescaled into the\nunits used by /proc/pid/oom_score_adj, and vice versa.  Changing one of\nthese per-task tunables will rescale the value of the other to an\nequivalent meaning.  Although /proc/pid/oom_adj was originally defined as\na bitshift on the badness score, it now shares the same linear growth as\n/proc/pid/oom_score_adj but with different granularity.  This is required\nso the ABI is not broken with userspace applications and allows oom_adj to\nbe deprecated for future removal.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cef1d3523d33ebc35fc29e454b1f4bab953fabbf",
      "tree": "3688cf9e7c3b1bd4e1d473d79fd1a959bd4306fb",
      "parents": [
        "93b43fa55088fe977503a156d1097cc2055449a2"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: multi threaded process coredump don\u0027t make deadlock\n\nOleg pointed out current PF_EXITING check is wrong. Because PF_EXITING\nis per-thread flag, not per-process flag. He said,\n\n   Two threads, group-leader L and its sub-thread T. T dumps the code.\n   In this case both threads have -\u003emm !\u003d NULL, L has PF_EXITING.\n\n   The first problem is, select_bad_process() always return -1 in this\n   case (even if the caller is T, this doesn\u0027t matter).\n\n   The second problem is that we should add TIF_MEMDIE to T, not L.\n\nI think we can remove this dubious PF_EXITING check. but as first step,\nThis patch add the protection of multi threaded issue.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.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": "93b43fa55088fe977503a156d1097cc2055449a2",
      "tree": "32c688e20c3ac9b30edd9c240c98f2f779b20e67",
      "parents": [
        "19b4586cd9c8ed642798902e55c6f61ed576ad93"
      ],
      "author": {
        "name": "Luis Claudio R. Goncalves",
        "email": "lclaudio@uudg.org",
        "time": "Mon Aug 09 17:19:41 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: give the dying task a higher priority\n\nIn a system under heavy load it was observed that even after the\noom-killer selects a task to die, the task may take a long time to die.\n\nRight after sending a SIGKILL to the task selected by the oom-killer this\ntask has its priority increased so that it can exit() soon, freeing\nmemory.  That is accomplished by:\n\n        /*\n         * We give our sacrificial lamb high priority and access to\n         * all the memory it needs. That way it should be able to\n         * exit() and clear out its resources quickly...\n         */\n \tp-\u003ert.time_slice \u003d HZ;\n \tset_tsk_thread_flag(p, TIF_MEMDIE);\n\nIt sounds plausible giving the dying task an even higher priority to be\nsure it will be scheduled sooner and free the desired memory.  It was\nsuggested on LKML using SCHED_FIFO:1, the lowest RT priority so that this\ntask won\u0027t interfere with any running RT task.\n\nIf the dying task is already an RT task, leave it untouched.  Another good\nsuggestion, implemented here, was to avoid boosting the dying task\npriority in case of mem_cgroup OOM.\n\nSigned-off-by: Luis Claudio R. Goncalves \u003clclaudio@uudg.org\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "19b4586cd9c8ed642798902e55c6f61ed576ad93",
      "tree": "9db6c100cbb1337b584e0b7011ee1c736a210cd0",
      "parents": [
        "df1090a8dda40b6e11d8cd09e8fc900cfe913b38"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:02 2010 -0700"
      },
      "message": "oom: remove child-\u003emm check from oom_kill_process()\n\nThe current \"child-\u003emm \u003d\u003d p-\u003emm\" check prevents selection of vfork()ed\ntask.  But we don\u0027t have any reason to don\u0027t consider vfork().\n\nRemoved.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "df1090a8dda40b6e11d8cd09e8fc900cfe913b38",
      "tree": "9bc8a81f66a0a3a8c29685fba7389378fe9f768c",
      "parents": [
        "a96cfd6e9176ad442233001b7d15e9ed42234320"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:39 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: cleanup has_intersects_mems_allowed()\n\npresently has_intersects_mems_allowed() has own thread iterate logic, but\nit should use while_each_thread().\n\nIt slightly improve the code readability.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "a96cfd6e9176ad442233001b7d15e9ed42234320",
      "tree": "6aa70841f3f2c3ff39a75d0014b9a235810ccd08",
      "parents": [
        "113e27f36dff9895049df324f292474854750d21"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:38 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: move OOM_DISABLE check from oom_kill_task to out_of_memory()\n\nPresently if oom_kill_allocating_task is enabled and current have\nOOM_DISABLED, following printk in oom_kill_process is called twice.\n\n    pr_err(\"%s: Kill process %d (%s) score %lu or sacrifice child\\n\",\n            message, task_pid_nr(p), p-\u003ecomm, points);\n\nSo, OOM_DISABLE check should be more early.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "113e27f36dff9895049df324f292474854750d21",
      "tree": "5e4e0bcee4d26ff15123d10d7d86db1eb1c382c8",
      "parents": [
        "26ebc984913b6a8d86d724b3a79d2ed4ed574612"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:37 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: kill duplicate OOM_DISABLE check\n\nselect_bad_process() and badness() have the same OOM_DISABLE check.  This\npatch kills one.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "26ebc984913b6a8d86d724b3a79d2ed4ed574612",
      "tree": "9d293c6f8b1bc5120beaa173590dcd83cd0e2eb0",
      "parents": [
        "f88ccad5886d5a864b8b0d48c666ee9998dec53f"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:37 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: /proc/\u003cpid\u003e/oom_score treat kernel thread honestly\n\nIf a kernel thread is using use_mm(), badness() returns a positive value.\nThis is not a big issue because caller take care of it correctly.  But\nthere is one exception, /proc/\u003cpid\u003e/oom_score calls badness() directly and\ndoesn\u0027t care that the task is a regular process.\n\nAnother example, /proc/1/oom_score return !0 value.  But it\u0027s unkillable.\nThis incorrectness makes administration a little confusing.\n\nThis patch fixes it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "f88ccad5886d5a864b8b0d48c666ee9998dec53f",
      "tree": "fc6da2064c660a270cff82bb2f97f21ce537a369",
      "parents": [
        "ab290adbaf8f46770f014ea87968de5baca29c30"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:36 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: oom_kill_process() needs to check that p is unkillable\n\nWhen oom_kill_allocating_task is enabled, an argument task of\noom_kill_process is not selected by select_bad_process(), It\u0027s just\nout_of_memory() caller task.  It mean the task can be unkillable.  check\nit first.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "ab290adbaf8f46770f014ea87968de5baca29c30",
      "tree": "e6d9673a76ed7804d0b3ff858c2ac401971c1560",
      "parents": [
        "2c5ea53ce46ebb232e0d9a475fdd2b166d2a516b"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: make oom_unkillable_task() helper function\n\nPresently we have the same task check in two places. Unify it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "2c5ea53ce46ebb232e0d9a475fdd2b166d2a516b",
      "tree": "0dc0883ee29201600ec3950142d69f9860af2527",
      "parents": [
        "7c59aec830c7ed6c745bd513982cee3563ed20c1"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:34 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:01 2010 -0700"
      },
      "message": "oom: oom_kill_process() doesn\u0027t select kthread child\n\nPresently select_bad_process() has a PF_KTHREAD check, but\noom_kill_process doesn\u0027t.  It mean oom_kill_process() may choose wrong\ntask, especially, when the child are using use_mm().\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "7c59aec830c7ed6c745bd513982cee3563ed20c1",
      "tree": "f06d2c626d0ab0ff2f9880d98a50e60be4af7816",
      "parents": [
        "1489fa14cb757b496c8fa2b63097dbcee6690695"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "oom: don\u0027t try to kill oom_unkillable child\n\nPresently, badness() doesn\u0027t care about either CPUSET nor mempolicy.  Then\nif the victim child process have disjoint nodemask, OOM Killer might kill\ninnocent process.\n\nThis patch fixes it.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "1489fa14cb757b496c8fa2b63097dbcee6690695",
      "tree": "288905eab717db3cf1f6b7419e1989e89411ce04",
      "parents": [
        "abe4c3b50c3f25cb1baf56036024860f12f96015"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Aug 09 17:19:33 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: update isolated page counters outside of main path in shrink_inactive_list()\n\nWhen shrink_inactive_list() isolates pages, it updates a number of\ncounters using temporary variables to gather them.  These consume stack\nand it\u0027s in the main path that calls -\u003ewritepage().  This patch moves the\naccounting updates outside of the main path to reduce stack usage.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "abe4c3b50c3f25cb1baf56036024860f12f96015",
      "tree": "20ac47ac168b30f1dde6773d103ed13432802049",
      "parents": [
        "666356297ec4e9e6594c6008803f2b1403ff7950"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Aug 09 17:19:31 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: set up pagevec as late as possible in shrink_page_list()\n\nshrink_page_list() sets up a pagevec to release pages as according as they\nare free.  It uses significant amounts of stack on the pagevec.  This\npatch adds pages to be freed via pagevec to a linked list which is then\nfreed en-masse at the end.  This avoids using stack in the main path that\npotentially calls writepage().\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "666356297ec4e9e6594c6008803f2b1403ff7950",
      "tree": "aaa1e60f81588d0d90c2279c9812a32e5a085a27",
      "parents": [
        "d4debc66d1fc1b98a68081c4c8156f171841dca8"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Aug 09 17:19:30 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: set up pagevec as late as possible in shrink_inactive_list()\n\nshrink_inactive_list() sets up a pagevec to release unfreeable pages.  It\nuses significant amounts of stack doing this.  This patch splits\nshrink_inactive_list() to take the stack usage out of the main path so\nthat callers to writepage() do not contain an unused pagevec on the stack.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d4debc66d1fc1b98a68081c4c8156f171841dca8",
      "tree": "35bc1d2212e3c70ded11d31d28698fee0beeb3b2",
      "parents": [
        "e247dbce5cc747a714e8dcbd6b3f442cc2a284cf"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Aug 09 17:19:29 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: remove unnecessary temporary vars in do_try_to_free_pages\n\nRemove temporary variable that is only used once and does not help clarify\ncode.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e247dbce5cc747a714e8dcbd6b3f442cc2a284cf",
      "tree": "9ade331a0be10aab1a67160b6feebc2ef06d5878",
      "parents": [
        "25edde0332916ae706ccf83de688be57bcc844b7"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:28 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: simplify shrink_inactive_list()\n\nNow, max_scan of shrink_inactive_list() is always passed less than\nSWAP_CLUSTER_MAX.  then, we can remove scanning pages loop in it.  This\npatch also help stack diet.\n\ndetail\n - remove \"while (nr_scanned \u003c max_scan)\" loop\n - remove nr_freed (now, we use nr_reclaimed directly)\n - remove nr_scan (now, we use nr_scanned directly)\n - rename max_scan to nr_to_scan\n - pass nr_to_scan into isolate_pages() directly instead\n   using SWAP_CLUSTER_MAX\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "25edde0332916ae706ccf83de688be57bcc844b7",
      "tree": "35a5b0e651f9cdb48d9a55a748970339c4f681bc",
      "parents": [
        "b898cc70019ce1835bbf6c47bdf978adc36faa42"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:27 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: kill prev_priority completely\n\nSince 2.6.28 zone-\u003eprev_priority is unused. Then it can be removed\nsafely. It reduce stack usage slightly.\n\nNow I have to say that I\u0027m sorry. 2 years ago, I thought prev_priority\ncan be integrate again, it\u0027s useful. but four (or more) times trying\nhaven\u0027t got good performance number. Thus I give up such approach.\n\nThe rest of this changelog is notes on prev_priority and why it existed in\nthe first place and why it might be not necessary any more. This information\nis based heavily on discussions between Andrew Morton, Rik van Riel and\nKosaki Motohiro who is heavily quotes from.\n\nHistorically prev_priority was important because it determined when the VM\nwould start unmapping PTE pages. i.e. there are no balances of note within\nthe VM, Anon vs File and Mapped vs Unmapped. Without prev_priority, there\nis a potential risk of unnecessarily increasing minor faults as a large\namount of read activity of use-once pages could push mapped pages to the\nend of the LRU and get unmapped.\n\nThere is no proof this is still a problem but currently it is not considered\nto be. Active files are not deactivated if the active file list is smaller\nthan the inactive list reducing the liklihood that file-mapped pages are\nbeing pushed off the LRU and referenced executable pages are kept on the\nactive list to avoid them getting pushed out by read activity.\n\nEven if it is a problem, prev_priority prev_priority wouldn\u0027t works\nnowadays. First of all, current vmscan still a lot of UP centric code. it\nexpose some weakness on some dozens CPUs machine. I think we need more and\nmore improvement.\n\nThe problem is, current vmscan mix up per-system-pressure, per-zone-pressure\nand per-task-pressure a bit. example, prev_priority try to boost priority to\nother concurrent priority. but if the another task have mempolicy restriction,\nit is unnecessary, but also makes wrong big latency and exceeding reclaim.\nper-task based priority + prev_priority adjustment make the emulation of\nper-system pressure. but it have two issue 1) too rough and brutal emulation\n2) we need per-zone pressure, not per-system.\n\nAnother example, currently DEF_PRIORITY is 12. it mean the lru rotate about\n2 cycle (1/4096 + 1/2048 + 1/1024 + .. + 1) before invoking OOM-Killer.\nbut if 10,0000 thrreads enter DEF_PRIORITY reclaim at the same time, the\nsystem have higher memory pressure than priority\u003d\u003d0 (1/4096*10,000 \u003e 2).\nprev_priority can\u0027t solve such multithreads workload issue. In other word,\nprev_priority concept assume the sysmtem don\u0027t have lots threads.\"\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nReviewed-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReviewed-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "755f0225e8347b23a33ee6e3fb14a35310f95766",
      "tree": "23489e9f52f1435c7b8bc4da8e98d607460e4e23",
      "parents": [
        "a8a94d151521b248727c1f88756174e15260815a"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Aug 09 17:19:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:45:00 2010 -0700"
      },
      "message": "vmscan: tracing: add trace event when a page is written\n\nAdd a trace event for when page reclaim queues a page for IO and records\nwhether it is synchronous or asynchronous.  Excessive synchronous IO for a\nprocess can result in noticeable stalls during direct reclaim.  Excessive\nIO from page reclaim may indicate that the system is seriously under\nprovisioned for the amount of dirty pages that exist.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a8a94d151521b248727c1f88756174e15260815a",
      "tree": "81ea18e9c52f6260f9b52b16e592cc89bfd9d260",
      "parents": [
        "33906bc5c87b50028364405ec425de9638afc719"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Aug 09 17:19:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "vmscan: tracing: add trace events for LRU page isolation\n\nAdd an event for when pages are isolated en-masse from the LRU lists.\nThis event augments the information available on LRU traffic and can be\nused to evaluate lumpy reclaim.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "33906bc5c87b50028364405ec425de9638afc719",
      "tree": "d5d6f431bd517a4a914972f3ce968dc99de73694",
      "parents": [
        "c6a8a8c589b53f90854a07db3b5806ce111e826b"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Mon Aug 09 17:19:16 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "vmscan: tracing: add trace events for kswapd wakeup, sleeping and direct reclaim\n\nAdd two trace events for kswapd waking up and going asleep for the\npurposes of tracking kswapd activity and two trace events for direct\nreclaim beginning and ending.  The information can be used to work out how\nmuch time a process or the system is spending on the reclamation of pages\nand in the case of direct reclaim, how many pages were reclaimed for that\nprocess.  High frequency triggering of these events could point to memory\npressure problems.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c6a8a8c589b53f90854a07db3b5806ce111e826b",
      "tree": "c806b2f0d8f6f5b315f94daf864999b273d9530f",
      "parents": [
        "b00d3ea7cfe44e177ad5cd8141209d46478a7a51"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:14 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "vmscan: recalculate lru_pages on each priority\n\nshrink_zones() need relatively long time and lru_pages can change\ndramatically during shrink_zones().  So lru_pages should be recalculated\nfor each priority.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b00d3ea7cfe44e177ad5cd8141209d46478a7a51",
      "tree": "3508bd3106e6a83decd6e0db7521180e11d4754e",
      "parents": [
        "f446daaea9d4a420d16c606f755f3689dcb2d0ce"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "vmscan: zone_reclaim don\u0027t call disable_swap_token()\n\nSwap token don\u0027t works when zone reclaim is enabled since it was born.\nBecause __zone_reclaim() always call disable_swap_token() unconditionally.\n\nThis kill swap token feature completely.  As far as I know, nobody want to\nthat.  Remove it.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nReviewed-by: Minchan Kim \u003cminchan.kim@gmail.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": "f446daaea9d4a420d16c606f755f3689dcb2d0ce",
      "tree": "be2afc18f79aa4ff9be245b0a036aa06185b5dc4",
      "parents": [
        "ebf8aa44beed48cd17893a83d92a4403e5f9d9e2"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Mon Aug 09 17:19:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "mm: implement writeback livelock avoidance using page tagging\n\nWe try to avoid livelocks of writeback when some steadily creates dirty\npages in a mapping we are writing out.  For memory-cleaning writeback,\nusing nr_to_write works reasonably well but we cannot really use it for\ndata integrity writeback.  This patch tries to solve the problem.\n\nThe idea is simple: Tag all pages that should be written back with a\nspecial tag (TOWRITE) in the radix tree.  This can be done rather quickly\nand thus livelocks should not happen in practice.  Then we start doing the\nhard work of locking pages and sending them to disk only for those pages\nthat have TOWRITE tag set.\n\nNote: Adding new radix tree tag grows radix tree node from 288 to 296\nbytes for 32-bit archs and from 552 to 560 bytes for 64-bit archs.\nHowever, the number of slab/slub items per page remains the same (13 and 7\nrespectively).\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Theodore Ts\u0027o \u003ctytso@mit.edu\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "44ab57a06ded284db6ccdefc6b76eddb1c34d7ed",
      "tree": "e757c1af6be102b90d8a989d6fcfacad93ff6b69",
      "parents": [
        "21d0d443cdc1658a8c1484fdcece4803f0f96d0e"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Aug 09 17:19:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "rmap: add anon_vma bug checks\n\nVerify the refcounting doesn\u0027t go wrong, and resurrect the check in\n__page_check_anon_rmap as in old anon-vma code.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.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": "21d0d443cdc1658a8c1484fdcece4803f0f96d0e",
      "tree": "1ee41c66f24972ed427ce43780cb53efca82dcaf",
      "parents": [
        "288468c334e98aacbb7e2fb8bde6bc1adcd55e05"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Aug 09 17:19:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:59 2010 -0700"
      },
      "message": "rmap: resurrect page_address_in_vma anon_vma check\n\nWith root anon-vma it\u0027s trivial to keep doing the usual check as in\nold-anon-vma code.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.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": "288468c334e98aacbb7e2fb8bde6bc1adcd55e05",
      "tree": "f64cfebd7fedfd4e53fd5d4474048d5475a339b9",
      "parents": [
        "ba6f0ff3981e6263ab81ac512f04cca55b85ec81"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Aug 09 17:19:09 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:58 2010 -0700"
      },
      "message": "rmap: always use anon_vma root pointer\n\nAlways use anon_vma-\u003eroot pointer instead of anon_vma_chain.prev.\n\nAlso optimize the map-paths, if a mapping is already established no need\nto overwrite it with root anon-vma list, we can keep the more finegrined\nanon-vma and skip the overwrite: see the PageAnon check in !exclusive\ncase.  This is also the optimization that hidden the ksm bug as this tends\nto make ksm_might_need_to_copy skip the copy, but only the proper fix to\nksm_might_need_to_copy guarantees not triggering the ksm bug unless ksm is\nin use.  this is an optimization only...\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\n[kamezawa.hiroyu@jp.fujitsu.com: fix false positive BUG_ON in __page_set_anon_rmap]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "26ba0cb63cb8df4e45394227f33c938920b11b88",
      "tree": "131b785dc7fb0102ee4fc4f56a1ae948b9861501",
      "parents": [
        "5e549e989f94de0596b8149a90e0088e7d4d7c97"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Aug 09 17:19:08 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:58 2010 -0700"
      },
      "message": "rmap: always add new vmas at the end\n\nMake sure to always add new VMAs at the end of the list.  This is\nimportant so rmap_walk does not miss a VMA that was created during the\nrmap_walk.\n\nThe old code got this right most of the time due to luck, but was buggy\nwhen anon_vma_prepare reused a mergeable anon_vma.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.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": "5e549e989f94de0596b8149a90e0088e7d4d7c97",
      "tree": "2a20fdb475ea0320310a4a770da72cd54ea9347f",
      "parents": [
        "ff36b801624d02a876bb7deded6ab860ea3503f2"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "aarcange@redhat.com",
        "time": "Mon Aug 09 17:19:07 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:58 2010 -0700"
      },
      "message": "mmap: remove unnecessary lock from __vma_link\n\nThere\u0027s no anon-vma related mangling happening inside __vma_link anymore\nso no need of anon_vma locking there.\n\nSigned-off-by: Andrea Arcangeli \u003caarcange@redhat.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": "ff36b801624d02a876bb7deded6ab860ea3503f2",
      "tree": "a3f44d01de629234d70ad6211b9fd73fd705a76c",
      "parents": [
        "7e496299d4d2ad8083effed6c5a18313a919edc6"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Aug 09 17:19:06 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:58 2010 -0700"
      },
      "message": "shmem: reduce pagefault lock contention\n\nI\u0027m running a shmem pagefault test case (see attached file) under a 64 CPU\nsystem.  Profile shows shmem_inode_info-\u003elock is heavily contented and\n100% CPUs time are trying to get the lock.  In the pagefault (no swap)\ncase, shmem_getpage gets the lock twice, the last one is avoidable if we\nprealloc a page so we could reduce one time of locking.  This is what\nbelow patch does.\n\nThe result of the test case:\n2.6.35-rc3: ~20s\n2.6.35-rc3 + patch: ~12s\nso this is 40% improvement.\n\nOne might argue if we could have better locking for shmem.  But even shmem\nis lockless, the pagefault will soon have pagecache lock heavily contented\nbecause shmem must add new page to pagecache.  So before we have better\nlocking for pagecache, improving shmem locking doesn\u0027t have too much\nimprovement.  I did a similar pagefault test against a ramfs file, the\ntest result is ~10.5s.\n\n[akpm@linux-foundation.org: fix comment, clean up code layout, elimintate code duplication]\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nCc: \"Zhang, Yanmin\" \u003cyanmin.zhang@intel.com\u003e\nCc: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7e496299d4d2ad8083effed6c5a18313a919edc6",
      "tree": "8324a3fa378d28f6a63c8b5f5a86311e4eea3562",
      "parents": [
        "27f5e0f694fd0600274a76854636c0749e3bb1f6"
      ],
      "author": {
        "name": "Tim Chen",
        "email": "tim.c.chen@linux.intel.com",
        "time": "Mon Aug 09 17:19:05 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:58 2010 -0700"
      },
      "message": "tmpfs: make tmpfs scalable with percpu_counter for used blocks\n\nThe current implementation of tmpfs is not scalable.  We found that\nstat_lock is contended by multiple threads when we need to get a new page,\nleading to useless spinning inside this spin lock.\n\nThis patch makes use of the percpu_counter library to maintain local count\nof used blocks to speed up getting and returning of pages.  So the\nacquisition of stat_lock is unnecessary for getting and returning blocks,\nimproving the performance of tmpfs on system with large number of cpus.\nOn a 4 socket 32 core NHM-EX system, we saw improvement of 270%.\n\nThe implementation below has a slight chance of race between threads\ncausing a slight overshoot of the maximum configured blocks.  However, any\novershoot is small, and is bounded by the number of cpus.  This happens\nwhen the number of used blocks is slightly below the maximum configured\nblocks when a thread checks the used block count, and another thread\nallocates the last block before the current thread does.  This should not\nbe a problem for tmpfs, as the overshoot is most likely to be a few blocks\nand bounded.  If a strict limit is really desired, then configured the max\nblocks to be the limit less the number of cpus in system.\n\nSigned-off-by: Tim Chen \u003ctim.c.chen@linux.intel.com\u003e\nCc: Hugh Dickins \u003chughd@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4e60c86bd9e5a7110ed28874d0b6592186550ae8",
      "tree": "9fb60e9f49b44b293a0c0c7d9f40e1a354a22b5a",
      "parents": [
        "627295e492638936e76f3d8fcb1e0a3367b88341"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Mon Aug 09 17:19:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:58 2010 -0700"
      },
      "message": "gcc-4.6: mm: fix unused but set warnings\n\nNo real bugs, just some dead code and some fixups.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "596d7cfa2be6284512915609f01b7fe2f4df5d02",
      "tree": "7acfea30efdce5fb17da4302e567059bcae915eb",
      "parents": [
        "251060006003b79b788f8ce5a827ee5354a42910"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:19:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:58 2010 -0700"
      },
      "message": "mempolicy: reduce stack size of migrate_pages()\n\nmigrate_pages() is using \u003e500 bytes stack. Reduce it.\n\n   mm/mempolicy.c: In function \u0027sys_migrate_pages\u0027:\n   mm/mempolicy.c:1344: warning: the frame size of 528 bytes is larger than 512 bytes\n\n[akpm@linux-foundation.org: don\u0027t play with a might-be-NULL pointer]\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: 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": "31f961a89bd1cb9baaf32af4bd8b571ace3447b1",
      "tree": "add1380e479ff92ad92da090e606857162b88e66",
      "parents": [
        "0aad4b3124850e85fe54e610802f0917ce46a1ae"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Aug 09 17:18:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "mm: use for_each_online_cpu() in vmstat\n\nThe sum_vm_events passes cpumask for for_each_cpu().  But it\u0027s useless\nsince we have for_each_online_cpu.  Althougth it\u0027s tirival overhead, it\u0027s\nnot good about coding consistency.\n\nLet\u0027s use for_each_online_cpu instead of for_each_cpu with cpumask\nargument.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\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": "0aad4b3124850e85fe54e610802f0917ce46a1ae",
      "tree": "ebba56659dab4e285b87341d7639fda7a2db81e9",
      "parents": [
        "f44200320b10c76003101dee21c5f961e80faf0b"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "oom: fold __out_of_memory into out_of_memory\n\n__out_of_memory() only has a single caller, so fold it into\nout_of_memory() and add a comment about locking for its call to\noom_kill_process().\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-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": "f44200320b10c76003101dee21c5f961e80faf0b",
      "tree": "4c187867337cee9c02e08d926866669f27e4018c",
      "parents": [
        "ff321feac22313cf53ffceb69224b09ac19ff22b"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "oom: remove constraint argument from select_bad_process and __out_of_memory\n\nselect_bad_process() and __out_of_memory() doe not need their enum\noom_constraint arguments: it\u0027s possible to pass a NULL nodemask if\nconstraint \u003d\u003d CONSTRAINT_MEMORY_POLICY in the caller, out_of_memory().\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-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": "ff321feac22313cf53ffceb69224b09ac19ff22b",
      "tree": "101400fdee395944c2fa5f1f2b45cac54a5c1088",
      "parents": [
        "b940fd703572f7f9e5f894c682c91c3cbd84c11e"
      ],
      "author": {
        "name": "Minchan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Mon Aug 09 17:18:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "mm: rename try_set_zone_oom() to try_set_zonelist_oom()\n\nWe have been used naming try_set_zone_oom and clear_zonelist_oom.\nThe role of functions is to lock of zonelist for preventing parallel\nOOM. So clear_zonelist_oom makes sense but try_set_zone_oome is rather\nawkward and unmatched with clear_zonelist_oom.\n\nLet\u0027s change it with try_set_zonelist_oom.\n\nSigned-off-by: Minchan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-by: David Rientjes \u003crientjes@google.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": "b940fd703572f7f9e5f894c682c91c3cbd84c11e",
      "tree": "cbb1f23073373ba1c425762f38f6f0bf9decf278",
      "parents": [
        "8e4228e1edb922afa83366803a1e5b3fa8e987c2"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:57 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "oom: remove unnecessary code and cleanup\n\nRemove the redundancy in __oom_kill_task() since:\n\n - init can never be passed to this function: it will never be PF_EXITING\n   or selectable from select_bad_process(), and\n\n - it will never be passed a task from oom_kill_task() without an -\u003emm\n   and we\u0027re unconcerned about detachment from exiting tasks, there\u0027s no\n   reason to protect them against SIGKILL or access to memory reserves.\n\nAlso moves the kernel log message to a higher level since the verbosity is\nnot always emitted here; we need not print an error message if an exiting\ntask is given a longer timeslice.\n\n__oom_kill_task() only has a single caller, so it can be merged into that\nfunction at the same time.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@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": "e365893236ca78fa1fe2482ccbdc30e9abde6027",
      "tree": "36caf9177f592f0d3a93593b6a569be239aebf91",
      "parents": [
        "309ed882508cc471320ff79265e7340774d6746c"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:55 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "oom: remove special handling for pagefault ooms\n\nIt is possible to remove the special pagefault oom handler by simply oom\nlocking all system zones and then calling directly into out_of_memory().\n\nAll populated zones must have ZONE_OOM_LOCKED set, otherwise there is a\nparallel oom killing in progress that will lead to eventual memory freeing\nso it\u0027s not necessary to needlessly kill another task.  The context in\nwhich the pagefault is allocating memory is unknown to the oom killer, so\nthis is done on a system-wide level.\n\nIf a task has already been oom killed and hasn\u0027t fully exited yet, this\nwill be a no-op since select_bad_process() recognizes tasks across the\nsystem with TIF_MEMDIE set.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-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": "309ed882508cc471320ff79265e7340774d6746c",
      "tree": "28321b30bc420c62554ef6a705ec4bc70651b473",
      "parents": [
        "03668b3ceb0c7a95e09f1b6169f5270ffc1a19f6"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:57 2010 -0700"
      },
      "message": "oom: extract panic helper function\n\nThere are various points in the oom killer where the kernel must determine\nwhether to panic or not.  It\u0027s better to extract this to a helper function\nto remove all the confusion as to its semantics.\n\nAlso fix a call to dump_header() where tasklist_lock is not read- locked,\nas required.\n\nThere\u0027s no functional change with this patch.\n\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.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": "03668b3ceb0c7a95e09f1b6169f5270ffc1a19f6",
      "tree": "755ea207b968af12e195f6fb3e3b52b4d68e8630",
      "parents": [
        "ad915c432eccb482427c1bbd77c74e6f7bfe60b3"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: avoid oom killer for lowmem allocations\n\nIf memory has been depleted in lowmem zones even with the protection\nafforded to it by /proc/sys/vm/lowmem_reserve_ratio, it is unlikely that\nkilling current users will help.  The memory is either reclaimable (or\nmigratable) already, in which case we should not invoke the oom killer at\nall, or it is pinned by an application for I/O.  Killing such an\napplication may leave the hardware in an unspecified state and there is no\nguarantee that it will be able to make a timely exit.\n\nLowmem allocations are now failed in oom conditions when __GFP_NOFAIL is\nnot used so that the task can perhaps recover or try again later.\n\nPreviously, the heuristic provided some protection for those tasks with\nCAP_SYS_RAWIO, but this is no longer necessary since we will not be\nkilling tasks for the purposes of ISA allocations.\n\nhigh_zoneidx is gfp_zone(gfp_flags), meaning that ZONE_NORMAL will be the\ndefault for all allocations that are not __GFP_DMA, __GFP_DMA32,\n__GFP_HIGHMEM, and __GFP_MOVABLE on kernels configured to support those\nflags.  Testing for high_zoneidx being less than ZONE_NORMAL will only\nreturn true for allocations that have either __GFP_DMA or __GFP_DMA32.\n\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.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": "ad915c432eccb482427c1bbd77c74e6f7bfe60b3",
      "tree": "d93b536c48773527c8ae0312d6dcf45d57dd1b89",
      "parents": [
        "6f48d0ebd907ae419387f27b602ee98870cfa7bb"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:53 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: enable oom tasklist dump by default\n\nThe oom killer tasklist dump, enabled with the oom_dump_tasks sysctl, is\nvery helpful information in diagnosing why a user\u0027s task has been killed.\nIt emits useful information such as each eligible thread\u0027s memory usage\nthat can determine why the system is oom, so it should be enabled by\ndefault.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-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": "6f48d0ebd907ae419387f27b602ee98870cfa7bb",
      "tree": "355bd8b616f5a78d8adabe5b9631d7aad970dbaa",
      "parents": [
        "5e9d834a0e0c0485dfa487281ab9650fc37a3bb5"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:52 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: select task from tasklist for mempolicy ooms\n\nThe oom killer presently kills current whenever there is no more memory\nfree or reclaimable on its mempolicy\u0027s nodes.  There is no guarantee that\ncurrent is a memory-hogging task or that killing it will free any\nsubstantial amount of memory, however.\n\nIn such situations, it is better to scan the tasklist for nodes that are\nallowed to allocate on current\u0027s set of nodes and kill the task with the\nhighest badness() score.  This ensures that the most memory-hogging task,\nor the one configured by the user with /proc/pid/oom_adj, is always\nselected in such scenarios.\n\nSigned-off-by: David Rientjes \u003crientjes@google.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": "5e9d834a0e0c0485dfa487281ab9650fc37a3bb5",
      "tree": "b93cf4fd46b50b18f3fc118f1739a71dbdd8f340",
      "parents": [
        "6cf86ac6f36b638459a9a6c2576d5e655d41d451"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:51 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: sacrifice child with highest badness score for parent\n\nWhen a task is chosen for oom kill, the oom killer first attempts to\nsacrifice a child not sharing its parent\u0027s memory instead.  Unfortunately,\nthis often kills in a seemingly random fashion based on the ordering of\nthe selected task\u0027s child list.  Additionally, it is not guaranteed at all\nto free a large amount of memory that we need to prevent additional oom\nkilling in the very near future.\n\nInstead, we now only attempt to sacrifice the worst child not sharing its\nparent\u0027s memory, if one exists.  The worst child is indicated with the\nhighest badness() score.  This serves two advantages: we kill a\nmemory-hogging task more often, and we allow the configurable\n/proc/pid/oom_adj value to be considered as a factor in which child to\nkill.\n\nReviewers may observe that the previous implementation would iterate\nthrough the children and attempt to kill each until one was successful and\nthen the parent if none were found while the new code simply kills the\nmost memory-hogging task or the parent.  Note that the only time\noom_kill_task() fails, however, is when a child does not have an mm or has\na /proc/pid/oom_adj of OOM_DISABLE.  badness() returns 0 for both cases,\nso the final oom_kill_task() will always succeed.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "6cf86ac6f36b638459a9a6c2576d5e655d41d451",
      "tree": "177ae58393bfbc5a87eb64178d426e2ba4c95871",
      "parents": [
        "4358997ae38a1901498d128d6508119d9f318b36"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:50 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: filter tasks not sharing the same cpuset\n\nTasks that do not share the same set of allowed nodes with the task that\ntriggered the oom should not be considered as candidates for oom kill.\n\nTasks in other cpusets with a disjoint set of mems would be unfairly\npenalized otherwise because of oom conditions elsewhere; an extreme\nexample could unfairly kill all other applications on the system if a\nsingle task in a user\u0027s cpuset sets itself to OOM_DISABLE and then uses\nmore memory than allowed.\n\nKilling tasks outside of current\u0027s cpuset rarely would free memory for\ncurrent anyway.  To use a sane heuristic, we must ensure that killing a\ntask would likely free memory for current and avoid needlessly killing\nothers at all costs just because their potential memory freeing is\nunknown.  It is better to kill current than another task needlessly.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.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": "4358997ae38a1901498d128d6508119d9f318b36",
      "tree": "0c5a47808790e80a754b44aebe82c5c683811788",
      "parents": [
        "7b98c2e402eaa1f2beec18b1bde17f74948a19db"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:49 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: avoid sending exiting tasks a SIGKILL\n\nIt\u0027s unnecessary to SIGKILL a task that is already PF_EXITING and can\nactually cause a NULL pointer dereference of the sighand if it has already\nbeen detached.  Instead, simply set TIF_MEMDIE so it has access to memory\nreserves and can quickly exit as the comment implies.\n\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.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": "7b98c2e402eaa1f2beec18b1bde17f74948a19db",
      "tree": "a0d3920f84e981cca5be386e2cc5a6320c4d8bdc",
      "parents": [
        "c81fac5cb8c92b8b4795ac250a46c7514d1fce06"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:48 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: give current access to memory reserves if it has been killed\n\nIt\u0027s possible to livelock the page allocator if a thread has mm-\u003emmap_sem\nand fails to make forward progress because the oom killer selects another\nthread sharing the same -\u003emm to kill that cannot exit until the semaphore\nis dropped.\n\nThe oom killer will not kill multiple tasks at the same time; each oom\nkilled task must exit before another task may be killed.  Thus, if one\nthread is holding mm-\u003emmap_sem and cannot allocate memory, all threads\nsharing the same -\u003emm are blocked from exiting as well.  In the oom kill\ncase, that means the thread holding mm-\u003emmap_sem will never free\nadditional memory since it cannot get access to memory reserves and the\nthread that depends on it with access to memory reserves cannot exit\nbecause it cannot acquire the semaphore.  Thus, the page allocators\nlivelocks.\n\nWhen the oom killer is called and current happens to have a pending\nSIGKILL, this patch automatically gives it access to memory reserves and\nreturns.  Upon returning to the page allocator, its allocation will\nhopefully succeed so it can quickly exit and free its memory.  If not, the\npage allocator will fail the allocation if it is not __GFP_NOFAIL.\n\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.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": "c81fac5cb8c92b8b4795ac250a46c7514d1fce06",
      "tree": "2f2577d6813d0472b23359bcda8223edf0d7b396",
      "parents": [
        "74ab7f1d3f22ccb02f8b14f1f2375416b1ab0adb"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: dump_tasks use find_lock_task_mm too fix\n\nWhen find_lock_task_mm() returns a thread other than p in dump_tasks(),\nits name should be displayed instead.  This is the thread that will be\ntargeted by the oom killer, not its mm-less parent.\n\nThis also allows us to safely dereference task-\u003ecomm without needing\nget_task_comm().\n\nWhile we\u0027re here, remove the cast on task_cpu(task) as Andrew suggested.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "74ab7f1d3f22ccb02f8b14f1f2375416b1ab0adb",
      "tree": "94f7e6b0e77fe11f200941f97d1fc895dc950fde",
      "parents": [
        "c55db95788a2a55a77f5a3ced1e59578710440b2"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Mon Aug 09 17:18:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: improve commentary in dump_tasks()\n\nThe comments in dump_tasks() should be updated to be more clear about why\ntasks are filtered and how they are filtered by its argument.\n\nAn unnecessary comment concerning a check for is_global_init() is removed\nsince it isn\u0027t of importance.\n\nSuggested-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "c55db95788a2a55a77f5a3ced1e59578710440b2",
      "tree": "275a0c97bfe408ea926dfe14864e476d719859e9",
      "parents": [
        "dd8e8f405ca386c7ce7cbb996ccd985d283b0e03"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 09 17:18:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:56 2010 -0700"
      },
      "message": "oom: dump_tasks use find_lock_task_mm too\n\ndump_task() should use find_lock_task_mm() too. It is necessary for\nprotecting task-exiting race.\n\ndump_tasks() currently filters any task that does not have an attached\n-\u003emm since it incorrectly assumes that it must either be in the process of\nexiting and has detached its memory or that it\u0027s a kernel thread;\nmultithreaded tasks may actually have subthreads that have a valid -\u003emm\npointer and thus those threads should actually be displayed.  This change\nfinds those threads, if they exist, and emit their information along with\nthe rest of the candidate tasks for kill.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Oleg Nesterov \u003coleg@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": "dd8e8f405ca386c7ce7cbb996ccd985d283b0e03",
      "tree": "7863585871d44c0272eb0b93ee909392ee85eb99",
      "parents": [
        "b52279406e77be711c068f9a8e970ea6471e089c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Aug 09 17:18:45 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 09 20:44:55 2010 -0700"
      },
      "message": "oom: introduce find_lock_task_mm() to fix !mm false positives\n\nAlmost all -\u003emm \u003d\u003d NULL checks in oom_kill.c are wrong.\n\nThe current code assumes that the task without -\u003emm has already released\nits memory and ignores the process.  However this is not necessarily true\nwhen this process is multithreaded, other live sub-threads can use this\n-\u003emm.\n\n- Remove the \"if (!p-\u003emm)\" check in select_bad_process(), it is\n  just wrong.\n\n- Add the new helper, find_lock_task_mm(), which finds the live\n  thread which uses the memory and takes task_lock() to pin -\u003emm\n\n- change oom_badness() to use this helper instead of just checking\n  -\u003emm !\u003d NULL.\n\n- As David pointed out, select_bad_process() must never choose the\n  task without -\u003emm, but no matter what oom_badness() returns the\n  task can be chosen if nothing else has been found yet.\n\n  Change oom_badness() to return int, change it to return -1 if\n  find_lock_task_mm() fails, and change select_bad_process() to\n  check points \u003e\u003d 0.\n\nNote! This patch is not enough, we need more changes.\n\n\t- oom_badness() was fixed, but oom_kill_task() still ignores\n\t  the task without -\u003emm\n\n\t- oom_forkbomb_penalty() should use find_lock_task_mm() too,\n\t  and it also needs other changes to actually find the first\n\t  first-descendant children\n\nThis will be addressed later.\n\n[kosaki.motohiro@jp.fujitsu.com: use in badness(), __oom_kill_task()]\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.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"
    }
  ],
  "next": "b52279406e77be711c068f9a8e970ea6471e089c"
}
