)]}'
{
  "log": [
    {
      "commit": "14bac5acfdb6a40be64acc042c6db73f1a68f6a4",
      "tree": "5148a0440674ef618a5af4e1b549794db9f783c1",
      "parents": [
        "538f8ea6c85232d00bfa5edd9ba85f16c01057c9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Aug 20 14:09:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:32 2008 -0700"
      },
      "message": "mm: xip/ext2 fix block allocation race\n\nXIP can call into get_xip_mem concurrently with the same file,offset with\ncreate\u003d1.  This usually maps down to get_block, which expects the page\nlock to prevent such a situation.  This causes ext2 to explode for one\nreason or another.\n\nSerialise those calls for the moment.  For common usages today, I suspect\nget_xip_mem rarely is called to create new blocks.  In future as XIP\ntechnologies evolve we might need to look at which operations require\nscalability, and rework the locking to suit.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nAcked-by: Carsten Otte \u003ccotte@freenet.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "538f8ea6c85232d00bfa5edd9ba85f16c01057c9",
      "tree": "c1a4a49c0c7f16b4fe8ec560137084bf556efc50",
      "parents": [
        "479db0bf408e65baa14d2a9821abfcbc0804b847"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Aug 20 14:09:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:32 2008 -0700"
      },
      "message": "mm: xip fix fault vs sparse page invalidate race\n\nXIP has a race between sparse pages being inserted into page tables, and\nsparse pages being zapped when its time to put a non-sparse page in.\n\nWhat can happen is that a process can be left with a dangling sparse page\nin a MAP_SHARED mapping, while the rest of the world sees the non-sparse\nversion.  Ie.  data corruption.\n\nGuard these operations with a seqlock, making fault-in-sparse-pages the\nslowpath, and try-to-unmap-sparse-pages the fastpath.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nAcked-by: Carsten Otte \u003ccotte@freenet.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "479db0bf408e65baa14d2a9821abfcbc0804b847",
      "tree": "acdaaed567afefa36ac2fe27cfe22cfefeb50cd5",
      "parents": [
        "2d70b68d42b5196a48ccb639e3797f097ef5bea3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Aug 20 14:09:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:32 2008 -0700"
      },
      "message": "mm: dirty page tracking race fix\n\nThere is a race with dirty page accounting where a page may not properly\nbe accounted for.\n\nclear_page_dirty_for_io() calls page_mkclean; then TestClearPageDirty.\n\npage_mkclean walks the rmaps for that page, and for each one it cleans and\nwrite protects the pte if it was dirty.  It uses page_check_address to\nfind the pte.  That function has a shortcut to avoid the ptl if the pte is\nnot present.  Unfortunately, the pte can be switched to not-present then\nback to present by other code while holding the page table lock -- this\nshould not be a signal for page_mkclean to ignore that pte, because it may\nbe dirty.\n\nFor example, powerpc64\u0027s set_pte_at will clear a previously present pte\nbefore setting it to the desired value.  There may also be other code in\ncore mm or in arch which do similar things.\n\nThe consequence of the bug is loss of data integrity due to msync, and\nloss of dirty page accounting accuracy.  XIP\u0027s __xip_unmap could easily\nalso be unreliable (depending on the exact XIP locking scheme), which can\nlead to data corruption.\n\nFix this by having an option to always take ptl to check the pte in\npage_check_address.\n\nIt\u0027s possible to retain this optimization for page_referenced and\ntry_to_unmap.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jared Hulbert \u003cjaredeh@gmail.com\u003e\nCc: Carsten Otte \u003ccotte@freenet.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: 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": "481ebd0d76b501c5772f702ae31e55350c0858a3",
      "tree": "37f13727a66bf2cb10e4d8be7a608edf9cd5009e",
      "parents": [
        "a09f48551273ee89d4e9ae37474807dc2da1d757"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Wed Aug 20 14:09:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:31 2008 -0700"
      },
      "message": "bootmem: fix aligning of node-relative indexes and offsets\n\nAbsolute alignment requirements may never be applied to node-relative\noffsets.  Andreas Herrmann spotted this flaw when a bootmem allocation on\nan unaligned node was itself not aligned because the combination of an\nunaligned node with an aligned offset into that node is not garuanteed to\nbe aligned itself.\n\nThis patch introduces two helper functions that align a node-relative\nindex or offset with respect to the node\u0027s starting address so that the\nabsolute PFN or virtual address that results from combining the two\nsatisfies the requested alignment.\n\nThen all the broken ALIGN()s in alloc_bootmem_core() are replaced by these\nhelpers.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nReported-by: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nDebugged-by: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nReviewed-by: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nTested-by: Andreas Herrmann \u003candreas.herrmann3@amd.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "759f9a2df78d2156a2675edc7999fb4c919a3159",
      "tree": "b6e62a422245557fbb93e84a491b86a1773b3fee",
      "parents": [
        "07279cdfd964acc032de92a527cb11b1f40f35aa"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Wed Aug 20 14:09:06 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:30 2008 -0700"
      },
      "message": "mm: mminit_loglevel cannot be __meminitdata anymore\n\nmminit_loglevel is now used from mminit_verify_zonelist \u003c- build_all_zonelists \u003c-\n\n1. online_pages \u003c- memory_block_action \u003c- memory_block_change_state \u003c- store_mem_state (sys handler)\n2. numa_zonelist_order_handler (proc handler)\n\nso it cannot be annotated __meminit - drop it\n\nfixes following section mismatch warning:\nWARNING: vmlinux.o(.text+0x71628): Section mismatch in reference from the function mminit_verify_zonelist() to the variable .meminit.data:mminit_loglevel\nThe function mminit_verify_zonelist() references\nthe variable __meminitdata mminit_loglevel.\nThis is often because mminit_verify_zonelist lacks a __meminitdata\nannotation or the annotation of mminit_loglevel is wrong.\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "07279cdfd964acc032de92a527cb11b1f40f35aa",
      "tree": "e1f1269b459790e45ae11057fcd5b530bcbe5fd5",
      "parents": [
        "16f8c5b2e64dec7faa5d3c7e9bdf0765e864e481"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Aug 20 14:09:05 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:30 2008 -0700"
      },
      "message": "mm: show free swap as signed\n\nAdjust \u003cAlt\u003e\u003cSysRq\u003em show_swap_cache_info() to show \"Free swap\" as a\nsigned long: the signed format is preferable, because during swapoff\nnr_swap_pages can legitimately go negative, so makes more sense thus\n(it used to be shown redundantly, once as signed and once as unsigned).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\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": "16f8c5b2e64dec7faa5d3c7e9bdf0765e864e481",
      "tree": "e0b8c713b7f246ac93953904f2dd8e488f9c276e",
      "parents": [
        "d0fd93781c49cbe127f9e7a5b402e9b167c105a6"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Aug 20 14:09:04 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 20 15:40:30 2008 -0700"
      },
      "message": "mm: page_remove_rmap comments on PageAnon\n\nAdd a comment to s390\u0027s page_test_dirty/page_clear_dirty/page_set_dirty\ndance in page_remove_rmap(): I was wrong to think the PageSwapCache test\ncould be avoided, and would like a comment in there to remind me.  And\nmention s390, to help us remember that this block is not really common.\n\nAlso move down the \"It would be tidy to reset PageAnon\" comment: it does\nnot belong to s390\u0027s block, and it would be unwise to reset PageAnon\nbefore we\u0027re done with testing it.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "71ef2a46fce43042a60d7ccbf55ecbd789c03c2e",
      "tree": "247c3e25958ff362b8a7b5b735a1e7d2ef6842c7",
      "parents": [
        "d121db94eb50b29a202b5f6a8671cbebdf2c4142",
        "5cd9c58fbe9ec92b45b27e131719af4f2bd9eb40"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 15 15:32:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 15 15:32:13 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:\n  security: Fix setting of PF_SUPERPRIV by __capable()\n"
    },
    {
      "commit": "627240aaa92a4dc00d25584910b5f205e963747b",
      "tree": "7e05e87ecc48b57de8c2eeb872ce7a0102c2af3b",
      "parents": [
        "b635acec48bcaa9183fcbf4e3955616b0d4119b5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Fri Aug 15 00:40:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 15 08:35:41 2008 -0700"
      },
      "message": "bootmem allocator: alloc_bootmem_core(): page-align the end offset\n\nThis is the minimal sequence that jams the allocator:\n\nvoid *p, *q, *r;\np \u003d alloc_bootmem(PAGE_SIZE);\nq \u003d alloc_bootmem(64);\nfree_bootmem(p, PAGE_SIZE);\np \u003d alloc_bootmem(PAGE_SIZE);\nr \u003d alloc_bootmem(64);\n\nafter this sequence (assuming that the allocator was empty or page-aligned\nbefore), pointer \"q\" will be equal to pointer \"r\".\n\nWhat\u0027s hapenning inside the allocator:\np \u003d alloc_bootmem(PAGE_SIZE);\nin allocator: last_end_off \u003d\u003d PAGE_SIZE, bitmap contains bits 10000...\nq \u003d alloc_bootmem(64);\nin allocator: last_end_off \u003d\u003d PAGE_SIZE + 64, bitmap contains 11000...\nfree_bootmem(p, PAGE_SIZE);\nin allocator: last_end_off \u003d\u003d PAGE_SIZE + 64, bitmap contains 01000...\np \u003d alloc_bootmem(PAGE_SIZE);\nin allocator: last_end_off \u003d\u003d PAGE_SIZE, bitmap contains 11000...\nr \u003d alloc_bootmem(64);\n\nand now:\n\nit finds bit \"2\", as a place where to allocate (sidx)\n\nit hits the condition\n\nif (bdata-\u003elast_end_off \u0026\u0026 PFN_DOWN(bdata-\u003elast_end_off) + 1 \u003d\u003d sidx))\nstart_off \u003d ALIGN(bdata-\u003elast_end_off, align);\n\n-you can see that the condition is true, so it assigns start_off \u003d\nALIGN(bdata-\u003elast_end_off, align); (that is PAGE_SIZE) and allocates\nover already allocated block.\n\nWith the patch it tries to continue at the end of previous allocation only\nif the previous allocation ended in the middle of the page.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nAcked-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5cd9c58fbe9ec92b45b27e131719af4f2bd9eb40",
      "tree": "8573db001b4dc3c2ad97102dda42b841c40b5f6c",
      "parents": [
        "8d0968abd03ec6b407df117adc773562386702fa"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Thu Aug 14 11:37:28 2008 +0100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Thu Aug 14 22:59:43 2008 +1000"
      },
      "message": "security: Fix setting of PF_SUPERPRIV by __capable()\n\nFix the setting of PF_SUPERPRIV by __capable() as it could corrupt the flags\nthe target process if that is not the current process and it is trying to\nchange its own flags in a different way at the same time.\n\n__capable() is using neither atomic ops nor locking to protect t-\u003eflags.  This\npatch removes __capable() and introduces has_capability() that doesn\u0027t set\nPF_SUPERPRIV on the process being queried.\n\nThis patch further splits security_ptrace() in two:\n\n (1) security_ptrace_may_access().  This passes judgement on whether one\n     process may access another only (PTRACE_MODE_ATTACH for ptrace() and\n     PTRACE_MODE_READ for /proc), and takes a pointer to the child process.\n     current is the parent.\n\n (2) security_ptrace_traceme().  This passes judgement on PTRACE_TRACEME only,\n     and takes only a pointer to the parent process.  current is the child.\n\n     In Smack and commoncap, this uses has_capability() to determine whether\n     the parent will be permitted to use PTRACE_ATTACH if normal checks fail.\n     This does not set PF_SUPERPRIV.\n\nTwo of the instances of __capable() actually only act on current, and so have\nbeen changed to calls to capable().\n\nOf the places that were using __capable():\n\n (1) The OOM killer calls __capable() thrice when weighing the killability of a\n     process.  All of these now use has_capability().\n\n (2) cap_ptrace() and smack_ptrace() were using __capable() to check to see\n     whether the parent was allowed to trace any process.  As mentioned above,\n     these have been split.  For PTRACE_ATTACH and /proc, capable() is now\n     used, and for PTRACE_TRACEME, has_capability() is used.\n\n (3) cap_safe_nice() only ever saw current, so now uses capable().\n\n (4) smack_setprocattr() rejected accesses to tasks other than current just\n     after calling __capable(), so the order of these two tests have been\n     switched and capable() is used instead.\n\n (5) In smack_file_send_sigiotask(), we need to allow privileged processes to\n     receive SIGIO on files they\u0027re manipulating.\n\n (6) In smack_task_wait(), we let a process wait for a privileged process,\n     whether or not the process doing the waiting is privileged.\n\nI\u0027ve tested this with the LTP SELinux and syscalls testscripts.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nAcked-by: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nAcked-by: Andrew G. Morgan \u003cmorgan@kernel.org\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "fc1efbdb7a1175759b099d74b67921396e5e8e3d",
      "tree": "e0079c228cad186a1d5ef1dfcdb4bbe2d4a31188",
      "parents": [
        "070cb06593006e7d565d4763380f3edd8dbdc134"
      ],
      "author": {
        "name": "Huang Weiyi",
        "email": "weiyi.huang@gmail.com",
        "time": "Tue Aug 12 15:09:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:30 2008 -0700"
      },
      "message": "mm/sparse.c: removed duplicated include\n\nSigned-off-by: Huang Weiyi \u003cweiyi.huang@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": "d6bf73e4340f52159c1d9f13836b62e20fcd12d3",
      "tree": "18e3b9e4f126958d7d55758d9a70375a847b5760",
      "parents": [
        "6a4ad39b3de60ad0e75a78098be0f0eb1722b753"
      ],
      "author": {
        "name": "MinChan Kim",
        "email": "minchan.kim@gmail.com",
        "time": "Tue Aug 12 15:08:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:29 2008 -0700"
      },
      "message": "do_migrate_pages(): remove unused variable\n\nSigned-off-by: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nAcked-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": "2b26736c88db85c038e04c2306d0745553e69602",
      "tree": "3914f58d18e93e33eee1256027551954ff24a432",
      "parents": [
        "57303d80175e10056bf51206f9961d586f02f967"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Tue Aug 12 15:08:49 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:28 2008 -0700"
      },
      "message": "allocate structures for reservation tracking in hugetlbfs outside of spinlocks v2\n\n[Andrew this should replace the previous version which did not check\nthe returns from the region prepare for errors.  This has been tested by\nus and Gerald and it looks good.\n\nBah, while reviewing the locking based on your previous email I spotted\nthat we need to check the return from the vma_needs_reservation call for\nallocation errors.  Here is an updated patch to correct this.  This passes\ntesting here.]\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nTested-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "57303d80175e10056bf51206f9961d586f02f967",
      "tree": "3979c1d3e6bf154227ef94245c5a7b6141512211",
      "parents": [
        "ff1a4a7b14ae146142b1c93a001304caf662ae13"
      ],
      "author": {
        "name": "Andy Whitcroft",
        "email": "apw@shadowen.org",
        "time": "Tue Aug 12 15:08:47 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:28 2008 -0700"
      },
      "message": "hugetlbfs: allocate structures for reservation tracking outside of spinlocks\n\nIn the normal case, hugetlbfs reserves hugepages at map time so that the\npages exist for future faults.  A struct file_region is used to track when\nreservations have been consumed and where.  These file_regions are\nallocated as necessary with kmalloc() which can sleep with the\nmm-\u003epage_table_lock held.  This is wrong and triggers may-sleep warning\nwhen PREEMPT is enabled.\n\nUpdates to the underlying file_region are done in two phases.  The first\nphase prepares the region for the change, allocating any necessary memory,\nwithout actually making the change.  The second phase actually commits the\nchange.  This patch makes use of this by checking the reservations before\nthe page_table_lock is taken; triggering any necessary allocations.  This\nmay then be safely repeated within the locks without any allocations being\nrequired.\n\nCredit to Mel Gorman for diagnosing this failure and initial versions of\nthe patch.\n\nSigned-off-by: Andy Whitcroft \u003capw@shadowen.org\u003e\nTested-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9623e078c1f4692a91531af2f639ec8aff8f0472",
      "tree": "ee2ab90d674accd462600d52b14b386df5d748a1",
      "parents": [
        "3ee1062b4ee82a56294808a065b64f4bc6781a56"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Aug 12 15:08:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:28 2008 -0700"
      },
      "message": "memcg: fix oops in mem_cgroup_shrink_usage\n\nGot an oops in mem_cgroup_shrink_usage() when testing loop over tmpfs:\nyes, of course, loop0 has no mm: other entry points check but this didn\u0027t.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "74768ed833344bb0f82b97cee46320a3d7f09ecd",
      "tree": "eee3404d1dd51eb184eab88e12dbc774dc693522",
      "parents": [
        "866c36637f79506b283a6872a7c313b5ef499985"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Tue Aug 12 15:08:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:27 2008 -0700"
      },
      "message": "page allocator: use no-panic variant of alloc_bootmem() in alloc_large_system_hash()\n\n..  since a failed allocation is being (initially) handled gracefully, and\npanic()-ed upon failure explicitly in the function if retries with smaller\nsizes failed.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: David Howells \u003cdhowells@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": "caff3a2c333e11a794308bd9a875a09b94fee24a",
      "tree": "3cc787b8b61913bc6b93b28eafd963f786d96b53",
      "parents": [
        "02eb7eeb8990b9cbd32c7bc1ef2d431ca390e44a"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "gerald.schaefer@de.ibm.com",
        "time": "Tue Aug 12 15:08:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 16:07:27 2008 -0700"
      },
      "message": "hugetlb: call arch_prepare_hugepage() for surplus pages\n\nThe s390 software large page emulation implements shared page tables by\nusing page-\u003eindex of the first tail page from a compound large page to\nstore page table information.  This is set up in arch_prepare_hugepage(),\nwhich is called from alloc_fresh_huge_page_node().\n\nA similar call to arch_prepare_hugepage() is missing for surplus large\npages that are allocated in alloc_buddy_huge_page(), which breaks the\nsoftware emulation mode for (surplus) large pages on s390.  This patch\nadds the missing call to arch_prepare_hugepage().  It will have no effect\non other architectures where arch_prepare_hugepage() is a nop.\n\nAlso, use the correct order in the error path in alloc_fresh_huge_page_node().\n\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c89ac55017f982355c7761e1c912c88c941483d",
      "tree": "6878e95a0572defc725ea58f5a1449db937a5066",
      "parents": [
        "88fa08f67bee1a0c765237bdac106a32872f57d2",
        "b1b135c8d619cb2c7045d6ee4e48375882518bb5"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 08:40:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 12 08:40:19 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus:\n  fix spinlock recursion in hvc_console\n  stop_machine: remove unused variable\n  modules: extend initcall_debug functionality to the module loader\n  export virtio_rng.h\n  lguest: use get_user_pages_fast() instead of get_user_pages()\n  mm: Make generic weak get_user_pages_fast and EXPORT_GPL it\n  lguest: don\u0027t set MAC address for guest unless specified\n"
    },
    {
      "commit": "912985dce45ef18fcdd9f5439fef054e0e22302a",
      "tree": "394b3be51134bddef200f86dde48aa3e3c7ae94c",
      "parents": [
        "40c42076ebd362dc69210cccea101ac80b6d4bd4"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:52 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Tue Aug 12 17:52:53 2008 +1000"
      },
      "message": "mm: Make generic weak get_user_pages_fast and EXPORT_GPL it\n\nOut of line get_user_pages_fast fallback implementation, make it a weak\nsymbol, get rid of CONFIG_HAVE_GET_USER_PAGES_FAST.\n\nExport the symbol to modules so lguest can use it.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "9b4d0bab32e18e4f72781f9fa309a81495b2aff3",
      "tree": "ce95c619d06d10bd0b2c0039f76a03deefaab2c2",
      "parents": [
        "7019b1b50097a94d0f8a77b81bee0b19b108c634",
        "23a0ee908cbfba3264d19729c67c22b20fa73886"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 11 16:45:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 11 16:45:46 2008 -0700"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  lockdep: fix debug_lock_alloc\n  lockdep: increase MAX_LOCKDEP_KEYS\n  generic-ipi: fix stack and rcu interaction bug in smp_call_function_mask()\n  lockdep: fix overflow in the hlock shrinkage code\n  lockdep: rename map_[acquire|release]() \u003d\u003e lock_map_[acquire|release]()\n  lockdep: handle chains involving classes defined in modules\n  mm: fix mm_take_all_locks() locking order\n  lockdep: annotate mm_take_all_locks()\n  lockdep: spin_lock_nest_lock()\n  lockdep: lock protection locks\n  lockdep: map_acquire\n  lockdep: shrink held_lock structure\n  lockdep: re-annotate scheduler runqueues\n  lockdep: lock_set_subclass - reset a held lock\u0027s subclass\n  lockdep: change scheduler annotation\n  debug_locks: set oops_in_progress if we will log messages.\n  lockdep: fix combinatorial explosion in lock subgraph traversal\n"
    },
    {
      "commit": "23a0ee908cbfba3264d19729c67c22b20fa73886",
      "tree": "541103f6283cbac6b82cff88a7b91128acfce046",
      "parents": [
        "cc7a486cac78f6fc1a24e8cd63036bae8d2ab431",
        "0f2bc27be27ca1dcc66b96131e44bf7648b959c6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 12 00:11:49 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 12 00:11:49 2008 +0200"
      },
      "message": "Merge branch \u0027core/locking\u0027 into core/urgent\n"
    },
    {
      "commit": "7cd5a02f54f4c9d16cf7fdffa2122bc73bb09b43",
      "tree": "05b0be34c4dd02899c4f771e89795780465810a6",
      "parents": [
        "454ed842d55740160334efc9ad56cfef54ed37bc"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "message": "mm: fix mm_take_all_locks() locking order\n\nLockdep spotted:\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n2.6.27-rc1 #270\n-------------------------------------------------------\nqemu-kvm/2033 is trying to acquire lock:\n (\u0026inode-\u003ei_data.i_mmap_lock){----}, at: [\u003cffffffff802996cc\u003e] mm_take_all_locks+0xc2/0xea\n\nbut task is already holding lock:\n (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (\u0026anon_vma-\u003elock){----}:\n       [\u003cffffffff8025cd37\u003e] __lock_acquire+0x11be/0x14d2\n       [\u003cffffffff8025d0a9\u003e] lock_acquire+0x5e/0x7a\n       [\u003cffffffff804c655b\u003e] _spin_lock+0x3b/0x47\n       [\u003cffffffff8029a2ef\u003e] vma_adjust+0x200/0x444\n       [\u003cffffffff8029a662\u003e] split_vma+0x12f/0x146\n       [\u003cffffffff8029bc60\u003e] mprotect_fixup+0x13c/0x536\n       [\u003cffffffff8029c203\u003e] sys_mprotect+0x1a9/0x21e\n       [\u003cffffffff8020c0db\u003e] system_call_fastpath+0x16/0x1b\n       [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\n-\u003e #0 (\u0026inode-\u003ei_data.i_mmap_lock){----}:\n       [\u003cffffffff8025ca54\u003e] __lock_acquire+0xedb/0x14d2\n       [\u003cffffffff8025d397\u003e] lock_release_non_nested+0x1c2/0x219\n       [\u003cffffffff8025d515\u003e] lock_release+0x127/0x14a\n       [\u003cffffffff804c6403\u003e] _spin_unlock+0x1e/0x50\n       [\u003cffffffff802995d9\u003e] mm_drop_all_locks+0x7f/0xb0\n       [\u003cffffffff802a965d\u003e] do_mmu_notifier_register+0xe2/0x112\n       [\u003cffffffff802a96a8\u003e] mmu_notifier_register+0xe/0x10\n       [\u003cffffffffa0043b6b\u003e] kvm_dev_ioctl+0x11e/0x287 [kvm]\n       [\u003cffffffff802bd0ca\u003e] vfs_ioctl+0x2a/0x78\n       [\u003cffffffff802bd36f\u003e] do_vfs_ioctl+0x257/0x274\n       [\u003cffffffff802bd3e1\u003e] sys_ioctl+0x55/0x78\n       [\u003cffffffff8020c0db\u003e] system_call_fastpath+0x16/0x1b\n       [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nother info that might help us debug this:\n\n5 locks held by qemu-kvm/2033:\n #0:  (\u0026mm-\u003emmap_sem){----}, at: [\u003cffffffff802a95d0\u003e] do_mmu_notifier_register+0x55/0x112\n #1:  (mm_all_locks_mutex){--..}, at: [\u003cffffffff8029963e\u003e] mm_take_all_locks+0x34/0xea\n #2:  (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n #3:  (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n #4:  (\u0026anon_vma-\u003elock){----}, at: [\u003cffffffff8029967a\u003e] mm_take_all_locks+0x70/0xea\n\nstack backtrace:\nPid: 2033, comm: qemu-kvm Not tainted 2.6.27-rc1 #270\n\nCall Trace:\n [\u003cffffffff8025b7c7\u003e] print_circular_bug_tail+0xb8/0xc3\n [\u003cffffffff8025ca54\u003e] __lock_acquire+0xedb/0x14d2\n [\u003cffffffff80259bb1\u003e] ? add_lock_to_list+0x7e/0xad\n [\u003cffffffff8029967a\u003e] ? mm_take_all_locks+0x70/0xea\n [\u003cffffffff8029967a\u003e] ? mm_take_all_locks+0x70/0xea\n [\u003cffffffff8025d397\u003e] lock_release_non_nested+0x1c2/0x219\n [\u003cffffffff802996cc\u003e] ? mm_take_all_locks+0xc2/0xea\n [\u003cffffffff802996cc\u003e] ? mm_take_all_locks+0xc2/0xea\n [\u003cffffffff8025b202\u003e] ? trace_hardirqs_on_caller+0x4d/0x115\n [\u003cffffffff802995d9\u003e] ? mm_drop_all_locks+0x7f/0xb0\n [\u003cffffffff8025d515\u003e] lock_release+0x127/0x14a\n [\u003cffffffff804c6403\u003e] _spin_unlock+0x1e/0x50\n [\u003cffffffff802995d9\u003e] mm_drop_all_locks+0x7f/0xb0\n [\u003cffffffff802a965d\u003e] do_mmu_notifier_register+0xe2/0x112\n [\u003cffffffff802a96a8\u003e] mmu_notifier_register+0xe/0x10\n [\u003cffffffffa0043b6b\u003e] kvm_dev_ioctl+0x11e/0x287 [kvm]\n [\u003cffffffff8033f9f2\u003e] ? file_has_perm+0x83/0x8e\n [\u003cffffffff802bd0ca\u003e] vfs_ioctl+0x2a/0x78\n [\u003cffffffff802bd36f\u003e] do_vfs_ioctl+0x257/0x274\n [\u003cffffffff802bd3e1\u003e] sys_ioctl+0x55/0x78\n [\u003cffffffff8020c0db\u003e] system_call_fastpath+0x16/0x1b\n\nWhich the locking hierarchy in mm/rmap.c confirms as valid.\n\nFix this by first taking all the mapping-\u003ei_mmap_lock instances and then\ntake all anon_vma-\u003elock instances.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "454ed842d55740160334efc9ad56cfef54ed37bc",
      "tree": "1b60057a0dc7d65c530b6b1ad4514200f828ac9a",
      "parents": [
        "b7d39aff91454f2534db2275f55908656ec0470c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:25 2008 +0200"
      },
      "message": "lockdep: annotate mm_take_all_locks()\n\nThe nesting is correct due to holding mmap_sem, use the new annotation\nto annotate this.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4fbb71597af591fa0ef565df1ba745c92d5070f7",
      "tree": "dcfdfa866e2ad3a14992b5a1fe6cd19711d5efab",
      "parents": [
        "e6ca23289f865f0372b89f42884c258a8e85460b",
        "5595cffc8248e4672c5803547445e85e4053c8fc"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 09 16:21:33 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 09 16:21:33 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:\n  SLUB: dynamic per-cache MIN_PARTIAL\n  mm: unexport ksize\n"
    },
    {
      "commit": "d6606683a5e3dac35cb979c7195f54ed827567bd",
      "tree": "05abf88c9de4b1c99de2c8f955d6c04c2e8abc6a",
      "parents": [
        "a14ad05f47b55ea84136eb4da43ea96fa469326a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 06 12:04:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Aug 06 12:04:54 2008 -0700"
      },
      "message": "Revert duplicate \"mm/hugetlb.c must #include \u003casm/io.h\u003e\"\n\nThis reverts commit 7cb93181629c613ee2b8f4ffe3446f8003074842, since we\ndid that patch twice, and the problem was already fixed earlier by\n78a34ae29bf1c9df62a5bd0f0798b6c62a54d520.\n\nReported-by: Andi Kleen \u003candi@firstfloor.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dfe195fb79e88c334481f1362fef52f6d2e30b2d",
      "tree": "4e7c30eabca8e5d8f30f8bf3d45e046281677ac4",
      "parents": [
        "bf1db69fbf4ff511e88736ce2e6318846f34492b"
      ],
      "author": {
        "name": "Benny Halevy",
        "email": "bhalevy@panasas.com",
        "time": "Tue Aug 05 13:01:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 05 14:33:50 2008 -0700"
      },
      "message": "mm: fix uninitialized variables for find_vma_prepare callers\n\ngcc 4.3.0 correctly emits the following warnings.\nWhen a vma covering addr is found, find_vma_prepare indeed returns without\nsetting pprev, rb_link, and rb_parent.\n\n  mm/mmap.c: In function `insert_vm_struct\u0027:\n  mm/mmap.c:2085: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:2085: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:2084: warning: `prev\u0027 may be used uninitialized in this function\n  mm/mmap.c: In function `copy_vma\u0027:\n  mm/mmap.c:2124: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:2124: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:2123: warning: `prev\u0027 may be used uninitialized in this function\n  mm/mmap.c: In function `do_brk\u0027:\n  mm/mmap.c:1951: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:1951: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:1949: warning: `prev\u0027 may be used uninitialized in this function\n  mm/mmap.c: In function `mmap_region\u0027:\n  mm/mmap.c:1092: warning: `rb_parent\u0027 may be used uninitialized in this function\n  mm/mmap.c:1092: warning: `rb_link\u0027 may be used uninitialized in this function\n  mm/mmap.c:1089: warning: `prev\u0027 may be used uninitialized in this function\n\nHugh adds: in fact, none of find_vma_prepare\u0027s callers use those values\nwhen a vma is found to be already covering addr, it\u0027s either an error or\nan occasion to munmap and repeat.  Okay, let\u0027s quieten the compiler (but I\nwould prefer it if pprev, rb_link and rb_parent were meaningful in that\ncase, rather than whatever\u0027s in them from descending the tree).\n\nSigned-off-by: Benny Halevy \u003cbhalevy@panasas.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Ryan Hope\" \u003crmh3093@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": "5c9ffc9c3d61dfcafd7cdb61c7b94f2d7ac408fb",
      "tree": "8b641e1dcd3ea805eca1250a50ff2e22bc58c006",
      "parents": [
        "35ad1c8803921b28541ad28bfb18dc3b6295ba98"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Aug 05 13:01:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 05 14:33:46 2008 -0700"
      },
      "message": "mm_init.c: avoid ifdef-inside-macro-expansion\n\ngcc-3.2:\n\n  mm/mm_init.c:77:1: directives may not be used inside a macro argument\n  mm/mm_init.c:76:47: unterminated argument list invoking macro \"mminit_dprintk\"\n  mm/mm_init.c: In function `mminit_verify_pageflags_layout\u0027:\n  mm/mm_init.c:80: `mminit_dprintk\u0027 undeclared (first use in this function)\n  mm/mm_init.c:80: (Each undeclared identifier is reported only once\n  mm/mm_init.c:80: for each function it appears in.)\n  mm/mm_init.c:80: syntax error before numeric constant\n\nAlso fix a typo in a comment.\n\nReported-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5595cffc8248e4672c5803547445e85e4053c8fc",
      "tree": "39aa137d63777fd345f5946f7b1662a6ed78dfda",
      "parents": [
        "231367fd9bccbb36309ab5bf5012e11a84231031"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Aug 05 09:28:47 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Aug 05 09:28:47 2008 +0300"
      },
      "message": "SLUB: dynamic per-cache MIN_PARTIAL\n\nThis patch changes the static MIN_PARTIAL to a dynamic per-cache -\u003emin_partial\nvalue that is calculated from object size. The bigger the object size, the more\npages we keep on the partial list.\n\nI tested SLAB, SLUB, and SLUB with this patch on Jens Axboe\u0027s \u0027netio\u0027 example\nscript of the fio benchmarking tool. The script stresses the networking\nsubsystem which should also give a fairly good beating of kmalloc() et al.\n\nTo run the test yourself, first clone the fio repository:\n\n  git clone git://git.kernel.dk/fio.git\n\nand then run the following command n times on your machine:\n\n  time ./fio examples/netio\n\nThe results on my 2-way 64-bit x86 machine are as follows:\n\n  [ the minimum, maximum, and average are captured from 50 individual runs ]\n\n                 real time (seconds)\n                 min      max      avg      sd\n  SLAB           22.76    23.38    22.98    0.17\n  SLUB           22.80    25.78    23.46    0.72\n  SLUB (dynamic) 22.74    23.54    23.00    0.20\n\n                 sys time (seconds)\n                 min      max      avg      sd\n  SLAB           6.90     8.28     7.70     0.28\n  SLUB           7.42     16.95    8.89     2.28\n  SLUB (dynamic) 7.17     8.64     7.73     0.29\n\n                 user time (seconds)\n                 min      max      avg      sd\n  SLAB           36.89    38.11    37.50    0.29\n  SLUB           30.85    37.99    37.06    1.67\n  SLUB (dynamic) 36.75    38.07    37.59    0.32\n\nAs you can see from the above numbers, this patch brings SLUB to the same level\nas SLAB for this particular workload fixing a ~2% regression. I\u0027d expect this\nchange to help similar workloads that allocate a lot of objects that are close\nto the size of a page.\n\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "529ae9aaa08378cfe2a4350bded76f32cc8ff0ce",
      "tree": "d3ae998f9876c72a83a022805103a92111852b21",
      "parents": [
        "e9ba9698187ddbc0c5bfcf41de0349a662d23d02"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Aug 02 12:01:03 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 21:31:34 2008 -0700"
      },
      "message": "mm: rename page trylock\n\nConverting page lock to new locking bitops requires a change of page flag\noperation naming, so we might as well convert it to something nicer\n(!TestSetPageLocked_Lock \u003d\u003e trylock_page, SetPageLocked \u003d\u003e set_page_locked).\n\nThis also facilitates lockdeping of page lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2e1e9212ed8c532c6b324de77d3cafef5d2bc846",
      "tree": "15097a99d03679f2c95ea2fdc0eb3c3ebcc474b8",
      "parents": [
        "2acb802b0c5485aedb46e23b2b45e49573454c09",
        "f5663f5bded3364158e2d31904173cb1debc2ecd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 17:26:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 17:26:15 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (29 commits)\n  sh: enable maple_keyb in dreamcast_defconfig.\n  SH2(A) cache update\n  nommu: Provide vmalloc_exec().\n  add addrespace definition for sh2a.\n  sh: Kill off ARCH_SUPPORTS_AOUT and remnants of a.out support.\n  sh: define GENERIC_HARDIRQS_NO__DO_IRQ.\n  sh: define GENERIC_LOCKBREAK.\n  sh: Save NUMA node data in vmcore for crash dumps.\n  sh: module_alloc() should be using vmalloc_exec().\n  sh: Fix up __bug_table handling in module loader.\n  sh: Add documentation and integrate into docbook build.\n  sh: Fix up broken kerneldoc comments.\n  maple: Kill useless private_data pointer.\n  maple: Clean up maple_driver_register/unregister routines.\n  input: Clean up maple keyboard driver\n  maple: allow removal and reinsertion of keyboard driver module\n  sh: /proc/asids depends on MMU.\n  arch/sh/boards/mach-se/7343/irq.c: removed duplicated #include\n  arch/sh/boards/board-ap325rxa.c: removed duplicated #include\n  sh/boards/Makefile typo fix\n  ...\n"
    },
    {
      "commit": "a477097d9c37c1cf289c7f0257dffcfa42d50197",
      "tree": "9c8a0b2ec1de35ae01c807c8da603f1868f86885",
      "parents": [
        "dc329442b9fd365bec95718013586c07ff600c34"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Mon Aug 04 13:41:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 16:58:45 2008 -0700"
      },
      "message": "mlock() fix return values\n\nHalesh says:\n\nPlease find the below testcase provide to test mlock.\n\nTest Case :\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n#include \u003csys/resource.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003csys/mman.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cerrno.h\u003e\n#include \u003cstdlib.h\u003e\n\nint main(void)\n{\n  int fd,ret, i \u003d 0;\n  char *addr, *addr1 \u003d NULL;\n  unsigned int page_size;\n  struct rlimit rlim;\n\n  if (0 !\u003d geteuid())\n  {\n   printf(\"Execute this pgm as root\\n\");\n   exit(1);\n  }\n\n  /* create a file */\n  if ((fd \u003d open(\"mmap_test.c\",O_RDWR|O_CREAT,0755)) \u003d\u003d -1)\n  {\n   printf(\"cant create test file\\n\");\n   exit(1);\n  }\n\n  page_size \u003d sysconf(_SC_PAGE_SIZE);\n\n  /* set the MEMLOCK limit */\n  rlim.rlim_cur \u003d 2000;\n  rlim.rlim_max \u003d 2000;\n\n  if ((ret \u003d setrlimit(RLIMIT_MEMLOCK,\u0026rlim)) !\u003d 0)\n  {\n   printf(\"Cant change limit values\\n\");\n   exit(1);\n  }\n\n  addr \u003d 0;\n  while (1)\n  {\n  /* map a page into memory each time*/\n  if ((addr \u003d (char *) mmap(addr,page_size, PROT_READ |\nPROT_WRITE,MAP_SHARED,fd,0)) \u003d\u003d MAP_FAILED)\n  {\n   printf(\"cant do mmap on file\\n\");\n   exit(1);\n  }\n\n  if (0 \u003d\u003d i)\n    addr1 \u003d addr;\n  i++;\n  errno \u003d 0;\n  /* lock the mapped memory pagewise*/\n  if ((ret \u003d mlock((char *)addr, 1500)) \u003d\u003d -1)\n  {\n   printf(\"errno value is %d\\n\", errno);\n   printf(\"cant lock maped region\\n\");\n   exit(1);\n  }\n  addr \u003d addr + page_size;\n }\n}\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThis testcase results in an mlock() failure with errno 14 that is EFAULT,\nbut it has nowhere been specified that mlock() will return EFAULT.  When I\ntested the same on older kernels like 2.6.18, I got the correct result i.e\nerrno 12 (ENOMEM).\n\nI think in source code mlock(2), setting errno ENOMEM has been missed in\ndo_mlock() , on mlock_fixup() failure.\n\nSUSv3 requires the following behavior frmo mlock(2).\n\n[ENOMEM]\n    Some or all of the address range specified by the addr and\n    len arguments does not correspond to valid mapped pages\n    in the address space of the process.\n\n[EAGAIN]\n    Some or all of the memory identified by the operation could not\n    be locked when the call was made.\n\nThis rule isn\u0027t so nice and slighly strange.  but many people think\nPOSIX/SUS compliance is important.\n\nReported-by: Halesh Sadashiv \u003chalesh.sadashiv@ap.sony.com\u003e\nTested-by: Halesh Sadashiv \u003chalesh.sadashiv@ap.sony.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1af446edfe3239b2b731f3458b3c285c397464cc",
      "tree": "b1ff67e6c7be9f0d08fed583154c12301a6d9c38",
      "parents": [
        "d8eb2fab18b856fcaebe2619e8eaaa152baebc66"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon Aug 04 16:01:47 2008 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon Aug 04 16:01:47 2008 +0900"
      },
      "message": "nommu: Provide vmalloc_exec().\n\nNow that SH has switched to vmalloc_exec() for PAGE_KERNEL_EXEC usage,\nit\u0027s apparent that nommu has no vmalloc_exec() definition of its own.\nStub in the one from mm/vmalloc.c.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "84209e02de48d72289650cc5a7ae8dd18223620f",
      "tree": "a02ffe41273c4371262409a51d07461a674cea66",
      "parents": [
        "2b12a4c524812fb3f6ee590a02e65b95c8c32229"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Aug 01 20:28:47 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Aug 02 09:12:34 2008 -0700"
      },
      "message": "mm: dont clear PG_uptodate on truncate/invalidate\n\nBrian Wang reported that a FUSE filesystem exported through NFS could\nreturn I/O errors on read.  This was traced to splice_direct_to_actor()\nreturning a short or zero count when racing with page invalidation.\n\nHowever this is not FUSE or NFSD specific, other filesystems (notably\nNFS) also call invalidate_inode_pages2() to purge stale data from the\ncache.\n\nIf this happens while such pages are sitting in a pipe buffer, then\nsplice(2) from the pipe can return zero, and read(2) from the pipe can\nreturn ENODATA.\n\nThe zero return is especially bad, since it implies end-of-file or\ndisconnected pipe/socket, and is documented as such for splice.  But\nreturning an error for read() is also nasty, when in fact there was no\nerror (data becoming stale is not an error).\n\nThe same problems can be triggered by \"hole punching\" with\nmadvise(MADV_REMOVE).\n\nFix this by not clearing the PG_uptodate flag on truncation and\ninvalidation.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3669bc143fb3d389918379547f4a6b28a757b7fe",
      "tree": "38b0d90e3ee3f975dfd0b469ffdcad21953313cd",
      "parents": [
        "a97762a77f927577525868e39661084170ce3605"
      ],
      "author": {
        "name": "Jack Steiner",
        "email": "steiner@sgi.com",
        "time": "Fri Aug 01 15:08:15 2008 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 13:19:16 2008 -0700"
      },
      "message": "Remove EXPORTS of follow_page \u0026 zap_page_range\n\nDelete 2 EXPORTs that were accidentally sent upstream.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0ef89d25d3e390dfa7c46772907951744a4067dc",
      "tree": "768d97175d6df35408733f6fe40cf414b4ac75bd",
      "parents": [
        "c6de002617c199f80f9a2a713dffc263bdc69b81"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Thu Jul 31 00:07:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 12:46:41 2008 -0700"
      },
      "message": "mm/hugetlb: don\u0027t crash when HPAGE_SHIFT is 0\n\nSome platform decide whether they support huge pages at boot time.  On\nthese, such as powerpc, HPAGE_SHIFT is a variable, not a constant, and is\nset to 0 when there is no such support.\n\nThe patches to introduce multiple huge pages support broke that causing\nthe kernel to crash at boot time on machines such as POWER3 which lack\nsupport for multiple page sizes.\n\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00e9028a95fb8a4d79f2fb695a853f33ea7d3b57",
      "tree": "2dea2ae498a6ce57de8890e87185aca5e9f3ad2d",
      "parents": [
        "57b1494d2ba544c62673234da6115c21fac27ffc",
        "7cb93181629c613ee2b8f4ffe3446f8003074842"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 10:53:43 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 10:53:43 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (28 commits)\n  mm/hugetlb.c must #include \u003casm/io.h\u003e\n  video: Fix up hp6xx driver build regressions.\n  sh: defconfig updates.\n  sh: Kill off stray mach-rsk7203 reference.\n  serial: sh-sci: Fix up SH7760/SH7780/SH7785 early printk regression.\n  sh: Move out individual boards without mach groups.\n  sh: Make sure AT_SYSINFO_EHDR is exposed to userspace in asm/auxvec.h.\n  sh: Allow SH-3 and SH-5 to use common headers.\n  sh: Provide common CPU headers, prune the SH-2 and SH-2A directories.\n  sh/maple: clean maple bus code\n  sh: More header path fixups for mach dir refactoring.\n  sh: Move out the solution engine headers to arch/sh/include/mach-se/\n  sh: I2C fix for AP325RXA and Migo-R\n  sh: Shuffle the board directories in to mach groups.\n  sh: dma-sh: Fix up dreamcast dma.h mach path.\n  sh: Switch KBUILD_DEFCONFIG to shx3_defconfig.\n  sh: Add ARCH_DEFCONFIG entries for sh and sh64.\n  sh: Fix compile error of Solution Engine\n  sh: Proper __put_user_asm() size mismatch fix.\n  sh: Stub in a dummy ENTRY_OFFSET for uImage offset calculation.\n  ...\n"
    },
    {
      "commit": "a4b526b3ba6353cd89a38e41da48ed83b0ead16f",
      "tree": "362842354bdcde59feede51cbeefc9b8833aacf7",
      "parents": [
        "934b2857cc576ae53c92a66e63fce7ddcfa74691"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 01 16:39:12 2008 +0200"
      },
      "committer": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Fri Aug 01 16:39:30 2008 +0200"
      },
      "message": "[S390] Optimize storage key operations for anon pages\n\nFor anonymous pages without a swap cache backing the check in\npage_remove_rmap for the physical dirty bit in page_remove_rmap is\nunnecessary. The instructions that are used to check and reset the dirty\nbit are expensive. Removing the check noticably speeds up process exit.\nIn addition the clearing of the dirty bit in __SetPageUptodate is\npointless as well. With these two changes there is no storage key\noperation for an anonymous page anymore if it does not hit the swap\nspace.\n\nThe micro benchmark which repeatedly executes an empty shell script\ngets about 5% faster.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\n"
    },
    {
      "commit": "94ad374a0751f40d25e22e036c37f7263569d24c",
      "tree": "d1bbf5d64c4eaee7bfefae22ad87b96967187cc8",
      "parents": [
        "0056e65f9e28d83ee1a3fb4f7d0041e838f03c34"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 14:45:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 14:50:18 2008 -0700"
      },
      "message": "Fix off-by-one error in iov_iter_advance()\n\nThe iov_iter_advance() function would look at the iov-\u003eiov_len entry\neven though it might have iterated over the whole array, and iov was\npointing past the end.  This would cause DEBUG_PAGEALLOC to trigger a\nkernel page fault if the allocation was at the end of a page, and the\nnext page was unallocated.\n\nThe quick fix is to just change the order of the tests: check that there\nis any iovec data left before we check the iov entry itself.\n\nThanks to Alexey Dobriyan for finding this case, and testing the fix.\n\nReported-and-tested-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: \u003cstable@kernel.org\u003e [2.6.25.x, 2.6.26.x]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0d39741a27d86d305cc75ba626392be410dcbab9",
      "tree": "3234c7004288ced685c5471820fd52fda89d161e",
      "parents": [
        "3c45f6928322773b1810fbec1ece77056f914114"
      ],
      "author": {
        "name": "Jack Steiner",
        "email": "steiner@sgi.com",
        "time": "Tue Jul 29 22:34:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:48 2008 -0700"
      },
      "message": "GRU Driver: export is_uv_system(), zap_page_range() \u0026 follow_page()\n\nExports needed by the GRU driver.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c627f9cc046c7cd93b4525d89377fb409e170a18",
      "tree": "851913d2ebd2946b577592fb410f750e6fdc943b",
      "parents": [
        "f718cd4add5aea9d379faff92f162571e356cc5f"
      ],
      "author": {
        "name": "Jack Steiner",
        "email": "steiner@sgi.com",
        "time": "Tue Jul 29 22:33:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:47 2008 -0700"
      },
      "message": "mm: add zap_vma_ptes(): a library function to unmap driver ptes\n\nzap_vma_ptes() is intended to be used by drivers to unmap ptes assigned to the\ndriver private vmas.  This interface is similar to zap_page_range() but is\nless general \u0026 less likely to be abused.\n\nNeeded by the GRU driver.\n\nSigned-off-by: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "87547ee95d81ec0ee1503fcaf9c9594469bc2510",
      "tree": "4ec43fc8af26a736bf15e8e7c907a84a1fa10ba8",
      "parents": [
        "7d03431cf98aaed635524024273668bb8cedadda"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Tue Jul 29 22:33:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:46 2008 -0700"
      },
      "message": "do_try_to_free_page: update comments related to vmscan functions\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "7d03431cf98aaed635524024273668bb8cedadda",
      "tree": "aae817e9bd8398fd3521514d0c7573db7b5823ae",
      "parents": [
        "ab33dc09a5c0d2bd6757afa1c2f804c9657daec0"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Tue Jul 29 22:33:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:46 2008 -0700"
      },
      "message": "swapfile/vmscan: update comments related to vmscan functions\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "ab33dc09a5c0d2bd6757afa1c2f804c9657daec0",
      "tree": "37da268ee6841d1fdad2d0e6d737b7b3223f7ff3",
      "parents": [
        "7e6cbea39aaa32480145915751119227f29f6f7b"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Tue Jul 29 22:33:40 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:46 2008 -0700"
      },
      "message": "swap: update function comment of release_pages\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "7e6cbea39aaa32480145915751119227f29f6f7b",
      "tree": "b22cf970a882bca6cd4e526d6b7b9e9396981c37",
      "parents": [
        "641de9d8f505db055d451b50e6e38117f84e79bb"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Tue Jul 29 22:33:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:45 2008 -0700"
      },
      "message": "madvise: update function comment of madvise_dontneed\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\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": "4ef1b0fd61333b3b81ebe29283898c6c84b15c9f",
      "tree": "673b8a3a724c7da185a3507f63843aa694b43ec8",
      "parents": [
        "55b6fd0162ace1e0f1b52c8c092565c115127ef6"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jul 29 22:33:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:44 2008 -0700"
      },
      "message": "memcg: remove redundant check in move_task()\n\nIt\u0027s guaranteed by cgroup that old_cgrp !\u003d cgrp.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Cedric Le Goater \u003cclg@fr.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.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": "1d1958f05095a7e9ecbba86235122784a3d1b561",
      "tree": "9c0621d0f689c4711d5de2e770140698366b14aa",
      "parents": [
        "3971e1a917548977cff71418a7c3575ffbc9571f"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yhlu.kernel@gmail.com",
        "time": "Tue Jul 29 22:33:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:44 2008 -0700"
      },
      "message": "mm: remove find_max_pfn_with_active_regions\n\nIt has no user now\n\nAlso print out info about adding/removing active regions.\n\nSigned-off-by: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "231367fd9bccbb36309ab5bf5012e11a84231031",
      "tree": "31c9282fd2c4f17ec8f7d22bb975ba84e081a22a",
      "parents": [
        "6e86841d05f371b5b9b86ce76c02aaee83352298"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Tue Jul 22 20:21:16 2008 +0300"
      },
      "committer": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Tue Jul 29 23:44:26 2008 +0300"
      },
      "message": "mm: unexport ksize\n\nThis patch removes the obsolete and no longer used exports of ksize.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "7cb93181629c613ee2b8f4ffe3446f8003074842",
      "tree": "3665bf0e793dfa63020514de8c549a65430c5ab0",
      "parents": [
        "193f3c2f1531ec9755a87a33038fba3ee29f6ca5"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Jul 30 02:18:26 2008 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Wed Jul 30 02:18:26 2008 +0900"
      },
      "message": "mm/hugetlb.c must #include \u003casm/io.h\u003e\n\nThis patch fixes the following build error on sh caused by\ncommit aa888a74977a8f2120ae9332376e179c39a6b07d\n(hugetlb: support larger than MAX_ORDER):\n\n\u003c--  snip  --\u003e\n\n...\n  CC      mm/hugetlb.o\n/home/bunk/linux/kernel-2.6/git/linux-2.6/mm/hugetlb.c: In function \u0027alloc_bootmem_huge_page\u0027:\n/home/bunk/linux/kernel-2.6/git/linux-2.6/mm/hugetlb.c:958: error: implicit declaration of function \u0027virt_to_phys\u0027\nmake[2]: *** [mm/hugetlb.o] Error 1\n\n\u003c--  snip  --\u003e\n\nReported-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "8ab22b9abb5c55413802e4adc9aa6223324547c3",
      "tree": "cff3319e1275e8a7c083d492889ec6bd0c7712d3",
      "parents": [
        "d84a52f62f6a396ed77aa0052da74ca9e760b28a"
      ],
      "author": {
        "name": "Hisashi Hifumi",
        "email": "hifumi.hisashi@oss.ntt.co.jp",
        "time": "Mon Jul 28 15:46:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "vfs: pagecache usage optimization for pagesize!\u003dblocksize\n\nWhen we read some part of a file through pagecache, if there is a\npagecache of corresponding index but this page is not uptodate, read IO\nis issued and this page will be uptodate.\n\nI think this is good for pagesize \u003d\u003d blocksize environment but there is\nroom for improvement on pagesize !\u003d blocksize environment.  Because in\nthis case a page can have multiple buffers and even if a page is not\nuptodate, some buffers can be uptodate.\n\nSo I suggest that when all buffers which correspond to a part of a file\nthat we want to read are uptodate, use this pagecache and copy data from\nthis pagecache to user buffer even if a page is not uptodate.  This can\nreduce read IO and improve system throughput.\n\nI wrote a benchmark program and got result number with this program.\n\nThis benchmark do:\n\n  1: mount and open a test file.\n\n  2: create a 512MB file.\n\n  3: close a file and umount.\n\n  4: mount and again open a test file.\n\n  5: pwrite randomly 300000 times on a test file.  offset is aligned\n     by IO size(1024bytes).\n\n  6: measure time of preading randomly 100000 times on a test file.\n\nThe result was:\n\t2.6.26\n        330 sec\n\n\t2.6.26-patched\n        226 sec\n\nArch:i386\nFilesystem:ext3\nBlocksize:1024 bytes\nMemory: 1GB\n\nOn ext3/4, a file is written through buffer/block.  So random read/write\nmixed workloads or random read after random write workloads are optimized\nwith this patch under pagesize !\u003d blocksize environment.  This test result\nshowed this.\n\nThe benchmark program is as follows:\n\n#include \u003cstdio.h\u003e\n#include \u003csys/types.h\u003e\n#include \u003csys/stat.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cunistd.h\u003e\n#include \u003ctime.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cstring.h\u003e\n#include \u003csys/mount.h\u003e\n\n#define LEN 1024\n#define LOOP 1024*512 /* 512MB */\n\nmain(void)\n{\n\tunsigned long i, offset, filesize;\n\tint fd;\n\tchar buf[LEN];\n\ttime_t t1, t2;\n\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tmemset(buf, 0, LEN);\n\tfd \u003d open(\"/root/test1/testfile\", O_CREAT|O_RDWR|O_TRUNC);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\tfor (i \u003d 0; i \u003c LOOP; i++)\n\t\twrite(fd, buf, LEN);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n\tif (mount(\"/dev/sda1\", \"/root/test1/\", \"ext3\", 0, 0) \u003c 0) {\n\t\tperror(\"cannot mount\\n\");\n\t\texit(1);\n\t}\n\tfd \u003d open(\"/root/test1/testfile\", O_RDWR);\n\tif (fd \u003c 0) {\n\t\tperror(\"cannot open file\\n\");\n\t\texit(1);\n\t}\n\n\tfilesize \u003d LEN * LOOP;\n\tfor (i \u003d 0; i \u003c 300000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpwrite(fd, buf, LEN, offset);\n\t}\n\tprintf(\"start test\\n\");\n\ttime(\u0026t1);\n\tfor (i \u003d 0; i \u003c 100000; i++){\n\t\toffset \u003d (random() % filesize) \u0026 (~(LEN - 1));\n\t\tpread(fd, buf, LEN, offset);\n\t}\n\ttime(\u0026t2);\n\tprintf(\"%ld sec\\n\", t2-t1);\n\tclose(fd);\n\tif (umount(\"/root/test1/\") \u003c 0) {\n\t\tperror(\"cannot umount\\n\");\n\t\texit(1);\n\t}\n}\n\nSigned-off-by: Hisashi Hifumi \u003chifumi.hisashi@oss.ntt.co.jp\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78a34ae29bf1c9df62a5bd0f0798b6c62a54d520",
      "tree": "e8a5576a9142c11be1edc667ecbe7395f8c088ce",
      "parents": [
        "cddb8a5c14aa89810b40495d94d3d2a0faee6619"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Jul 28 15:46:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mm/hugetlb.c must #include \u003casm/io.h\u003e\n\nThis patch fixes the following build error on sh caused by commit\naa888a74977a8f2120ae9332376e179c39a6b07d (\"hugetlb: support larger than\nMAX_ORDER\"):\n\n  mm/hugetlb.c: In function \u0027alloc_bootmem_huge_page\u0027:\n  mm/hugetlb.c:958: error: implicit declaration of function \u0027virt_to_phys\u0027\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cddb8a5c14aa89810b40495d94d3d2a0faee6619",
      "tree": "d0b47b071f7d2dd1d6f9c36084aa8cfcef90d1da",
      "parents": [
        "7906d00cd1f687268f0a3599442d113767795ae6"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Mon Jul 28 15:46:29 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mmu-notifiers: core\n\nWith KVM/GFP/XPMEM there isn\u0027t just the primary CPU MMU pointing to pages.\n There are secondary MMUs (with secondary sptes and secondary tlbs) too.\nsptes in the kvm case are shadow pagetables, but when I say spte in\nmmu-notifier context, I mean \"secondary pte\".  In GRU case there\u0027s no\nactual secondary pte and there\u0027s only a secondary tlb because the GRU\nsecondary MMU has no knowledge about sptes and every secondary tlb miss\nevent in the MMU always generates a page fault that has to be resolved by\nthe CPU (this is not the case of KVM where the a secondary tlb miss will\nwalk sptes in hardware and it will refill the secondary tlb transparently\nto software if the corresponding spte is present).  The same way\nzap_page_range has to invalidate the pte before freeing the page, the spte\n(and secondary tlb) must also be invalidated before any page is freed and\nreused.\n\nCurrently we take a page_count pin on every page mapped by sptes, but that\nmeans the pages can\u0027t be swapped whenever they\u0027re mapped by any spte\nbecause they\u0027re part of the guest working set.  Furthermore a spte unmap\nevent can immediately lead to a page to be freed when the pin is released\n(so requiring the same complex and relatively slow tlb_gather smp safe\nlogic we have in zap_page_range and that can be avoided completely if the\nspte unmap event doesn\u0027t require an unpin of the page previously mapped in\nthe secondary MMU).\n\nThe mmu notifiers allow kvm/GRU/XPMEM to attach to the tsk-\u003emm and know\nwhen the VM is swapping or freeing or doing anything on the primary MMU so\nthat the secondary MMU code can drop sptes before the pages are freed,\navoiding all page pinning and allowing 100% reliable swapping of guest\nphysical address space.  Furthermore it avoids the code that teardown the\nmappings of the secondary MMU, to implement a logic like tlb_gather in\nzap_page_range that would require many IPI to flush other cpu tlbs, for\neach fixed number of spte unmapped.\n\nTo make an example: if what happens on the primary MMU is a protection\ndowngrade (from writeable to wrprotect) the secondary MMU mappings will be\ninvalidated, and the next secondary-mmu-page-fault will call\nget_user_pages and trigger a do_wp_page through get_user_pages if it\ncalled get_user_pages with write\u003d1, and it\u0027ll re-establishing an updated\nspte or secondary-tlb-mapping on the copied page.  Or it will setup a\nreadonly spte or readonly tlb mapping if it\u0027s a guest-read, if it calls\nget_user_pages with write\u003d0.  This is just an example.\n\nThis allows to map any page pointed by any pte (and in turn visible in the\nprimary CPU MMU), into a secondary MMU (be it a pure tlb like GRU, or an\nfull MMU with both sptes and secondary-tlb like the shadow-pagetable layer\nwith kvm), or a remote DMA in software like XPMEM (hence needing of\nschedule in XPMEM code to send the invalidate to the remote node, while no\nneed to schedule in kvm/gru as it\u0027s an immediate event like invalidating\nprimary-mmu pte).\n\nAt least for KVM without this patch it\u0027s impossible to swap guests\nreliably.  And having this feature and removing the page pin allows\nseveral other optimizations that simplify life considerably.\n\nDependencies:\n\n1) mm_take_all_locks() to register the mmu notifier when the whole VM\n   isn\u0027t doing anything with \"mm\".  This allows mmu notifier users to keep\n   track if the VM is in the middle of the invalidate_range_begin/end\n   critical section with an atomic counter incraese in range_begin and\n   decreased in range_end.  No secondary MMU page fault is allowed to map\n   any spte or secondary tlb reference, while the VM is in the middle of\n   range_begin/end as any page returned by get_user_pages in that critical\n   section could later immediately be freed without any further\n   -\u003einvalidate_page notification (invalidate_range_begin/end works on\n   ranges and -\u003einvalidate_page isn\u0027t called immediately before freeing\n   the page).  To stop all page freeing and pagetable overwrites the\n   mmap_sem must be taken in write mode and all other anon_vma/i_mmap\n   locks must be taken too.\n\n2) It\u0027d be a waste to add branches in the VM if nobody could possibly\n   run KVM/GRU/XPMEM on the kernel, so mmu notifiers will only enabled if\n   CONFIG_KVM\u003dm/y.  In the current kernel kvm won\u0027t yet take advantage of\n   mmu notifiers, but this already allows to compile a KVM external module\n   against a kernel with mmu notifiers enabled and from the next pull from\n   kvm.git we\u0027ll start using them.  And GRU/XPMEM will also be able to\n   continue the development by enabling KVM\u003dm in their config, until they\n   submit all GRU/XPMEM GPLv2 code to the mainline kernel.  Then they can\n   also enable MMU_NOTIFIERS in the same way KVM does it (even if KVM\u003dn).\n   This guarantees nobody selects MMU_NOTIFIER\u003dy if KVM and GRU and XPMEM\n   are all \u003dn.\n\nThe mmu_notifier_register call can fail because mm_take_all_locks may be\ninterrupted by a signal and return -EINTR.  Because mmu_notifier_reigster\nis used when a driver startup, a failure can be gracefully handled.  Here\nan example of the change applied to kvm to register the mmu notifiers.\nUsually when a driver startups other allocations are required anyway and\n-ENOMEM failure paths exists already.\n\n struct  kvm *kvm_arch_create_vm(void)\n {\n        struct kvm *kvm \u003d kzalloc(sizeof(struct kvm), GFP_KERNEL);\n+       int err;\n\n        if (!kvm)\n                return ERR_PTR(-ENOMEM);\n\n        INIT_LIST_HEAD(\u0026kvm-\u003earch.active_mmu_pages);\n\n+       kvm-\u003earch.mmu_notifier.ops \u003d \u0026kvm_mmu_notifier_ops;\n+       err \u003d mmu_notifier_register(\u0026kvm-\u003earch.mmu_notifier, current-\u003emm);\n+       if (err) {\n+               kfree(kvm);\n+               return ERR_PTR(err);\n+       }\n+\n        return kvm;\n }\n\nmmu_notifier_unregister returns void and it\u0027s reliable.\n\nThe patch also adds a few needed but missing includes that would prevent\nkernel to compile after these changes on non-x86 archs (x86 didn\u0027t need\nthem by luck).\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: fix mm/filemap_xip.c build]\n[akpm@linux-foundation.org: fix mm/mmu_notifier.c build]\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kanoj Sarcar \u003ckanojsarcar@yahoo.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmarcelo@kvack.org\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Izik Eidus \u003cizike@qumranet.com\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7906d00cd1f687268f0a3599442d113767795ae6",
      "tree": "63609454d164a088d7f535f826764579c0f297f6",
      "parents": [
        "6beeac76f5f96590fb751af5e138fbc3f62e8460"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@qumranet.com",
        "time": "Mon Jul 28 15:46:26 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:21 2008 -0700"
      },
      "message": "mmu-notifiers: add mm_take_all_locks() operation\n\nmm_take_all_locks holds off reclaim from an entire mm_struct.  This allows\nmmu notifiers to register into the mm at any time with the guarantee that\nno mmu operation is in progress on the mm.\n\nThis operation locks against the VM for all pte/vma/mm related operations\nthat could ever happen on a certain mm.  This includes vmtruncate,\ntry_to_unmap, and all page faults.\n\nThe caller must take the mmap_sem in write mode before calling\nmm_take_all_locks().  The caller isn\u0027t allowed to release the mmap_sem\nuntil mm_drop_all_locks() returns.\n\nmmap_sem in write mode is required in order to block all operations that\ncould modify pagetables and free pages without need of altering the vma\nlayout (for example populate_range() with nonlinear vmas).  It\u0027s also\nneeded in write mode to avoid new anon_vmas to be associated with existing\nvmas.\n\nA single task can\u0027t take more than one mm_take_all_locks() in a row or it\nwould deadlock.\n\nmm_take_all_locks() and mm_drop_all_locks are expensive operations that\nmay have to take thousand of locks.\n\nmm_take_all_locks() can fail if it\u0027s interrupted by signals.\n\nWhen mmu_notifier_register returns, we must be sure that the driver is\nnotified if some task is in the middle of a vmtruncate for the \u0027mm\u0027 where\nthe mmu notifier was registered (mmu_notifier_invalidate_range_start/end\nis run around the vmtruncation but mmu_notifier_register can run after\nmmu_notifier_invalidate_range_start and before\nmmu_notifier_invalidate_range_end).  Same problem for rmap paths.  And\nwe\u0027ve to remove page pinning to avoid replicating the tlb_gather logic\ninside KVM (and GRU doesn\u0027t work well with page pinning regardless of\nneeding tlb_gather), so without mm_take_all_locks when vmtruncate frees\nthe page, kvm would have no way to notice that it mapped into sptes a page\nthat is going into the freelist without a chance of any further\nmmu_notifier notification.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Andrea Arcangeli \u003candrea@qumranet.com\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jack Steiner \u003csteiner@sgi.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Kanoj Sarcar \u003ckanojsarcar@yahoo.com\u003e\nCc: Roland Dreier \u003crdreier@cisco.com\u003e\nCc: Steve Wise \u003cswise@opengridcomputing.com\u003e\nCc: Avi Kivity \u003cavi@qumranet.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@redhat.com\u003e\nCc: Marcelo Tosatti \u003cmarcelo@kvack.org\u003e\nCc: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nCc: Izik Eidus \u003cizike@qumranet.com\u003e\nCc: Anthony Liguori \u003caliguori@us.ibm.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14fcc23fdc78e9d32372553ccf21758a9bd56fa1",
      "tree": "594fc0e0e85c03205ba2d80a4b4e0a8fc6ffaa8a",
      "parents": [
        "ca5b172bd2b2fe489e7ba11cedd46ddf772d132f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Jul 28 15:46:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 28 16:30:20 2008 -0700"
      },
      "message": "tmpfs: fix kernel BUG in shmem_delete_inode\n\nSuSE\u0027s insserve initscript ordering program hits kernel BUG at mm/shmem.c:814\non 2.6.26.  It\u0027s using posix_fadvise on directories, and the shmem_readpage\nmethod added in 2.6.23 is letting POSIX_FADV_WILLNEED allocate useless pages\nto a tmpfs directory, incrementing i_blocks count but never decrementing it.\n\nFix this by assigning shmem_aops (pointing to readpage and writepage and\nset_page_dirty) only when it\u0027s needed, on a regular file or a long symlink.\n\nMany thanks to Kel for outstanding bugreport and steps to reproduce it.\n\nReported-by: Kel Modderman \u003ckel@otaku42.de\u003e\nTested-by: Kel Modderman \u003ckel@otaku42.de\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \u003cstable@kernel.org\u003e\t\t[2.6.25.x, 2.6.26.x]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b1a4d38373a5581a4e01032a3ccdd94cd93477b",
      "tree": "3d0f0ebd1ac4512551fc35e57d173870eb060c0c",
      "parents": [
        "eeec4fad963490821348a331cca6102ae1c4a7a3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:30 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:31 2008 +1000"
      },
      "message": "stop_machine: Wean existing callers off stop_machine_run()\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "4836e3007882984279ca63d3c42bf0b14616eb78",
      "tree": "28bf22726964e068b825491d71a141eefedbe5f8",
      "parents": [
        "5c7c204aeca51ccfad63caab4fcdc5d8026c0fd8",
        "4e1e018ecc6f7bfd10fc75b3ff9715cc8164e0a2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:23:44 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:23:44 2008 -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: (39 commits)\n  [PATCH] fix RLIM_NOFILE handling\n  [PATCH] get rid of corner case in dup3() entirely\n  [PATCH] remove remaining namei_{32,64}.h crap\n  [PATCH] get rid of indirect users of namei.h\n  [PATCH] get rid of __user_path_lookup_open\n  [PATCH] f_count may wrap around\n  [PATCH] dup3 fix\n  [PATCH] don\u0027t pass nameidata to __ncp_lookup_validate()\n  [PATCH] don\u0027t pass nameidata to gfs2_lookupi()\n  [PATCH] new (local) helper: user_path_parent()\n  [PATCH] sanitize __user_walk_fd() et.al.\n  [PATCH] preparation to __user_walk_fd cleanup\n  [PATCH] kill nameidata passing to permission(), rename to inode_permission()\n  [PATCH] take noexec checks to very few callers that care\n  Re: [PATCH 3/6] vfs: open_exec cleanup\n  [patch 4/4] vfs: immutable inode checking cleanup\n  [patch 3/4] fat: dont call notify_change\n  [patch 2/4] vfs: utimes cleanup\n  [patch 1/4] vfs: utimes: move owner check into inode_change_ok()\n  [PATCH] vfs: use kstrdup() and check failing allocation\n  ...\n"
    },
    {
      "commit": "228428428138e231a155464239880201e5cc8b44",
      "tree": "89b437f5501d03ca36b717e232337426d0de77ca",
      "parents": [
        "78681ac08a611313595d13cafabae1183b71ef48",
        "6c3b8fc618905d7599dcc514c99ce4293d476f39"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:17:56 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:17:56 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:\n  netns: fix ip_rt_frag_needed rt_is_expired\n  netfilter: nf_conntrack_extend: avoid unnecessary \"ct-\u003eext\" dereferences\n  netfilter: fix double-free and use-after free\n  netfilter: arptables in netns for real\n  netfilter: ip{,6}tables_security: fix future section mismatch\n  selinux: use nf_register_hooks()\n  netfilter: ebtables: use nf_register_hooks()\n  Revert \"pkt_sched: sch_sfq: dump a real number of flows\"\n  qeth: use dev-\u003eml_priv instead of dev-\u003epriv\n  syncookies: Make sure ECN is disabled\n  net: drop unused BUG_TRAP()\n  net: convert BUG_TRAP to generic WARN_ON\n  drivers/net: convert BUG_TRAP to generic WARN_ON\n"
    },
    {
      "commit": "3b8f14b41026fb7d7e9a4af2a4128a702d07ad26",
      "tree": "f28da266afc860c6e1958ed7ba6381c79432e4cb",
      "parents": [
        "510a35d4a47802f4a0028aa6bd2ca2170da5e32f"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sat Jul 26 15:22:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 20:16:47 2008 -0700"
      },
      "message": "mm/util.c must #include \u003clinux/sched.h\u003e\n\nmm/util.c: In function \u0027arch_pick_mmap_layout\u0027:\n  mm/util.c:144: error: dereferencing pointer to incomplete type\n  mm/util.c:145: error: \u0027arch_get_unmapped_area\u0027 undeclared (first use in this function)\n  mm/util.c:145: error: (Each undeclared identifier is reported only once\n  mm/util.c:145: error: for each function it appears in.)\n  mm/util.c:146: error: \u0027arch_unmap_area\u0027 undeclared (first use in this function)\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2f1936b87783a3a56c9441b27b9ba7a747f11e8e",
      "tree": "024a0f3da74ba6365f209d03685133760146149b",
      "parents": [
        "c82e42da8a6b2f3a85dc4d4278cb8238702f8f64"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Tue Jun 24 16:50:14 2008 +0200"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:16 2008 -0400"
      },
      "message": "[patch 3/5] vfs: change remove_suid() to file_remove_suid()\n\nAll calls to remove_suid() are made with a file pointer, because\n(similarly to file_update_time) it is called when the file is written.\n\nClean up callers by passing in a file instead of a dentry.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n"
    },
    {
      "commit": "e6305c43eda10ebfd2ad9e35d6e172ccc7bb3695",
      "tree": "8a95bd0e27fb3ce895cca9ef91af2e1605e4cdab",
      "parents": [
        "1bd5191d9f5d1928c4efdf604c4164b04bb88dbe"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 15 21:03:57 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sat Jul 26 20:53:14 2008 -0400"
      },
      "message": "[PATCH] sanitize -\u003epermission() prototype\n\n* kill nameidata * argument; map the 3 bits in -\u003eflags anybody cares\n  about to new MAY_... ones and pass with the mask.\n* kill redundant gfs2_iop_permission()\n* sanitize ecryptfs_permission()\n* fix remaining places where -\u003epermission() instances might barf on new\n  MAY_... found in mask.\n\nThe obvious next target in that direction is permission(9)\n\nfolded fix for nfs_permission() breakage from Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "93bc4e89c260d91576840c4881d1066d84ccd422",
      "tree": "456176a054fc9a3fed18ac6ce50c7a34a86c5808",
      "parents": [
        "3918fed5f31213067c1c345bd904e1ea369e6819"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Sat Jul 26 17:49:33 2008 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Sat Jul 26 17:49:33 2008 -0700"
      },
      "message": "netfilter: fix double-free and use-after free\n\nAs suggested by Patrick McHardy, introduce a __krealloc() that doesn\u0027t\nfree the original buffer to fix a double-free and use-after-free bug\nintroduced by me in netfilter that uses RCU.\n\nReported-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nTested-by: Dieter Ries \u003cclip2@gmx.de\u003e\nSigned-off-by: Patrick McHardy \u003ckaber@trash.net\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "7c363b8c6536f26934172d3c46f0bbec01a97c61",
      "tree": "46a9ce1b0ef9285ab2c7b04f0cf584294853a16f",
      "parents": [
        "15f59adae001766a2c7f7fe4f196387bb04bcff5"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 19:46:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:12 2008 -0700"
      },
      "message": "mm/swapfile.c: make code static\n\nThis patch makes the following needlessly global code static:\n - swap_lock\n - nr_swapfiles\n - struct swap_list\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.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": "15f59adae001766a2c7f7fe4f196387bb04bcff5",
      "tree": "941f7a7c38af5783d55560ce303f3432fcffc01b",
      "parents": [
        "9d8fddfb17aaee4ffc5e3d0560620d0fa8b50a42"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 19:46:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:12 2008 -0700"
      },
      "message": "make mm/memory.c:print_bad_pte() static\n\nThis patch makes the needlessly global print_bad_pte() static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.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": "9d8fddfb17aaee4ffc5e3d0560620d0fa8b50a42",
      "tree": "f8a6b13a3048d1ae9c169b2d732fa05d8dcdf2ac",
      "parents": [
        "9e5c6da71e89fa25ced6e88182225a99941bec90"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 19:46:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:12 2008 -0700"
      },
      "message": "mm/allocpercpu.c: make 4 functions static\n\nThis patch makes the following needlessly global functions static:\n - percpu_depopulate()\n - __percpu_depopulate_mask()\n - percpu_populate()\n - __percpu_populate_mask()\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-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": "9e5c6da71e89fa25ced6e88182225a99941bec90",
      "tree": "076faf410107f55d1d6cfdf05c779faf0b5d21e3",
      "parents": [
        "23d5f96ce6571da51c0f6bfa7361e5f91f314b2b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 19:46:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:12 2008 -0700"
      },
      "message": "make mm/sparse.c: make a function static\n\nThis patch makes the needlessly global sparse_early_mem_map_alloc()\nstatic.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c97b7fc0d8c8661981beb9517da342ced3b3bc7",
      "tree": "c1cc4bd6a13624f38a7e2c7ea242efdb79193696",
      "parents": [
        "ebcb67341fee34061430f3367f2e507e52ee051b"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Fri Jul 25 19:46:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:10 2008 -0700"
      },
      "message": "mm: print swapcache page count in show_swap_cache_info()\n\nEvery arch implements its own show_mem() function.  Most of them share\nquite some code, some of them are completely identical.\n\nThis series implements a generic version of this function and migrates\nalmost all architectures to it.\n\nThis patch:\n\nMost show_mem() implementations calculate the amount of pages within\nthe swapcache every time.  Move the output to a more appropriate place\nand use the anyway available total_swapcache_pages variable.\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nCc: Richard Henderson \u003crth@twiddle.net\u003e\nCc: Ivan Kokshaysky \u003cink@jurassic.park.msu.ru\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nCc: Bryan Wu \u003ccooloney@kernel.org\u003e\nCc: Chris Zankel \u003cchris@zankel.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Yoshinori Sato \u003cysato@users.sourceforge.jp\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Greg Ungerer \u003cgerg@uclinux.org\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nCc: Roman Zippel \u003czippel@linux-m68k.org\u003e\nCc: Hirokazu Takata \u003ctakata@linux-m32r.org\u003e\nCc: Mikael Starvik \u003cstarvik@axis.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fa8e26ccd485216fc45c8c2dd1ec3b7ef1a0a2f8",
      "tree": "b6c3059593d7d185aaf7f5b69c363a48b18c5bb1",
      "parents": [
        "0d094efeb1e98010c6b99923f1eb7e17bf1e3a74"
      ],
      "author": {
        "name": "Roland McGrath",
        "email": "roland@redhat.com",
        "time": "Fri Jul 25 19:45:50 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:09 2008 -0700"
      },
      "message": "tracehook: tracehook_expect_breakpoints\n\nThis adds tracehook_expect_breakpoints() as a formal hook for the nommu\ncode to use for its, \"Is text-poking likely?\" check at mmap time.  This\nnames the actual semantics the code means to test, and documents it.\n\nSigned-off-by: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4c8573e25f27b60b495aaa23089032f685ffd5ba",
      "tree": "2e145313b10076801e8c60828f22d73d14ec2fd7",
      "parents": [
        "b8c512f6190e313df69060bae4a161c5c044e272"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jul 25 19:45:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "Use WARN() in mm/vmalloc.c\n\nUse WARN() instead of a printk+WARN_ON() pair; this way the message becomes\npart of the warning section for better reporting/collection.\n\nSigned-off-by: Arjan van de Ven \u003carjan@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": "51cc50685a4275c6a02653670af9f108a64e01cf",
      "tree": "819d47bd2b0c8a9d1835d863853804b0a0242b97",
      "parents": [
        "d91958815d214ea365b98cbff6215383897edcb6"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Fri Jul 25 19:45:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "SL*B: drop kmem cache argument from constructor\n\nKmem cache passed to constructor is only needed for constructors that are\nthemselves multiplexeres.  Nobody uses this \"feature\", nor does anybody uses\npassed kmem cache in non-trivial way, so pass only pointer to object.\n\nNon-trivial places are:\n\tarch/powerpc/mm/init_64.c\n\tarch/powerpc/mm/hugetlbpage.c\n\nThis is flag day, yes.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Jon Tollefson \u003ckniht@linux.vnet.ibm.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\n[akpm@linux-foundation.org: fix arch/powerpc/mm/hugetlbpage.c]\n[akpm@linux-foundation.org: fix mm/slab.c]\n[akpm@linux-foundation.org: fix ubifs]\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19fd6231279be3c3bdd02ed99f9b0eb195978064",
      "tree": "ee09121054262d73c551b57114acd855b82a7a82",
      "parents": [
        "a60637c85893e7191faaafa6a72e197c24386727"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: spinlock tree_lock\n\nmapping-\u003etree_lock has no read lockers.  convert the lock from an rwlock\nto a spinlock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: 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": "a60637c85893e7191faaafa6a72e197c24386727",
      "tree": "fa3ec63f505e64d3b4a2be4efd9a5314ab5f6234",
      "parents": [
        "e286781d5f2e9c846e012a39653a166e9d31777d"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:31 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: lockless pagecache\n\nCombine page_cache_get_speculative with lockless radix tree lookups to\nintroduce lockless page cache lookups (ie.  no mapping-\u003etree_lock on the\nread-side).\n\nThe only atomicity changes this introduces is that the gang pagecache\nlookup functions now behave as if they are implemented with multiple\nfind_get_page calls, rather than operating on a snapshot of the pages.  In\npractice, this atomicity guarantee is not used anyway, and it is to\nreplace individual lookups, so these semantics are natural.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: 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": "e286781d5f2e9c846e012a39653a166e9d31777d",
      "tree": "14958fe6d8f3e0459c96c68b3034ea2433ab85ac",
      "parents": [
        "47feff2c8eefe85099f87c43d3096855f0085ca0"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:30 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: speculative page references\n\nIf we can be sure that elevating the page_count on a pagecache page will\npin it, we can speculatively run this operation, and subsequently check to\nsee if we hit the right page rather than relying on holding a lock or\notherwise pinning a reference to the page.\n\nThis can be done if get_page/put_page behaves consistently throughout the\nwhole tree (ie.  if we \"get\" the page after it has been used for something\nelse, we must be able to free it with a put_page).\n\nActually, there is a period where the count behaves differently: when the\npage is free or if it is a constituent page of a compound page.  We need\nan atomic_inc_not_zero operation to ensure we don\u0027t try to grab the page\nin either case.\n\nThis patch introduces the core locking protocol to the pagecache (ie.\nadds page_cache_get_speculative, and tweaks some update-side code to make\nit work).\n\nThanks to Hugh for pointing out an improvement to the algorithm setting\npage_count to zero when we have control of all references, in order to\nhold off speculative getters.\n\n[kamezawa.hiroyu@jp.fujitsu.com: fix migration_entry_wait()]\n[hugh@veritas.com: fix add_to_page_cache]\n[akpm@linux-foundation.org: repair a comment]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeff Garzik \u003cjeff@garzik.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "30002ed2e41830ec03ec3e577ad83ac6b188f96e",
      "tree": "13896f3038e391eb41246455239d7678cf51b011",
      "parents": [
        "652ea695364142b2464744746beac206d050ef19"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:28 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: readahead scan lockless\n\nradix_tree_next_hole() is implemented as a series of radix_tree_lookup()s.\nSo it can be called locklessly, under rcu_read_lock().\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: 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": "8174c430e445a93016ef18f717fe570214fa38bf",
      "tree": "f1b4426eae7401425e9102c7b3e141be86f0930c",
      "parents": [
        "21cc199baa815d7b3f1ace4be20b9558cbddc00f"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "x86: lockless get_user_pages_fast()\n\nImplement get_user_pages_fast without locking in the fastpath on x86.\n\nDo an optimistic lockless pagetable walk, without taking mmap_sem or any\npage table locks or even mmap_sem.  Page table existence is guaranteed by\nturning interrupts off (combined with the fact that we\u0027re always looking\nup the current mm, means we can do the lockless page table walk within the\nconstraints of the TLB shootdown design).  Basically we can do this\nlockless pagetable walk in a similar manner to the way the CPU\u0027s pagetable\nwalker does not have to take any locks to find present ptes.\n\nThis patch (combined with the subsequent ones to convert direct IO to use\nit) was found to give about 10% performance improvement on a 2 socket 8\ncore Intel Xeon system running an OLTP workload on DB2 v9.5\n\n \"To test the effects of the patch, an OLTP workload was run on an IBM\n  x3850 M2 server with 2 processors (quad-core Intel Xeon processors at\n  2.93 GHz) using IBM DB2 v9.5 running Linux 2.6.24rc7 kernel.  Comparing\n  runs with and without the patch resulted in an overall performance\n  benefit of ~9.8%.  Correspondingly, oprofiles showed that samples from\n  __up_read and __down_read routines that is seen during thread contention\n  for system resources was reduced from 2.8% down to .05%.  Monitoring the\n  /proc/vmstat output from the patched run showed that the counter for\n  fast_gup contained a very high number while the fast_gup_slow value was\n  zero.\"\n\n(fast_gup is the old name for get_user_pages_fast, fast_gup_slow is a\ncounter we had for the number of times the slowpath was invoked).\n\nThe main reason for the improvement is that DB2 has multiple threads each\nissuing direct-IO.  Direct-IO uses get_user_pages, and thus the threads\ncontend the mmap_sem cacheline, and can also contend on page table locks.\n\nI would anticipate larger performance gains on larger systems, however I\nthink DB2 uses an adaptive mix of threads and processes, so it could be\nthat thread contention remains pretty constant as machine size increases.\nIn which case, we stuck with \"only\" a 10% gain.\n\nThe downside of using get_user_pages_fast is that if there is not a pte\nwith the correct permissions for the access, we end up falling back to\nget_user_pages and so the get_user_pages_fast is a bit of extra work.\nHowever this should not be the common case in most performance critical\ncode.\n\n[akpm@linux-foundation.org: coding-style fixes]\n[akpm@linux-foundation.org: build fix]\n[akpm@linux-foundation.org: Kconfig fix]\n[akpm@linux-foundation.org: Makefile fix/cleanup]\n[akpm@linux-foundation.org: warning fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nReviewed-by: 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": "8a21346058ad946134b6ddfeb5de975c3cfcf5da",
      "tree": "cd9210fc5a56a5d3090941d62f1bc0217499940f",
      "parents": [
        "16d69265b930f7e2fa9eea381715696f780718f4"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Fri Jul 25 19:44:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:01 2008 -0700"
      },
      "message": "hugetlb: fix CONFIG_SYSCTL\u003dn build\n\nFixes a build failure reported by Alan Cox:\n\nmm/hugetlb.c: In function `hugetlb_acct_memory\u0027: mm/hugetlb.c:1507:\nerror: implicit declaration of function `cpuset_mems_nr\u0027\n\nAlso reverts Ingo\u0027s\n\n    commit e44d1b2998d62a1f2f4d7eb17b56ba396535509f\n    Author: Ingo Molnar \u003cmingo@elte.hu\u003e\n    Date:   Fri Jul 25 12:57:41 2008 +0200\n\n        mm/hugetlb.c: fix build failure with !CONFIG_SYSCTL\n\nwhich fixed the build error but added some unused-static-function warnings.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "16d69265b930f7e2fa9eea381715696f780718f4",
      "tree": "5b3bf02f5f4fe21da4e9b5e0f22f6518bd81b609",
      "parents": [
        "0c7ad106e779549792deb307242dece6f3499bb9"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Fri Jul 25 19:44:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:01 2008 -0700"
      },
      "message": "uninline arch_pick_mmap_layout()\n\nFix this, on avr32:\n\n  include/linux/utsname.h:35,\n                   from init/main.c:20:\n  include/linux/sched.h: In function \u0027arch_pick_mmap_layout\u0027:\n  include/linux/sched.h:2149: error: implicit declaration of function \u0027PAGE_ALIGN\u0027\n\nReported-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e44d1b2998d62a1f2f4d7eb17b56ba396535509f",
      "tree": "febb4d6e113c34e0f83375712f078da41a0a59af",
      "parents": [
        "5047887caf1806f31652210df27fb62a7c43f27d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 25 12:57:41 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 11:35:41 2008 -0700"
      },
      "message": "mm/hugetlb.c: fix build failure with !CONFIG_SYSCTL\n\non !CONFIG_SYSCTL on x86 with latest -git i get:\n\n     mm/hugetlb.c: In function \u0027decrement_hugepage_resv_vma\u0027:\n     mm/hugetlb.c:83: error: \u0027reserve\u0027 undeclared (first use in this function)\n     mm/hugetlb.c:83: error: (Each undeclared identifier is reported only once\n     mm/hugetlb.c:83: error: for each function it appears in.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "873b47717732c2f33a4b14de02571a4295a02f0c",
      "tree": "aaef0fe872dbd4ce5c290f3509e5db69f9a3f04a",
      "parents": [
        "3e85ba034deec351f02cb55ff225bbd616463841"
      ],
      "author": {
        "name": "Keika Kobayashi",
        "email": "kobayashi.kk@ncos.nec.co.jp",
        "time": "Fri Jul 25 01:48:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:47 2008 -0700"
      },
      "message": "per-task-delay-accounting: add memory reclaim delay\n\nSometimes, application responses become bad under heavy memory load.\nApplications take a bit time to reclaim memory.  The statistics, how long\nmemory reclaim takes, will be useful to measure memory usage.\n\nThis patch adds accounting memory reclaim to per-task-delay-accounting for\naccounting the time of do_try_to_free_pages().\n\n\u003ci.e\u003e\n\n- When System is under low memory load,\n  memory reclaim may not occur.\n\n$ free\n             total       used       free     shared    buffers     cached\nMem:       8197800    1577300    6620500          0       4808    1516724\n-/+ buffers/cache:      55768    8142032\nSwap:     16386292          0   16386292\n\n$ vmstat 1\nprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----\n r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa\n 0  0      0 5069748  10612 3014060    0    0     0     0    3   26  0  0 100  0\n 0  0      0 5069748  10612 3014060    0    0     0     0    4   22  0  0 100  0\n 0  0      0 5069748  10612 3014060    0    0     0     0    3   18  0  0 100  0\n\nMeasure the time of tar command.\n\n$ ls -s test.dat\n1501472 test.dat\n\n$ time tar cvf test.tar test.dat\nreal    0m13.388s\nuser    0m0.116s\nsys     0m5.304s\n\n$ ./delayget -d -p \u003cpid\u003e\nCPU             count     real total  virtual total    delay total\n                  428     5528345500     5477116080       62749891\nIO              count    delay total\n                  338     8078977189\nSWAP            count    delay total\n                    0              0\nRECLAIM         count    delay total\n                    0              0\n\n- When system is under heavy memory load\n  memory reclaim may occur.\n\n$ vmstat 1\nprocs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----\n r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa\n 0  0 7159032  49724   1812   3012    0    0     0     0    3   24  0  0 100  0\n 0  0 7159032  49724   1812   3012    0    0     0     0    4   24  0  0 100  0\n 0  0 7159032  49848   1812   3012    0    0     0     0    3   22  0  0 100  0\n\nIn this case, one process uses more 8G memory\nby execution of malloc() and memset().\n\n$ time tar cvf test.tar test.dat\nreal    1m38.563s        \u003c-  increased by 85 sec\nuser    0m0.140s\nsys     0m7.060s\n\n$ ./delayget -d -p \u003cpid\u003e\nCPU             count     real total  virtual total    delay total\n                 9021     7140446250     7315277975      923201824\nIO              count    delay total\n                 8965    90466349669\nSWAP            count    delay total\n                    3       21036367\nRECLAIM         count    delay total\n                  740    61011951153\n\nIn the later case, the value of RECLAIM is increasing.\nSo, taskstats can show how much memory reclaim influences TAT.\n\nSigned-off-by: Keika Kobayashi \u003ckobayashi.kk@ncos.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujistu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "628f42355389cfb596ca3a5a5f64fb9054a2a06a",
      "tree": "a1a19788e554f4345f80ae835edcb5ad2402533a",
      "parents": [
        "12b9804419cfb1c1bdac413f6c373af3b88d154b"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:20 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: limit change shrink usage\n\nShrinking memory usage at limit change.\n\n[akpm@linux-foundation.org: coding-style fixes]\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cede86acd8bd5d2205dec28db8ac86410a3a19e8",
      "tree": "67ad2d42cadee0b6f9a4de21e06602faae8d8604",
      "parents": [
        "accf163e6ab729f1fc5fffaa0310e498270bf4e7"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Fri Jul 25 01:47:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: clean up checking of the disabled flag\n\nThose checks are unnecessary, because when the subsystem is disabled\nit can\u0027t be mounted, so those functions won\u0027t get called.\n\nThe check is needed in functions which will be called in other places\nexcept cgroup.\n\n[hugh@veritas.com: further checking of disabled flag]\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "accf163e6ab729f1fc5fffaa0310e498270bf4e7",
      "tree": "798d5c97aa10bd26018fb1175a176c9d57560a39",
      "parents": [
        "b76734e5e34e1889ab9fc5f3756570b1129f0f50"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: remove a redundant check\n\nBecause of remove refcnt patch, it\u0027s very rare case to that\nmem_cgroup_charge_common() is called against a page which is accounted.\n\nmem_cgroup_charge_common() is called when.\n 1. a page is added into file cache.\n 2. an anon page is _newly_ mapped.\n\nA racy case is that a newly-swapped-in anonymous page is referred from\nprural threads in do_swap_page() at the same time.\n(a page is not Locked when mem_cgroup_charge() is called from do_swap_page.)\n\nAnother case is shmem. It charges its page before calling add_to_page_cache().\nThen, mem_cgroup_charge_cache() is called twice. This case is handled in\nmem_cgroup_cache_charge(). But this check may be too hacky...\n\nSigned-off-by : KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b76734e5e34e1889ab9fc5f3756570b1129f0f50",
      "tree": "9929c25da8b9c29fcb0c5394023f66b7668cdfa1",
      "parents": [
        "c9b0ed51483cc2fc42bb801b6675c4231b0e4634"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:16 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: add hints for branch\n\nShowing brach direction for obvious conditions.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9b0ed51483cc2fc42bb801b6675c4231b0e4634",
      "tree": "1d322b4bfcaad3296752f6efcab918d1b13b50a3",
      "parents": [
        "69029cd550284e32de13d6dd2f77b723c8a0e444"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: helper function for relcaim from shmem.\n\nA new call, mem_cgroup_shrink_usage() is added for shmem handling and\nrelacing non-standard usage of mem_cgroup_charge/uncharge.\n\nNow, shmem calls mem_cgroup_charge() just for reclaim some pages from\nmem_cgroup.  In general, shmem is used by some process group and not for\nglobal resource (like file caches).  So, it\u0027s reasonable to reclaim pages\nfrom mem_cgroup where shmem is mainly used.\n\n[hugh@veritas.com: shmem_getpage release page sooner]\n[hugh@veritas.com: mem_cgroup_shrink_usage css_put]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69029cd550284e32de13d6dd2f77b723c8a0e444",
      "tree": "b57b87e5025b6c01722f39302cb98d0dfcd58940",
      "parents": [
        "e8589cc189f96b87348ae83ea4db38eaac624135"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: remove refcnt from page_cgroup\n\nmemcg: performance improvements\n\nPatch Description\n 1/5 ... remove refcnt fron page_cgroup patch (shmem handling is fixed)\n 2/5 ... swapcache handling patch\n 3/5 ... add helper function for shmem\u0027s memory reclaim patch\n 4/5 ... optimize by likely/unlikely ppatch\n 5/5 ... remove redundunt check patch (shmem handling is fixed.)\n\nUnix bench result.\n\n\u003d\u003d 2.6.26-rc2-mm1 + memory resource controller\nExecl Throughput                           2915.4 lps   (29.6 secs, 3 samples)\nC Compiler Throughput                      1019.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5796.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1097.7 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               565.3 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1022128.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   544057.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    346481.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      319325.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     148788.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks       99051.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2058917.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1606109.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    854789.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         126145.2 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     2915.4      678.0\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   346481.0      875.0\nFile Copy 256 bufsize 500 maxblocks           1655.0    99051.0      598.5\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   854789.0     1473.8\nShell Scripts (8 concurrent)                     6.0     1097.7     1829.5\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                     991.3\n\n\u003d\u003d 2.6.26-rc2-mm1 + this set \u003d\u003d\nExecl Throughput                           3012.9 lps   (29.9 secs, 3 samples)\nC Compiler Throughput                       981.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (1 concurrent)               5872.0 lpm   (60.0 secs, 3 samples)\nShell Scripts (8 concurrent)               1120.3 lpm   (60.0 secs, 3 samples)\nShell Scripts (16 concurrent)               578.0 lpm   (60.0 secs, 3 samples)\nFile Read 1024 bufsize 2000 maxblocks    1003993.0 KBps  (30.0 secs, 3 samples)\nFile Write 1024 bufsize 2000 maxblocks   550452.0 KBps  (30.0 secs, 3 samples)\nFile Copy 1024 bufsize 2000 maxblocks    347159.0 KBps  (30.0 secs, 3 samples)\nFile Read 256 bufsize 500 maxblocks      314644.0 KBps  (30.0 secs, 3 samples)\nFile Write 256 bufsize 500 maxblocks     151852.0 KBps  (30.0 secs, 3 samples)\nFile Copy 256 bufsize 500 maxblocks      101000.0 KBps  (30.0 secs, 3 samples)\nFile Read 4096 bufsize 8000 maxblocks    2033256.0 KBps  (30.0 secs, 3 samples)\nFile Write 4096 bufsize 8000 maxblocks   1611814.0 KBps  (30.0 secs, 3 samples)\nFile Copy 4096 bufsize 8000 maxblocks    847979.0 KBps  (30.0 secs, 3 samples)\nDc: sqrt(2) to 99 decimal places         128148.7 lpm   (30.0 secs, 3 samples)\n\n                     INDEX VALUES\nTEST                                        BASELINE     RESULT      INDEX\n\nExecl Throughput                                43.0     3012.9      700.7\nFile Copy 1024 bufsize 2000 maxblocks         3960.0   347159.0      876.7\nFile Copy 256 bufsize 500 maxblocks           1655.0   101000.0      610.3\nFile Copy 4096 bufsize 8000 maxblocks         5800.0   847979.0     1462.0\nShell Scripts (8 concurrent)                     6.0     1120.3     1867.2\n                                                                 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n     FINAL SCORE                                                    1004.6\n\nThis patch:\n\nRemove refcnt from page_cgroup().\n\nAfter this,\n\n * A page is charged only when !page_mapped() \u0026\u0026 no page_cgroup is assigned.\n\t* Anon page is newly mapped.\n\t* File page is added to mapping-\u003etree.\n\n * A page is uncharged only when\n\t* Anon page is fully unmapped.\n\t* File page is removed from LRU.\n\nThere is no change in behavior from user\u0027s view.\n\nThis patch also removes unnecessary calls in rmap.c which was used only for\nrefcnt mangement.\n\n[akpm@linux-foundation.org: fix warning]\n[hugh@veritas.com: fix shmem_unuse_inode charging]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8589cc189f96b87348ae83ea4db38eaac624135",
      "tree": "6693422dc81e6da78c4ad892b0d326fb7f946dda",
      "parents": [
        "508b7be0a5b06b64203512ed9b34191cddc83f56"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: better migration handling\n\nThis patch changes page migration under memory controller to use a\ndifferent algorithm.  (thanks to Christoph for new idea.)\n\nBefore:\n - page_cgroup is migrated from an old page to a new page.\nAfter:\n - a new page is accounted , no reuse of page_cgroup.\n\nPros:\n\n - We can avoid compliated lock depndencies and races in migration.\n\nCons:\n\n - new param to mem_cgroup_charge_common().\n\n - mem_cgroup_getref() is added for handling ref_cnt ping-pong.\n\nThis version simplifies complicated lock dependency in page migraiton\nunder memory resource controller.\n\n  new refcnt sequence is following.\n\na mapped page:\n  prepage_migration() ..... +1 to NEW page\n  try_to_unmap()      ..... all refs to OLD page is gone.\n  move_pages()        ..... +1 to NEW page if page cache.\n  remap...            ..... all refs from *map* is added to NEW one.\n  end_migration()     ..... -1 to New page.\n\n  page\u0027s mapcount + (page_is_cache) refs are added to NEW one.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "508b7be0a5b06b64203512ed9b34191cddc83f56",
      "tree": "48b1be978a74d7c2b333efe8a2d1a1187bfe67f0",
      "parents": [
        "a181b0e888a1d917edcab57cd73ccf7d8e75a46c"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: avoid unnecessary initialization\n\n* remove over-killing initialization (in fast path)\n* makeing the condition for PAGE_CGROUP_FLAG_ACTIVE be more obvious.\n\nSigned-off-by: KAMEAZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a181b0e888a1d917edcab57cd73ccf7d8e75a46c",
      "tree": "d58dc8da5c16840d3c530ee9cc0014906630ed4b",
      "parents": [
        "7759fc9d10d3559f365cb122d81e0c0a185fe0fe"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Fri Jul 25 01:47:08 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:37 2008 -0700"
      },
      "message": "memcg: make global var read_mostly\n\nmem_cgroup_subsys and page_cgroup_cache should be read_mostly and\nMEM_CGROUP_RECLAIM_RETRIES can be just a fixed number.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "856c13aa1ff6136c1968414fdea5938ea9d5ebf2",
      "tree": "deee908f253c77cbcb868a915e45bfb2ed99383c",
      "parents": [
        "f92523e3a7861f5dbd76021e0719a35fe8771f2d"
      ],
      "author": {
        "name": "Paul Menage",
        "email": "menage@google.com",
        "time": "Fri Jul 25 01:47:04 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:36 2008 -0700"
      },
      "message": "cgroup files: convert res_counter_write() to be a cgroups write_string() handler\n\nCurrently res_counter_write() is a raw file handler even though it\u0027s\nultimately taking a number, since in some cases it wants to\npre-process the string when converting it to a number.\n\nThis patch converts res_counter_write() from a raw file handler to a\nwrite_string() handler; this allows some of the boilerplate\ncopying/locking/checking to be removed, and simplies the cleanup path,\nsince these functions are now performed by the cgroups framework.\n\n[lizf@cn.fujitsu.com: build fix]\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nCc: Paul Jackson \u003cpj@sgi.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3f31fddfa26b7594b44ff2b34f9a04ba409e0f91",
      "tree": "88994baf22f65dc4da0bef17ce61eda09c59db2a",
      "parents": [
        "9ebfbe9f926553eabc21b4400918d1216b27ed0c"
      ],
      "author": {
        "name": "Mingming Cao",
        "email": "cmm@us.ibm.com",
        "time": "Fri Jul 25 01:46:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:32 2008 -0700"
      },
      "message": "jbd: fix race between free buffer and commit transaction\n\njournal_try_to_free_buffers() could race with jbd commit transaction when\nthe later is holding the buffer reference while waiting for the data\nbuffer to flush to disk.  If the caller of journal_try_to_free_buffers()\nrequest tries hard to release the buffers, it will treat the failure as\nerror and return back to the caller.  We have seen the directo IO failed\ndue to this race.  Some of the caller of releasepage() also expecting the\nbuffer to be dropped when passed with GFP_KERNEL mask to the\nreleasepage()-\u003ejournal_try_to_free_buffers().\n\nWith this patch, if the caller is passing the __GFP_WAIT and __GFP_FS to\nindicating this call could wait, in case of try_to_free_buffers() failed,\nlet\u0027s waiting for journal_commit_transaction() to finish commit the\ncurrent committing transaction, then try to free those buffers again.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Mingming Cao \u003ccmm@us.ibm.com\u003e\nReviewed-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2b4bc46052ea8cd7c370b67ca0b9c26586f1439a",
      "tree": "7ea589780fa4f579e2d678bbf4c2655c57cfadbb",
      "parents": [
        "b69c49b78457f681ecfb3147bd968434ee6559c1"
      ],
      "author": {
        "name": "OGAWA Hirofumi",
        "email": "hirofumi@mail.parknet.co.jp",
        "time": "Fri Jul 25 01:45:42 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jul 25 10:53:28 2008 -0700"
      },
      "message": "pdflush: use time_after() instead of open-coding it\n\nSigned-off-by: OGAWA Hirofumi \u003chirofumi@mail.parknet.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78ecba081224a2db5876b6b81cfed0b78f58adc7",
      "tree": "db29cc9357ea95172f42e64e833a3a7d3fcfa8fb",
      "parents": [
        "83d1674a946141c3c59d430e96c224f7937e6158"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Jul 23 21:28:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "mm: fix ever-decreasing swap priority\n\nVegard Nossum has noticed the ever-decreasing negative priority in a\nswapon /swapoff loop, which eventually would misprioritize when int wraps\npositive.  Not worth spending much code on, but probably better fixed.\n\nIt\u0027s easy to handle the swapping on and off of just one area, but there\u0027s\nnot much point if a pair or more still misbehave.  To handle the general\ncase, swapoff should compact negative priorities, keeping them always from\n-1 to -MAX_SWAPFILES.  That\u0027s a change, but should cause no regression,\nsince these negative (unspecified) priorities are disjoint from the the\npositive specified priorities 0 to 32767.\n\nOne small functional difference, which seems appropriate: when swapoff\nfails to free all swap from a negative priority area, that area is now\nreinserted at lowest priority, rather than at its original priority.\n\nIn moving down swapon\u0027s setting of priority, I notice that an area is\nvisible to /proc/swaps when it has swap_map set, yet that was being set\nbefore all the visible fields were properly filled in: corrected.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Vegard Nossum \u003cvegard.nossum@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": "83d1674a946141c3c59d430e96c224f7937e6158",
      "tree": "03420c9fdf56ad35de685b7c0b48899d886bd7ff",
      "parents": [
        "9ca908f47bc784c90e17a553ce33e756c73feac4"
      ],
      "author": {
        "name": "Gerald Schaefer",
        "email": "gerald.schaefer@de.ibm.com",
        "time": "Wed Jul 23 21:28:22 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "mm: make CONFIG_MIGRATION available w/o CONFIG_NUMA\n\nWe\u0027d like to support CONFIG_MEMORY_HOTREMOVE on s390, which depends on\nCONFIG_MIGRATION.  So far, CONFIG_MIGRATION is only available with NUMA\nsupport.\n\nThis patch makes CONFIG_MIGRATION selectable for architectures that define\nARCH_ENABLE_MEMORY_HOTREMOVE.  When MIGRATION is enabled w/o NUMA, the\nkernel won\u0027t compile because migrate_vmas() does not know about\nvm_ops-\u003emigrate() and vma_migratable() does not know about policy_zone.\nTo fix this, those two functions can be restricted to \u0027#ifdef CONFIG_NUMA\u0027\nbecause they are not being used w/o NUMA.  vma_migratable() is moved over\nfrom migrate.h to mempolicy.h.\n\n[kosaki.motohiro@jp.fujitsu.com: build fix]\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: Gerald Schaefer \u003cgerald.schaefer@de.ibm.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: KOSAKI Motorhiro \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": "5c755e9fd813810680abd56ec09a5f90143e815b",
      "tree": "1686c0666f6bd630441957a53c546d90b0f61723",
      "parents": [
        "2f7f24eca31c4fc2fdb134b2ef743ccd67cfb9a9"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Wed Jul 23 21:28:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "memory-hotplug: add sysfs removable attribute for hotplug memory remove\n\nMemory may be hot-removed on a per-memory-block basis, particularly on\nPOWER where the SPARSEMEM section size often matches the memory-block\nsize.  A user-level agent must be able to identify which sections of\nmemory are likely to be removable before attempting the potentially\nexpensive operation.  This patch adds a file called \"removable\" to the\nmemory directory in sysfs to help such an agent.  In this patch, a memory\nblock is considered removable if;\n\no It contains only MOVABLE pageblocks\no It contains only pageblocks with free pages regardless of pageblock type\n\nOn the other hand, a memory block starting with a PageReserved() page will\nnever be considered removable.  Without this patch, the user-agent is\nforced to choose a memory block to remove randomly.\n\nSample output of the sysfs files:\n\n./memory/memory0/removable: 0\n./memory/memory1/removable: 0\n./memory/memory2/removable: 0\n./memory/memory3/removable: 0\n./memory/memory4/removable: 0\n./memory/memory5/removable: 0\n./memory/memory6/removable: 0\n./memory/memory7/removable: 1\n./memory/memory8/removable: 0\n./memory/memory9/removable: 0\n./memory/memory10/removable: 0\n./memory/memory11/removable: 0\n./memory/memory12/removable: 0\n./memory/memory13/removable: 0\n./memory/memory14/removable: 0\n./memory/memory15/removable: 0\n./memory/memory16/removable: 0\n./memory/memory17/removable: 1\n./memory/memory18/removable: 1\n./memory/memory19/removable: 1\n./memory/memory20/removable: 1\n./memory/memory21/removable: 1\n./memory/memory22/removable: 1\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\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": "2f7f24eca31c4fc2fdb134b2ef743ccd67cfb9a9",
      "tree": "6c2169b8a7b160cbacdc41f376a4e2dea993e579",
      "parents": [
        "af370fb8cb3031f20438f246798d5f0d98089f29"
      ],
      "author": {
        "name": "Kent Liu",
        "email": "kent.liu@linux.intel.com",
        "time": "Wed Jul 23 21:28:18 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "memory-hotplug: don\u0027t calculate vm_total_pages twice when rebuilding zonelists in online_pages()\n\nIf zonelist is required to be rebuilt in online_pages(), there is no need\nto recalculate vm_total_pages in that function, as it has been updated in\nthe call build_all_zonelists().\n\nSigned-off-by: Kent Liu \u003ckent.liu@linux.intel.com\u003e\nAcked-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af370fb8cb3031f20438f246798d5f0d98089f29",
      "tree": "a5b06adeeaeaafb89c7d326ed1daabd0caa364c8",
      "parents": [
        "48c906823f3927b981db9f0b03c2e2499977ee93"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Wed Jul 23 21:28:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "memory hotplug: small fixes to bootmem freeing for memory hotremove\n\n- Change some naming\n  * Magic -\u003e types\n  * MIX_INFO -\u003e MIX_SECTION_INFO\n  * Change definition of bootmem type from direct hex value\n\n- __free_pages_bootmem() becomes __meminit.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Yinghai Lu \u003cyhlu.kernel@gmail.com\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48c906823f3927b981db9f0b03c2e2499977ee93",
      "tree": "f01270b14dbc8e0816e966e1aed1e3294e1c1d4a",
      "parents": [
        "f84f9504bddeec33a72d64ebe95143d3aaeb3f9b"
      ],
      "author": {
        "name": "Yasunori Goto",
        "email": "y-goto@jp.fujitsu.com",
        "time": "Wed Jul 23 21:28:15 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "memory hotplug: allocate usemap on the section with pgdat\n\nUsemaps are allocated on the section which has pgdat by this.\n\nBecause usemap size is very small, many other sections usemaps are\nallocated on only one page.  If a section has usemap, it can\u0027t be removed\nuntil removing other sections.  This dependency is not desirable for\nmemory removing.\n\nPgdat has similar feature.  When a section has pgdat area, it must be the\nlast section for removing on the node.  So, if section A has pgdat and\nsection B has usemap for section A, Both sections can\u0027t be removed due to\ndependency each other.\n\nTo solve this issue, this patch collects usemap on same section with pgdat\nas much as possible.  If other sections doesn\u0027t have any dependency, this\nsection will be able to be removed finally.\n\nSigned-off-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Hiroyuki KAMEZAWA \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Tony Breeds \u003ctony@bakeyournoodle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f84f9504bddeec33a72d64ebe95143d3aaeb3f9b",
      "tree": "cf390092511689e9ae340a4cb74cf2104d5785ed",
      "parents": [
        "27ac792ca0b0a1e7e65f20342260650516c95864"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Wed Jul 23 21:28:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "mm: remove initialization of static per-cpu variables\n\nThis was required by some old, no-longer-used gcc on sparc.\n\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@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": "d92bc318547507a944a22e7ef936793dc0fe167f",
      "tree": "6c1406734048b3ea710de744389c2db07db8983c",
      "parents": [
        "b69a7288ea7bf171328f313f0edae629f50e3bdb"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Jul 23 21:28:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "mm: make register_page_bootmem_info_section() static\n\nMake the needlessly global register_page_bootmem_info_section() static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nAcked-by: Yasunori Goto \u003cy-goto@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b69a7288ea7bf171328f313f0edae629f50e3bdb",
      "tree": "20cb483cced19bda14dc4f12bbba6e7c1d01c4a3",
      "parents": [
        "2be0ffe2b29bd31d3debd0877797892ff2d91f4c"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Wed Jul 23 21:28:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:20 2008 -0700"
      },
      "message": "mm/page_alloc.c: cleanups\n\nThis patch contains the following cleanups:\n- make the following needlessly global variables static:\n  - required_kernelcore\n  - zone_movable_pfn[]\n- make the following needlessly global functions static:\n  - move_freepages()\n  - move_freepages_block()\n  - setup_pageset()\n  - find_usable_zone_for_movable()\n  - adjust_zone_range_for_zone_movable()\n  - __absent_pages_in_range()\n  - find_min_pfn_for_node()\n  - find_zone_movable_pfns_for_nodes()\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2be0ffe2b29bd31d3debd0877797892ff2d91f4c",
      "tree": "7f6e56b3fc5a721296851448e3facf821ef543dd",
      "parents": [
        "3560e249abda6bee41a07a7bf0383a6e193e2839"
      ],
      "author": {
        "name": "Timur Tabi",
        "email": "timur@freescale.com",
        "time": "Wed Jul 23 21:28:11 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:20 2008 -0700"
      },
      "message": "mm: add alloc_pages_exact() and free_pages_exact()\n\nalloc_pages_exact() is similar to alloc_pages(), except that it allocates\nthe minimum number of pages to fulfill the request.  This is useful if you\nwant to allocate a very large buffer that is slightly larger than an even\npower-of-two number of pages.  In that case, alloc_pages() will waste a\nlot of memory.\n\nI have a video driver that wants to allocate a 5MB buffer.  alloc_pages()\nwiill waste 3MB of physically-contiguous memory.\n\nSigned-off-by: Timur Tabi \u003ctimur@freescale.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3560e249abda6bee41a07a7bf0383a6e193e2839",
      "tree": "a5770b74f13dca64e34cd5a1e3182e4e1f98a9ca",
      "parents": [
        "75a56cfe9fdb064d1db1cfbc564315fddb756fb1"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@saeurebad.de",
        "time": "Wed Jul 23 21:28:09 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:20 2008 -0700"
      },
      "message": "bootmem: replace node_boot_start in struct bootmem_data\n\nAlmost all users of this field need a PFN instead of a physical address,\nso replace node_boot_start with node_min_pfn.\n\n[Lee.Schermerhorn@hp.com: fix spurious BUG_ON() in mark_bootmem()]\nSigned-off-by: Johannes Weiner \u003channes@saeureba.de\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "75a56cfe9fdb064d1db1cfbc564315fddb756fb1"
}
