)]}'
{
  "log": [
    {
      "commit": "3e6bdf473f489664dac4d7511d26c7ac3dfdc748",
      "tree": "10cb2e928830b9de8bbc3f6dd47c18c24cd2affa",
      "parents": [
        "3d4d4582e5b3f67a68f2cf32fd5b70d8d80f119d",
        "58d5d0d8dd52cbca988af24b5692a20b00285543"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 13:54:09 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 13:54:09 2008 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86:\n  x86: fix deadlock, make pgd_lock irq-safe\n  virtio: fix trivial build bug\n  x86: fix mttr trimming\n  x86: delay CPA self-test and repeat it\n  x86: fix 64-bit sections\n  generic: add __FINITDATA\n  x86: remove suprious ifdefs from pageattr.c\n  x86: mark the .rodata section also NX\n  x86: fix iret exception recovery on 64-bit\n  cpuidle: dubious one-bit signed bitfield in cpuidle.h\n  x86: fix sparse warnings in powernow-k8.c\n  x86: fix sparse error in traps_32.c\n  x86: trivial sparse/checkpatch in quirks.c\n  x86 ptrace: disallow null cs/ss\n  MAINTAINERS: RDC R-321x SoC maintainer\n  brk randomization: introduce CONFIG_COMPAT_BRK\n  brk: check the lower bound properly\n  x86: remove X2 workaround\n  x86: make spurious fault handler aware of large mappings\n  x86: make traps on entry code be debuggable in user space, 64-bit\n"
    },
    {
      "commit": "32a932332c8bad842804842eaf9651ad6268e637",
      "tree": "58f187409029f089f788c5c35ad5c200b4a555af",
      "parents": [
        "4cc6028d4040f95cdb590a87db478b42b8be0508"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "message": "brk randomization: introduce CONFIG_COMPAT_BRK\n\nbased on similar patch from: Pavel Machek \u003cpavel@ucw.cz\u003e\n\nIntroduce CONFIG_COMPAT_BRK. If disabled then the kernel is free\n(but not obliged to) randomize the brk area.\n\nHeap randomization breaks ancient binaries, so we keep COMPAT_BRK\nenabled by default.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4cc6028d4040f95cdb590a87db478b42b8be0508",
      "tree": "9b9879d8b8cc055e4bb8eabd69b979a17e6e52cd",
      "parents": [
        "2d684cd6d9cf0c6a0e28978362671b6e2d8fb56c"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 06 22:39:44 2008 +0100"
      },
      "message": "brk: check the lower bound properly\n\nThere is a check in sys_brk(), that tries to make sure that we do not\nunderflow the area that is dedicated to brk heap.\n\nThe check is however wrong, as it assumes that brk area starts immediately\nafter the end of the code (+bss), which is wrong for example in\nenvironments with randomized brk start. The proper way is to check whether\nthe address is not below the start_brk address.\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b3242151906372f30f57feaa43b4cac96a23edb1",
      "tree": "d258219aa13dfeae8d9fb5db1fd220a0664a680d",
      "parents": [
        "e7ca2d41a029577a8cff453d1445951d4f96bfd8"
      ],
      "author": {
        "name": "Eric Dumazet",
        "email": "dada1@cosmosbay.com",
        "time": "Wed Feb 06 01:37:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:04 2008 -0800"
      },
      "message": "PERCPU : __percpu_alloc_mask() can dynamically size percpu_data storage\n\nInstead of allocating a fix sized array of NR_CPUS pointers for percpu_data,\nwe can use nr_cpu_ids, which is generally \u003c NR_CPUS.\n\nSigned-off-by: Eric Dumazet \u003cdada1@cosmosbay.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \"David S. 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": "b297d520b9af536d5580ac505dd316be4cf5560c",
      "tree": "a8f292b308c166ebd383b73fa09538775352c874",
      "parents": [
        "c773633916c66f8362ca01983d97bd33e35b743f",
        "e34f44b3517fe545f7fd45a8c2f6ee1e5e4432d3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 19:05:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 19:05:48 2008 -0800"
      },
      "message": "Merge branch \u0027dmapool\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027dmapool\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc:\n  pool: Improve memory usage for devices which can\u0027t cross boundaries\n  Change dmapool free block management\n  dmapool: Tidy up includes and add comments\n  dmapool: Validate parameters to dma_pool_create\n  Avoid taking waitqueue lock in dmapool\n  dmapool: Fix style problems\n  Move dmapool.c to mm/ directory\n"
    },
    {
      "commit": "f905bc447c303fefcb180c7e8b641746ffa6cf87",
      "tree": "390d3f3490eb6b22a40598775538dd5bbd9653c1",
      "parents": [
        "f156ac8c7aeddb2d85294b7a3b849178625e15e2"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon Feb 04 22:29:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:21 2008 -0800"
      },
      "message": "nommu: add new vmalloc_user() and remap_vmalloc_range() interfaces.\n\nThis builds on top of the earlier vmalloc_32_user() work introduced by\nb50731732f926d6c49fd0724616a7344c31cd5cf, as we now have places in the nommu\nallmodconfig that hit up against these missing APIs.\n\nAs vmalloc_32_user() is already implemented, this is moved over to\nvmalloc_user() and simply made a wrapper.  As all current nommu platforms are\n32-bit addressable, there\u0027s no special casing we have to do for ZONE_DMA and\nthings of that nature as per GFP_VMALLOC32.\n\nremap_vmalloc_range() needs to check VM_USERMAP in order to figure out whether\nwe permit the remap or not, which means that we also have to rework the\nvmalloc_user() code to grovel for the VMA and set the flag.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nAcked-by: David McCullough \u003cdavid_mccullough@securecomputing.com\u003e\nAcked-by: David Howells \u003cdhowells@redhat.com\u003e\nAcked-by: Greg Ungerer \u003cgerg@snapgear.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "97829955ad291acec1d8b94e9911b3ceb1118bb1",
      "tree": "4af91977d82494375e09a961594f83ca77f253d7",
      "parents": [
        "3b7391de67da515c91f48aa371de77cb6cc5c07e"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Feb 04 22:29:47 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:20 2008 -0800"
      },
      "message": "oom_kill: remove uid\u003d\u003d0 checks\n\nRoot processes are considered more important when out of memory and killing\nproceses.  The check for CAP_SYS_ADMIN was augmented with a check for\nuid\u003d\u003d0 or euid\u003d\u003d0.\n\nThere are several possible ways to look at this:\n\n\t1. uid comparisons are unnecessary, trust CAP_SYS_ADMIN\n\t   alone.  However CAP_SYS_RESOURCE is the one that really\n\t   means \"give me extra resources\" so allow for that as\n\t   well.\n\t2. Any privileged code should be protected, but uid is not\n\t   an indication of privilege.  So we should check whether\n\t   any capabilities are raised.\n\t3. uid\u003d\u003d0 makes processes on the host as well as in containers\n\t   more important, so we should keep the existing checks.\n\t4. uid\u003d\u003d0 makes processes only on the host more important,\n\t   even without any capabilities.  So we should be keeping\n\t   the (uid\u003d\u003d0||euid\u003d\u003d0) check but only when\n\t   userns\u003d\u003d\u0026init_user_ns.\n\nI\u0027m following number 1 here.\n\nSigned-off-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Andrew Morgan \u003cmorgan@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": "e338d263a76af78fe8f38a72131188b58fceb591",
      "tree": "f3f046fc6fd66de43de7191830f0daf3bc4ec8eb",
      "parents": [
        "8f6936f4d29aa14e54a2470b954a2e1f96322988"
      ],
      "author": {
        "name": "Andrew Morgan",
        "email": "morgan@kernel.org",
        "time": "Mon Feb 04 22:29:42 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:20 2008 -0800"
      },
      "message": "Add 64-bit capability support to the kernel\n\nThe patch supports legacy (32-bit) capability userspace, and where possible\ntranslates 32-bit capabilities to/from userspace and the VFS to 64-bit\nkernel space capabilities.  If a capability set cannot be compressed into\n32-bits for consumption by user space, the system call fails, with -ERANGE.\n\nFWIW libcap-2.00 supports this change (and earlier capability formats)\n\n http://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/\n\n[akpm@linux-foundation.org: coding-syle fixes]\n[akpm@linux-foundation.org: use get_task_comm()]\n[ezk@cs.sunysb.edu: build fix]\n[akpm@linux-foundation.org: do not initialise statics to 0 or NULL]\n[akpm@linux-foundation.org: unused var]\n[serue@us.ibm.com: export __cap_ symbols]\nSigned-off-by: Andrew G. Morgan \u003cmorgan@kernel.org\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: James Morris \u003cjmorris@namei.org\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42492594043d621a7910ff5877c3eb9202870b45",
      "tree": "9188d112c019a189606847dc1d90ccc63c1bacf2",
      "parents": [
        "3729145821e3088a0c3c4183037fde356204bf97"
      ],
      "author": {
        "name": "David P. Quigley",
        "email": "dpquigl@tycho.nsa.gov",
        "time": "Mon Feb 04 22:29:39 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:20 2008 -0800"
      },
      "message": "VFS/Security: Rework inode_getsecurity and callers to return resulting buffer\n\nThis patch modifies the interface to inode_getsecurity to have the function\nreturn a buffer containing the security blob and its length via parameters\ninstead of relying on the calling function to give it an appropriately sized\nbuffer.\n\nSecurity blobs obtained with this function should be freed using the\nrelease_secctx LSM hook.  This alleviates the problem of the caller having to\nguess a length and preallocate a buffer for this function allowing it to be\nused elsewhere for Labeled NFS.\n\nThe patch also removed the unused err parameter.  The conversion is similar to\nthe one performed by Al Viro for the security_getprocattr hook.\n\nSigned-off-by: David P. Quigley \u003cdpquigl@tycho.nsa.gov\u003e\nCc: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nAcked-by: James Morris \u003cjmorris@namei.org\u003e\nAcked-by: Serge Hallyn \u003cserue@us.ibm.com\u003e\nCc: Casey Schaufler \u003ccasey@schaufler-ca.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20cecbae44528d347c46e71f40650b75e0dcbc8e",
      "tree": "fae7206c9aff698b76c5c6aab796539d047947bc",
      "parents": [
        "679299b32dbf9bac4bdaedc850fb95d0f81b4963"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Mon Feb 04 22:29:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "slob: reduce external fragmentation by using three free lists\n\nBy putting smaller objects on their own list, we greatly reduce overall\nexternal fragmentation and increase repeatability.  This reduces total SLOB\noverhead from \u003e 50% to ~6% on a simple boot test.\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "679299b32dbf9bac4bdaedc850fb95d0f81b4963",
      "tree": "1dc7edbdaf67611958273345b24d271f188371a8",
      "parents": [
        "8bc3be2751b4f74ab90a446da1912fd8204d53f7"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Mon Feb 04 22:29:37 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "slob: fix free block merging at head of subpage\n\nWe weren\u0027t merging freed blocks at the beginning of the free list.  Fixing\nthis showed a 2.5% efficiency improvement in a userspace test harness.\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8bc3be2751b4f74ab90a446da1912fd8204d53f7",
      "tree": "2bc514025a906203244d98de70fb6bd87f3ac9ac",
      "parents": [
        "a322f8ab66f50b6c0dcdb59abae84fede7a5fded"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Mon Feb 04 22:29:36 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "writeback: speed up writeback of big dirty files\n\nAfter making dirty a 100M file, the normal behavior is to start the\nwriteback for all data after 30s delays.  But sometimes the following\nhappens instead:\n\n\t- after 30s:    ~4M\n\t- after 5s:     ~4M\n\t- after 5s:     all remaining 92M\n\nSome analyze shows that the internal io dispatch queues goes like this:\n\n\t\ts_io            s_more_io\n\t\t-------------------------\n\t1)\t100M,1K         0\n\t2)\t1K              96M\n\t3)\t0               96M\n1) initial state with a 100M file and a 1K file\n\n2) 4M written, nr_to_write \u003c\u003d 0, so write more\n\n3) 1K written, nr_to_write \u003e 0, no more writes(BUG)\n\nnr_to_write \u003e 0 in (3) fools the upper layer to think that data have all\nbeen written out.  The big dirty file is actually still sitting in\ns_more_io.  We cannot simply splice s_more_io back to s_io as soon as s_io\nbecomes empty, and let the loop in generic_sync_sb_inodes() continue: this\nmay starve newly expired inodes in s_dirty.  It is also not an option to\ndraw inodes from both s_more_io and s_dirty, an let the loop go on: this\nmight lead to live locks, and might also starve other superblocks in sync\ntime(well kupdate may still starve some superblocks, that\u0027s another bug).\n\nWe have to return when a full scan of s_io completes.  So nr_to_write \u003e 0\ndoes not necessarily mean that \"all data are written\".  This patch\nintroduces a flag writeback_control.more_io to indicate that more io should\nbe done.  With it the big dirty file no longer has to wait for the next\nkupdate invokation 5s later.\n\nIn sync_sb_inodes() we only set more_io on super_blocks we actually\nvisited.  This avoids the interaction between two pdflush deamons.\n\nAlso in __sync_single_inode() we don\u0027t blindly keep requeuing the io if the\nfilesystem cannot progress.  Failing to do so may lead to 100% iowait.\n\nTested-by: Mike Snitzer \u003csnitzer@gmail.com\u003e\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a322f8ab66f50b6c0dcdb59abae84fede7a5fded",
      "tree": "de492ded59ef0ed1f1705244f51e46628fa26603",
      "parents": [
        "0ed361dec36945f3116ee1338638ada9a8920905"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Mon Feb 04 22:29:35 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "mm: fix section mismatch warning in sparse.c\n\nFix following warning:\nWARNING: mm/built-in.o(.text+0x22069): Section mismatch in reference from the function sparse_early_usemap_alloc() to the function .init.text:__alloc_bootmem_node()\n\nstatic sparse_early_usemap_alloc() were used only by sparse_init()\nand with sparse_init() annotated _init it is safe to\nannotate sparse_early_usemap_alloc with __init too.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Christoph Lameter \u003cclameter@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": "0ed361dec36945f3116ee1338638ada9a8920905",
      "tree": "3e0fc6319ef49f6cac82e8203a8aa199302ab9c5",
      "parents": [
        "62e1c55300f306e06478f460a7eefba085206e0b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 04 22:29:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "mm: fix PageUptodate data race\n\nAfter running SetPageUptodate, preceeding stores to the page contents to\nactually bring it uptodate may not be ordered with the store to set the\npage uptodate.\n\nTherefore, another CPU which checks PageUptodate is true, then reads the\npage contents can get stale data.\n\nFix this by having an smp_wmb before SetPageUptodate, and smp_rmb after\nPageUptodate.\n\nMany places that test PageUptodate, do so with the page locked, and this\nwould be enough to ensure memory ordering in those places if\nSetPageUptodate were only called while the page is locked.  Unfortunately\nthat is not always the case for some filesystems, but it could be an idea\nfor the future.\n\nAlso bring the handling of anonymous page uptodateness in line with that of\nfile backed page management, by marking anon pages as uptodate when they\n_are_ uptodate, rather than when our implementation requires that they be\nmarked as such.  Doing allows us to get rid of the smp_wmb\u0027s in the page\ncopying functions, which were especially added for anonymous pages for an\nanalogous memory ordering problem.  Both file and anonymous pages are\nhandled with the same barriers.\n\nFAQ:\nQ. Why not do this in flush_dcache_page?\nA. Firstly, flush_dcache_page handles only one side (the smb side) of the\nordering protocol; we\u0027d still need smp_rmb somewhere. Secondly, hiding away\nmemory barriers in a completely unrelated function is nasty; at least in the\nPageUptodate macros, they are located together with (half) the operations\ninvolved in the ordering. Thirdly, the smp_wmb is only required when first\nbringing the page uptodate, wheras flush_dcache_page should be called each time\nit is written to through the kernel mapping. It is logically the wrong place to\nput it.\n\nQ. Why does this increase my text size / reduce my performance / etc.\nA. Because it is adding the necessary instructions to eliminate the data-race.\n\nQ. Can it be improved?\nA. Yes, eg. if you were to create a rule that all SetPageUptodate operations\nrun under the page lock, we could avoid the smp_rmb places where PageUptodate\nis queried under the page lock. Requires audit of all filesystems and at least\nsome would need reworking. That\u0027s great you\u0027re interested, I\u0027m eagerly awaiting\nyour patches.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62e1c55300f306e06478f460a7eefba085206e0b",
      "tree": "be15b2e4801c837c5e20d43b8f29a53c0ba1391c",
      "parents": [
        "7786fa9ac5366214fb942a9e62c6e46b4272c22c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Feb 04 22:29:33 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "page migraton: handle orphaned pages\n\nOrphaned page might have fs-private metadata, the page is truncated.  As\nthe page hasn\u0027t mapping, page migration refuse to migrate the page.  It\nappears the page is only freed in page reclaim and if zone watermark is\nlow, the page is never freed, as a result migration always fail.  I thought\nwe could free the metadata so such page can be freed in migration and make\nmigration more reliable.\n\n[akpm@linux-foundation.org: go direct to try_to_free_buffers()]\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@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": "b5beb1caff4ce063e6e2dc13f23b80eeef4e9782",
      "tree": "f3fcf8baafa1e9891edd7f16ffafd768c41c29d6",
      "parents": [
        "e6f3602d2c58815775b2a293cec6650622236169"
      ],
      "author": {
        "name": "Masatake YAMATO",
        "email": "yamato@redhat.com",
        "time": "Mon Feb 04 22:29:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "check ADVICE of fadvise64_64 even if get_xip_page is given\n\nI\u0027ve written some test programs in ltp project.  During writing I met an\nproblem which I cannot solve in user land.  So I wrote a patch for linux\nkernel.  Please, include this patch if acceptable.\n\nThe test program tests the 4th parameter of fadvise64_64:\n\n    long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice);\n\nMy test case calls fadvise64_64 with invalid advice value and checks errno is\nset to EINVAL.  About the advice parameter man page says:\n\n    ...\n    Permissible values for advice include:\n\n\t   POSIX_FADV_NORMAL\n                  ...\n\t   POSIX_FADV_SEQUENTIAL\n                  ...\n\t   POSIX_FADV_RANDOM\n\t\t  ...\n\t   POSIX_FADV_NOREUSE\n                  ...\n\t   POSIX_FADV_WILLNEED\n                  ...\n\t   POSIX_FADV_DONTNEED\n\t\t  ...\n    ERRORS\n           ...\n\t   EINVAL An invalid value was specified for advice.\n\nHowever, I got a bug report that the system call invocations\nin my test case returned 0 unexpectedly.\n\nI\u0027ve inspected the kernel code:\n\n    asmlinkage long sys_fadvise64_64(int fd, loff_t offset, loff_t len, int advice)\n    {\n\t    struct file *file \u003d fget(fd);\n\t    struct address_space *mapping;\n\t    struct backing_dev_info *bdi;\n\t    loff_t endbyte;\t\t\t/* inclusive */\n\t    pgoff_t start_index;\n\t    pgoff_t end_index;\n\t    unsigned long nrpages;\n\t    int ret \u003d 0;\n\n\t    if (!file)\n\t\t    return -EBADF;\n\n\t    if (S_ISFIFO(file-\u003ef_path.dentry-\u003ed_inode-\u003ei_mode)) {\n\t\t    ret \u003d -ESPIPE;\n\t\t    goto out;\n\t    }\n\n\t    mapping \u003d file-\u003ef_mapping;\n\t    if (!mapping || len \u003c 0) {\n\t\t    ret \u003d -EINVAL;\n\t\t    goto out;\n\t    }\n\n\t    if (mapping-\u003ea_ops-\u003eget_xip_page)\n\t\t    /* no bad return value, but ignore advice */\n\t\t    goto out;\n    ...\n    out:\n\t    fput(file);\n\t    return ret;\n    }\n\nI found the advice parameter is just ignored in the case\nmapping-\u003ea_ops-\u003eget_xip_page is given. This behavior is different from\nwhat is written on the man page. Is this o.k.?\n\nget_xip_page is given if CONFIG_EXT2_FS_XIP is true.\nAnyway I cannot find the easy way to detect get_xip_page\nfield is given or CONFIG_EXT2_FS_XIP is true from the\nuser space.\n\nI propose the following patch which checks the advice parameter\neven if get_xip_page is given.\n\nSigned-off-by: Masatake YAMATO \u003cyamato@redhat.com\u003e\nAcked-by: Carsten Otte \u003ccotte@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": "e6f3602d2c58815775b2a293cec6650622236169",
      "tree": "84721b0074e745474c7e71f53d58b6211cf30c40",
      "parents": [
        "a2b345642f530054a92b8d2b5108436225a8093e"
      ],
      "author": {
        "name": "Larry Woodman",
        "email": "lwoodman@redhat.com",
        "time": "Mon Feb 04 22:29:30 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "Include count of pagecache pages in show_mem() output\n\nThe show_mem() output does not include the total number of pagecache\npages.  This would be helpful when analyzing the debug information in\nthe /var/log/messages file after OOM kills occur.\n\nThis patch includes the total pagecache pages in that output.\n\nSigned-off-by: Larry Woodman \u003clwoodman@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": "a2b345642f530054a92b8d2b5108436225a8093e",
      "tree": "9be466168baf0fb0c57504e9fe87aec07f09445a",
      "parents": [
        "ae1276b9349a2fd9c3afb4651e25a77ac03299d9"
      ],
      "author": {
        "name": "Bjorn Steinbrink",
        "email": "B.Steinbrink@gmx.de",
        "time": "Mon Feb 04 22:29:28 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "Fix dirty page accounting leak with ext3 data\u003djournal\n\nIn 46d2277c796f9f4937bfa668c40b2e3f43e93dd0 (\"Clean up and make\ntry_to_free_buffers() not race with dirty pages\"), try_to_free_buffers\nwas changed to bail out if the page was dirty.\n\nThat in turn caused truncate_complete_page to leak massive amounts of\nmemory, because the dirty bit was only cleared after the call to\ntry_to_free_buffers.\n\nSo the call to cancel_dirty_page was moved up to have the dirty bit\ncleared early in 3e67c0987d7567ad666641164a153dca9a43b11d (\"truncate:\nclear page dirtiness before running try_to_free_buffers()\").\n\nThe problem with that fix is, that the page can be redirtied after\ncancel_dirty_page was called, eg. like this:\n\ntruncate_complete_page()\n  cancel_dirty_page() // PG_dirty cleared, decr. dirty pages\n  do_invalidatepage()\n    ext3_invalidatepage()\n      journal_invalidatepage()\n        journal_unmap_buffer()\n          __dispose_buffer()\n            __journal_unfile_buffer()\n              __journal_temp_unlink_buffer()\n                mark_buffer_dirty(); // PG_dirty set, incr. dirty pages\n\nAnd then we end up with dirty pages being wrongly accounted.\n\nAs a result, in ecdfc9787fe527491baefc22dce8b2dbd5b2908d (\"Resurrect\n\u0027try_to_free_buffers()\u0027 VM hackery\") the changes to try_to_free_buffers\nwere reverted, so the original reason for the massive memory leak is\ngone, and we can also revert the move of the call to cancel_dirty_page\nfrom truncate_complete_page and get the accounting right again.\n\nI\u0027m not sure if it matters, but opposed to the final check in\n__remove_from_page_cache, this one also cares about the task io\naccounting, so maybe we want to use this instead, although it\u0027s not\nquite the clean fix either.\n\nSigned-off-by: Björn Steinbrink \u003cB.Steinbrink@gmx.de\u003e\nTested-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Osterried \u003costerried@jesse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ae1276b9349a2fd9c3afb4651e25a77ac03299d9",
      "tree": "e3bef5a303f308e398caf53ac098b1d4a2a8061f",
      "parents": [
        "920c7a5d0c94b8ce740f1d76fa06422f2a95a757"
      ],
      "author": {
        "name": "Qi Yong",
        "email": "qiyong@fc-cn.com",
        "time": "Mon Feb 04 22:29:27 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "set_page_refcounted() VM_BUG_ON fix\n\nThe current PageTail semantic is that a PageTail page is first a\nPageCompound page.  So remove the redundant PageCompound test in\nset_page_refcounted().\n\nSigned-off-by: Qi Yong \u003cqiyong@fc-cn.com\u003e\nCc: Christoph Lameter \u003cclameter@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": "920c7a5d0c94b8ce740f1d76fa06422f2a95a757",
      "tree": "74ab4b9b5a6f4279b9b9d2a463c6700546ba0011",
      "parents": [
        "1e548deb5d1630ca14ba04da04e3b6b3766178c7"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Mon Feb 04 22:29:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm: remove fastcall from mm/\n\nfastcall is always defined to be empty, remove it\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Harvey Harrison \u003charvey.harrison@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": "1e548deb5d1630ca14ba04da04e3b6b3766178c7",
      "tree": "0f5f6e1e92e9433014da15185c3dfcb27a200801",
      "parents": [
        "2d544564f9954860235db97df2e549a66c61f557"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Mon Feb 04 22:29:26 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "page allocator: remove unused arguments in zone_init_free_lists()\n\nSigned-off-by: Andi Kleen \u003cak@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": "5a9bbdcd29adbb786c53eba1dfc3c2d256020d6b",
      "tree": "44fbcff2ad653d7a328bab3144d63da9aaea6f7a",
      "parents": [
        "9eccf2a816ed0aad82b577de6a40cd098ad41944"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:29:23 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm: don\u0027t waste swap on locked pages\n\ntry_to_unmap always fails on a page found in a VM_LOCKED vma (unless\nmigrating), and recycles it back to the active list.  But if it\u0027s an\nanonymous page, we\u0027ve already allocated swap to it: just wasting swap.\nSpot locked pages in page_referenced_one and treat them as referenced.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nTested-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Ethan Solomita \u003csolo@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": "9eccf2a816ed0aad82b577de6a40cd098ad41944",
      "tree": "28d971fbb701d545b54f9f5fdf71c12940d2b8df",
      "parents": [
        "7766755a2f249e7e0dabc5255a0a3d151ff79821"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:29:22 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "vmstat: remove prefetch\n\nRemove the prefetch logic in order to avoid touching impossible per cpu\nareas.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Mike Travis \u003ctravis@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": "195cf453d2c3d789cbe80e3735755f860c2fb222",
      "tree": "fad48a8167744b6c091c8ca499bc78b859af8957",
      "parents": [
        "3dfa5721f12c3d5a441448086bee156887daa961"
      ],
      "author": {
        "name": "Bron Gondwana",
        "email": "brong@fastmail.fm",
        "time": "Mon Feb 04 22:29:20 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm/page-writeback: highmem_is_dirtyable option\n\nAdd vm.highmem_is_dirtyable toggle\n\nA 32 bit machine with HIGHMEM64 enabled running DCC has an MMAPed file of\napproximately 2Gb size which contains a hash format that is written\nrandomly by the dbclean process.  On 2.6.16 this process took a few\nminutes.  With lowmem only accounting of dirty ratios, this takes about 12\nhours of 100% disk IO, all random writes.\n\nInclude a toggle in /proc/sys/vm/highmem_is_dirtyable which can be set to 1 to\nadd the highmem back to the total available memory count.\n\n[akpm@linux-foundation.org: Fix the CONFIG_DETECT_SOFTLOCKUP\u003dy build]\nSigned-off-by: Bron Gondwana \u003cbrong@fastmail.fm\u003e\nCc: Ethan Solomita \u003csolo@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: WU Fengguang \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3dfa5721f12c3d5a441448086bee156887daa961",
      "tree": "8ace8c3f842f8b626b762bb9d2a9b24d8e3bd130",
      "parents": [
        "5dc331852848a38ca00a2817e5b98a1d0561b116"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:29:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "Page allocator: get rid of the list of cold pages\n\nWe have repeatedly discussed if the cold pages still have a point. There is\none way to join the two lists: Use a single list and put the cold pages at the\nend and the hot pages at the beginning. That way a single list can serve for\nboth types of allocations.\n\nThe discussion of the RFC for this and Mel\u0027s measurements indicate that\nthere may not be too much of a point left to having separate lists for\nhot and cold pages (see http://marc.info/?t\u003d119492914200001\u0026r\u003d1\u0026w\u003d2).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Martin Bligh \u003cmbligh@mbligh.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5dc331852848a38ca00a2817e5b98a1d0561b116",
      "tree": "c306874d0194ecf88c2073a042e6f932e710f67f",
      "parents": [
        "a7f75e25860ac0a7b70cf6e14c37618d2d2bb890"
      ],
      "author": {
        "name": "Robert Bragg",
        "email": "robert@sixbynine.org",
        "time": "Mon Feb 04 22:29:18 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "mm: don\u0027t allow ioremapping of ranges larger than vmalloc space\n\nWhen running with a 16M IOREMAP_MAX_ORDER (on armv7) we found that the\nvmlist search routine in __get_vm_area_node can mistakenly allow a driver\nto ioremap a range larger than vmalloc space.\n\nIf at the time of the ioremap all existing vmlist areas sit below the\ndetermined alignment then the search routine continues past all entries and\nexits the for loop - straight into the found: label - without ever testing\nfor integer wrapping or that the requested size fits.\n\nWe were seeing a driver successfully ioremap 128M of flash even though\nthere was only 120M of vmalloc space.  From that point the system was left\nwith the remainder of the first 16M of space to vmalloc/ioremap within.\n\nSigned-off-by: Robert Bragg \u003crobert@sixbynine.org\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": "a7f75e25860ac0a7b70cf6e14c37618d2d2bb890",
      "tree": "12f651d69e72159c6f904e007973874e912853bb",
      "parents": [
        "08e7d9b557299ba6ce57165ce8df310780bd681c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:29:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "vmstat: small revisions to refresh_cpu_vm_stats()\n\n1. Add comments explaining how the function can be called.\n\n2. Collect global diffs in a local array and only spill\n   them once into the global counters when the zone scan\n   is finished. This means that we only touch each global\n   counter once instead of each time we fold cpu counters\n   into zone counters.\n\nSigned-off-by: Christoph Lameter \u003cclameter@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": "08e7d9b557299ba6ce57165ce8df310780bd681c",
      "tree": "8733b402eaa1de1a6bcdea5ee72ea8655c896dd4",
      "parents": [
        "5e5419734c8719cbc01af959ad9c0844002c0df5"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Mon Feb 04 22:29:16 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "arch_rebalance_pgtables call\n\nIn order to change the layout of the page tables after an mmap has crossed the\nadress space limit of the current page table layout a architecture hook in\nget_unmapped_area is needed.  The arguments are the address of the new mapping\nand the length of it.\n\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \u003clinux-arch@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": "5e5419734c8719cbc01af959ad9c0844002c0df5",
      "tree": "a075dca3f719946689efa0245464855cbf2a20ce",
      "parents": [
        "9f8f2172537de7af0b0fbd33502d18d52b1339bc"
      ],
      "author": {
        "name": "Benjamin Herrenschmidt",
        "email": "benh@kernel.crashing.org",
        "time": "Mon Feb 04 22:29:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:18 2008 -0800"
      },
      "message": "add mm argument to pte/pmd/pud/pgd_free\n\n(with Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e)\n\nThe pgd/pud/pmd/pte page table allocation functions get a mm_struct pointer as\nfirst argument.  The free functions do not get the mm_struct argument.  This\nis 1) asymmetrical and 2) to do mm related page table allocations the mm\nargument is needed on the free function as well.\n\n[kamalesh@linux.vnet.ibm.com: i386 fix]\n[akpm@linux-foundation.org: coding-syle fixes]\nSigned-off-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nSigned-off-by: Kamalesh Babulal \u003ckamalesh@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": "9f8f2172537de7af0b0fbd33502d18d52b1339bc",
      "tree": "273c86583ed0295059c5526d3bd6927520a20add",
      "parents": [
        "e2848a0efedef4dad52d1334d37f8719cd6268fd"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:29:11 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "Page allocator: clean up pcp draining functions\n\n- Add comments explaing how drain_pages() works.\n\n- Eliminate useless functions\n\n- Rename drain_all_local_pages to drain_all_pages(). It does drain\n  all pages not only those of the local processor.\n\n- Eliminate useless interrupt off / on sequences. drain_pages()\n  disables interrupts on its own. The execution thread is\n  pinned to processor by the caller. So there is no need to\n  disable interrupts.\n\n- Put drain_all_pages() declaration in gfp.h and remove the\n  declarations from suspend.h and from mm/memory_hotplug.c\n\n- Make software suspend call drain_all_pages(). The draining\n  of processor local pages is may not the right approach if\n  software suspend wants to support SMP. If they call drain_all_pages\n  then we can make drain_pages() static.\n\n[akpm@linux-foundation.org: fix build]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Daniel Walker \u003cdwalker@mvista.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e2848a0efedef4dad52d1334d37f8719cd6268fd",
      "tree": "f5d2b600b1275793e7c490f34ae9ec902af138b5",
      "parents": [
        "e31d9eb5c17ae3b80f9e9403f8a5eaf6dba879c9"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Mon Feb 04 22:29:10 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "radix-tree: avoid atomic allocations for preloaded insertions\n\nMost pagecache (and some other) radix tree insertions have the great\nopportunity to preallocate a few nodes with relaxed gfp flags.  But the\npreallocation is squandered when it comes time to allocate a node, we\ndefault to first attempting a GFP_ATOMIC allocation -- that doesn\u0027t\nnormally fail, but it can eat into atomic memory reserves that we don\u0027t\nneed to be using.\n\nAnother upshot of this is that it removes the sometimes highly contended\nzone-\u003elock from underneath tree_lock.  Pagecache insertions are always\nperformed with a radix tree preload, and after this change, such a\nsituation will never fall back to kmem_cache_alloc within\nradix_tree_node_alloc.\n\nDavid Miller reports seeing this allocation fail on a highly threaded\nsparc64 system:\n\n[527319.459981] dd: page allocation failure. order:0, mode:0x20\n[527319.460403] Call Trace:\n[527319.460568]  [00000000004b71e0] __slab_alloc+0x1b0/0x6a8\n[527319.460636]  [00000000004b7bbc] kmem_cache_alloc+0x4c/0xa8\n[527319.460698]  [000000000055309c] radix_tree_node_alloc+0x20/0x90\n[527319.460763]  [0000000000553238] radix_tree_insert+0x12c/0x260\n[527319.460830]  [0000000000495cd0] add_to_page_cache+0x38/0xb0\n[527319.460893]  [00000000004e4794] mpage_readpages+0x6c/0x134\n[527319.460955]  [000000000049c7fc] __do_page_cache_readahead+0x170/0x280\n[527319.461028]  [000000000049cc88] ondemand_readahead+0x208/0x214\n[527319.461094]  [0000000000496018] do_generic_mapping_read+0xe8/0x428\n[527319.461152]  [0000000000497948] generic_file_aio_read+0x108/0x170\n[527319.461217]  [00000000004badac] do_sync_read+0x88/0xd0\n[527319.461292]  [00000000004bb5cc] vfs_read+0x78/0x10c\n[527319.461361]  [00000000004bb920] sys_read+0x34/0x60\n[527319.461424]  [0000000000406294] linux_sparc_syscall32+0x3c/0x40\n\nThe calltrace is significant: __do_page_cache_readahead allocates a number\nof pages with GFP_KERNEL, and hence it should have reclaimed sufficient\nmemory to satisfy GFP_ATOMIC allocations.  However after the list of pages\ngoes to mpage_readpages, there can be significant intervals (including disk\nIO) before all the pages are inserted into the radix-tree.  So the reserves\ncan easily be depleted at that point.  The patch is confirmed to fix the\nproblem.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"David S. 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": "e31d9eb5c17ae3b80f9e9403f8a5eaf6dba879c9",
      "tree": "8cd63d594e618938d14a77169792ddee3995edf4",
      "parents": [
        "625d9573d0f905146efd15169a35ea9c5a841198"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Feb 04 22:29:09 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "make __vmalloc_area_node() static\n\n__vmalloc_area_node() can become static.\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": "625d9573d0f905146efd15169a35ea9c5a841198",
      "tree": "40d5f49b9613b3ec41d0a6a182b766433bce5a7f",
      "parents": [
        "f61eaf9fc58f3b2d9e3ad424496620f3381ccd1e"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Mon Feb 04 22:29:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "Remove unused code from mm/tiny-shmem.c\n\nThis code in mm/tiny-shmem.c is under #if 0 - remove it.\n\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nAcked-by: Matt Mackall \u003cmpm@selenic.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f61eaf9fc58f3b2d9e3ad424496620f3381ccd1e",
      "tree": "cc81b75fbdc13589ac0defb0b6f018d066e1c21d",
      "parents": [
        "1e88328111aae3ea408f346763ba9f9bad71f876"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Feb 04 22:29:08 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "mm/page-writeback.c: make a function static\n\ntask_dirty_limit() can become static.\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": "1e88328111aae3ea408f346763ba9f9bad71f876",
      "tree": "22be92057a7426ca5b6c8ee9b136bbc417c902a8",
      "parents": [
        "304daa8132a95e998b6716d4b7bd8bd76aa152b2"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Mon Feb 04 22:29:07 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:17 2008 -0800"
      },
      "message": "maps4: make page monitoring /proc file optional\n\nMake /proc/ page monitoring configurable\n\nThis puts the following files under an embedded config option:\n\n/proc/pid/clear_refs\n/proc/pid/smaps\n/proc/pid/pagemap\n/proc/kpagecount\n/proc/kpageflags\n\n[akpm@linux-foundation.org: Kconfig fix]\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Dave Hansen \u003chaveblue@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": "e6473092bd9116583ce9ab8cf1b6570e1aa6fc83",
      "tree": "e91a7ca6ce89f24a4a2d500d748dabf727c61887",
      "parents": [
        "698dd4ba6b12e34e1e432c944c01478c0b2cd773"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Mon Feb 04 22:29:01 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:16 2008 -0800"
      },
      "message": "maps4: introduce a generic page walker\n\nIntroduce a general page table walker\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Dave Hansen \u003chaveblue@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": "698dd4ba6b12e34e1e432c944c01478c0b2cd773",
      "tree": "fe524e3ae12b54968b363314ad45841abbd55d98",
      "parents": [
        "824552574162ac00ae636fa41386b1072379ea4a"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Mon Feb 04 22:29:00 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:16 2008 -0800"
      },
      "message": "maps4: move is_swap_pte\n\nMove is_swap_pte helper function to swapops.h for use by pagemap code\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Dave Hansen \u003chaveblue@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": "61d5048f149572434daee0cce5e1374a8a7cf3e8",
      "tree": "97ac9c25bc44a58145a750a99887195df31cbe40",
      "parents": [
        "1b1b32f2c6f6bb32535d2da62075b51c980880eb"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Mon Feb 04 22:28:56 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:16 2008 -0800"
      },
      "message": "clean up vmtruncate\n\nvmtruncate is a twisted maze of gotos, this patch cleans it up to have a\nproper if else for the two major cases of extending and truncating truncate\nand thus makes it a lot more readable while keeping exactly the same\nfunctinality.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b1b32f2c6f6bb32535d2da62075b51c980880eb",
      "tree": "686aac685a4c04f085dc17cc1a05910149a04933",
      "parents": [
        "b409f9fcf04692c0f603d28c73d2e3dfed27bf54"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:16 2008 -0800"
      },
      "message": "tmpfs: fix shmem_swaplist races\n\nIntensive swapoff testing shows shmem_unuse spinning on an entry in\nshmem_swaplist pointing to itself: how does that come about?  Days pass...\n\nFirst guess is this: shmem_delete_inode tests list_empty without taking the\nglobal mutex (so the swapping case doesn\u0027t slow down the common case); but\nthere\u0027s an instant in shmem_unuse_inode\u0027s list_move_tail when the list entry\nmay appear empty (a rare case, because it\u0027s actually moving the head not the\nthe list member).  So there\u0027s a danger of leaving the inode on the swaplist\nwhen it\u0027s freed, then reinitialized to point to itself when reused.  Fix that\nby skipping the list_move_tail when it\u0027s a no-op, which happens to plug this.\n\nBut this same spinning then surfaces on another machine.  Ah, I\u0027d never\nsuspected it, but shmem_writepage\u0027s swaplist manipulation is unsafe: though we\nstill hold page lock, which would hold off inode deletion if the page were in\npagecache, it doesn\u0027t hold off once it\u0027s in swapcache (free_swap_and_cache\ndoesn\u0027t wait on locked pages).  Hmm: we could put the the inode on swaplist\nearlier, but then shmem_unuse_inode could never prune unswapped inodes.\n\nFix this with an igrab before dropping info-\u003elock, as in shmem_unuse_inode;\nthough I am a little uneasy about the iput which has to follow - it works, and\nI see nothing wrong with it, but it is surprising that shmem inode deletion\nmay now occur below shmem_writepage.  Revisit this fix later?\n\nAnd while we\u0027re looking at these races: the way shmem_unuse tests swapped\nwithout holding info-\u003elock looks unsafe, if we\u0027ve more than one swap area: a\nracing shmem_writepage on another page of the same inode could be putting it\nin swapcache, just as we\u0027re deciding to remove the inode from swaplist -\nthere\u0027s a danger of going on swap without being listed, so a later swapoff\nwould hang, being unable to locate the entry.  Move that test and removal down\ninto shmem_unuse_inode, once info-\u003elock is held.\n\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": "b409f9fcf04692c0f603d28c73d2e3dfed27bf54",
      "tree": "de287c277045c72c485867a52b37f4e7d0c5815a",
      "parents": [
        "2e0e26c76a35de8f8bec6b2b917518cfeb52888a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:54 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: radix_tree_preloading\n\nNick has observed that shmem.c still uses GFP_ATOMIC when adding to page cache\nor swap cache, without any radix tree preload: so tending to deplete emergency\nreserves of memory.\n\nGFP_ATOMIC remains appropriate in shmem_writepage\u0027s add_to_swap_cache: it\u0027s\nbeing called under memory pressure, so must not wait for more memory to become\navailable.  But shmem_unuse_inode now has a window in which it can and should\npreload with GFP_KERNEL, and say GFP_NOWAIT instead of GFP_ATOMIC in its\nadd_to_page_cache.\n\nshmem_getpage is not so straightforward: its filepage/swappage integrity\nrelies upon exchanging between caches under spinlock, and it would need a lot\nof restructuring to place the preloads correctly.  Instead, follow its pattern\nof retrying on races: use GFP_NOWAIT instead of GFP_ATOMIC in\nadd_to_page_cache, and begin each circuit of the repeat loop with a sleeping\nradix_tree_preload, followed immediately by radix_tree_preload_end - that\nwon\u0027t guarantee success in the next add_to_page_cache, but doesn\u0027t need to.\n\nAnd we can then remove that bothersome congestion_wait: when needed, it\u0027ll\nautomatically get done in the course of the radix_tree_preload.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nLooks-good-to: 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": "2e0e26c76a35de8f8bec6b2b917518cfeb52888a",
      "tree": "1357781bfe035c2401c65b2d0203385a47516bf5",
      "parents": [
        "cb5f7b9a47963d9238398cd0c2676473e3c6896d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: open a window in shmem_unuse_inode\n\nThere are a couple of reasons (patches follow) why it would be good to open a\nwindow for sleep in shmem_unuse_inode, between its search for a matching swap\nentry, and its handling of the entry found.\n\nshmem_unuse_inode must then use igrab to hold the inode against deletion in\nthat window, and its corresponding iput might result in deletion: so it had\nbetter unlock_page before the iput, and might as well release the page too.\n\nNor is there any need to hold on to shmem_swaplist_mutex once we know we\u0027ll\nleave the loop.  So this unwinding moves from try_to_unuse and shmem_unuse\ninto shmem_unuse_inode, in the case when it finds a match.\n\nLet try_to_unuse break on error in the shmem_unuse case, as it does in the\nunuse_mm case: though at this point in the series, no error to break on.\n\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": "cb5f7b9a47963d9238398cd0c2676473e3c6896d",
      "tree": "bc2eed3d7c2c3787f50030c7c493c4295eaf673c",
      "parents": [
        "a0ee5ec520ede1dc8e2194623bcebfd9fab408f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: make shmem_unuse more preemptible\n\nshmem_unuse is at present an unbroken search through every swap vector page of\nevery tmpfs file which might be swapped, all under shmem_swaplist_lock.  This\ndates from long ago, when the caller held mmlist_lock over it all too: long\ngone, but there\u0027s never been much pressure for preemptible swapoff.\n\nMake it a little more preemptible, replacing shmem_swaplist_lock by\nshmem_swaplist_mutex, inserting a cond_resched in the main loop, and a\ncond_resched_lock (on info-\u003elock) at one convenient point in the\nshmem_unuse_inode loop, where it has no outstanding kmap_atomic.\n\nIf we\u0027re serious about preemptible swapoff, there\u0027s much further to go e.g.\nI\u0027m stupid to let the kmap_atomics of the decreasingly significant HIGHMEM\ncase dictate preemptiblility for other configs.  But as in the earlier patch\nto make swapoff scan ptes preemptibly, my hidden agenda is really towards\nmaking memcgroups work, hardly about preemptibility at all.\n\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": "a0ee5ec520ede1dc8e2194623bcebfd9fab408f2",
      "tree": "74a3668798213661a9e62a1b576f081f1ce44838",
      "parents": [
        "d9fe526a83b84edc9c5ff217a00c896bfc20b2ce"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: allocate on read when stacked\n\ntmpfs is expected to limit the memory used (unless mounted with nr_blocks\u003d0 or\nsize\u003d0).  But if a stacked filesystem such as unionfs gets pages from a sparse\ntmpfs file by reading holes, and then writes to them, it can easily exceed any\nsuch limit at present.\n\nSo suppress the SGP_READ \"don\u0027t allocate page\" ZERO_PAGE optimization when\nreading for the kernel (a KERNEL_DS check, ugh, sorry about that).  Indeed,\npessimistically mark such pages as dirty, so they cannot get reclaimed and\nunaccounted by mistake.  The venerable shmem_recalc_inode code (originally to\naccount for the reclaim of clean pages) suffices to get the accounting right\nwhen swappages are dropped in favour of more uptodate filepages.\n\nThis also fixes the NULL shmem_swp_entry BUG or oops in shmem_writepage,\ncaused by unionfs writing to a very sparse tmpfs file: to minimize memory\nallocation in swapout, tmpfs requires the swap vector be allocated upfront,\nwhich wasn\u0027t always happening in this stacked case.\n\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": "d9fe526a83b84edc9c5ff217a00c896bfc20b2ce",
      "tree": "aecb9dbd92108915ba255df8f04d106c2099bf48",
      "parents": [
        "73b1262fa43a778b1e154deea632cdef5009d6a1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: allow filepage alongside swappage\n\ntmpfs has long allowed for a fresh filepage to be created in pagecache, just\nbefore shmem_getpage gets the chance to match it up with the swappage which\nalready belongs to that offset.  But unionfs_writepage now does a\nfind_or_create_page, divorced from shmem_getpage, which leaves conflicting\nfilepage and swappage outstanding indefinitely, when unionfs is over tmpfs.\n\nTherefore shmem_writepage (where a page is swizzled from file to swap) must\nnow be on the lookout for existing swap, ready to free it in favour of the\nmore uptodate filepage, instead of BUGging on that clash.  And when the\nadd_to_page_cache fails in shmem_unuse_inode, it must defer to an uptodate\nfilepage, otherwise swapoff would hang.  Whereas when add_to_page_cache fails\nin shmem_getpage, it should retry in the same way it already does.\n\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": "73b1262fa43a778b1e154deea632cdef5009d6a1",
      "tree": "409f14e78e23cd999e8c3d1e0945f0fa9b67048f",
      "parents": [
        "f000944d03a5b74ab3c92b2fcdf0e944cc898065"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: move swap swizzling into shmem\n\nmove_to_swap_cache and move_from_swap_cache functions (which swizzle a page\nbetween tmpfs page cache and swap cache, to avoid page copying) are only used\nby shmem.c; and our subsequent fix for unionfs needs different treatments in\nthe two instances of move_from_swap_cache.  Move them from swap_state.c into\ntheir callsites shmem_writepage, shmem_unuse_inode and shmem_getpage, making\nadd_to_swap_cache externally visible.\n\nshmem.c likes to say set_page_dirty where swap_state.c liked to say\nSetPageDirty: respect that diversity, which __set_page_dirty_no_writeback\nmakes moot (and implies we should lose that \"shift page from clean_pages to\ndirty_pages list\" comment: it\u0027s on neither).\n\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": "f000944d03a5b74ab3c92b2fcdf0e944cc898065",
      "tree": "07b64eeed416f3869a3fc4f06d00bd1fb1321f20",
      "parents": [
        "bb63be0a091c512fb566ee235eb8320d5831b6e2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: shuffle add_to_swap_caches\n\nadd_to_swap_cache doesn\u0027t amount to much: merge it into its sole caller\nread_swap_cache_async.  But we\u0027ll be needing to call __add_to_swap_cache from\nshmem.c, so promote it to the new add_to_swap_cache.  Both were static, so\nthere\u0027s no interface confusion to worry about.\n\nAnd lose that inappropriate \"Anon pages are already on the LRU\" comment in the\nmerging: they\u0027re not already on the LRU, as Nick Piggin noticed.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nNo-problems-with: 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": "bb63be0a091c512fb566ee235eb8320d5831b6e2",
      "tree": "3fc58d190902417429228c3066b6093a848c5974",
      "parents": [
        "818db35992c249dc32c1d86daf7d533fb0952f5d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:49 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: move swap_state stats update\n\nBoth unionfs and memcgroups pose challenges to tmpfs and shmem.  To help fix,\nit\u0027s best to move the swap swizzling functions from swap_state.c to shmem.c.\nAs a preliminary to that, move swap stats updating down into\n__add_to_swap_cache, which will remain internal to swap_state.c.\n\nWell, actually, just move down the incrementation of add_total: remove\nnoent_race and exist_race completely, they are relics of my 2.4.11 testing.\nAlt-SysRq-m users will be thrilled if 2.6.25 is at last free of \"race M+N\"s.\n\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": "818db35992c249dc32c1d86daf7d533fb0952f5d",
      "tree": "8577fe7cff367eade84f632621b16054c362d39a",
      "parents": [
        "5b04c6890f0dc7ea6c85b9adebc883c55c667d97"
      ],
      "author": {
        "name": "Michael Marineau",
        "email": "mike@marineau.org",
        "time": "Mon Feb 04 22:28:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "tmpfs: fix mounts when size is less than the page size\n\nWhen tmpfs is mounted with a size less than one page, the number of blocks\nis set to 0 which makes the tmpfs mount unlimited.  This can lead to a\nquick and surprising death if someone typos a tmpfs mount command and\nwrites too much.\n\ntmpfs can still be mounted as unlimited if size or nr_blocks is exactly 0,\nas Documentation/filesystems/tmpfs.txt says.\n\nHugh: do this by rounding size up instead of down in all cases: which\nslightly expands other odd-sized tmpfs mounts, but in a consistent way.\n\nSigned-off-by: Michael Marineau \u003cmike@marineau.org\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": "5b04c6890f0dc7ea6c85b9adebc883c55c667d97",
      "tree": "50f060de1edcd5cda14290f13bad0e74433b0a67",
      "parents": [
        "2e441889c38fe1b6ef6b963e6993076aa120176c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon Feb 04 22:28:47 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "shmem: factor out sbi-\u003efree_inodes manipulations\n\nThe shmem_sb_info structure has a number of free_inodes. This\nvalue is altered in appropriate places under spinlock and with\nthe sbi-\u003emax_inodes !\u003d 0 check.\n\nConsolidate these manipulations into two helpers.\n\nThis is minus 42 bytes of shmem.o and minus 4 :) lines of code.\n\n[akpm@linux-foundation.org: fix error return values]\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\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": "2e441889c38fe1b6ef6b963e6993076aa120176c",
      "tree": "f8cc99d2b8a3b90c6ff2c3e6d14e90d7edd95d7e",
      "parents": [
        "8952898b0d25223f38daf46b86156fd1c4d17ad0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:46 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "swapoff: scan ptes preemptibly\n\nProvided that CONFIG_HIGHPTE is not set, unuse_pte_range can reduce latency\nin swapoff by scanning the page table preemptibly: so long as unuse_pte is\ncareful to recheck that entry under pte lock.\n\n(To tell the truth, this patch was not inspired by any cries for lower\nlatency here: rather, this restructuring permits a future memory controller\npatch to allocate with GFP_KERNEL in unuse_pte, where before it could not.\nBut it would be wrong to tuck this change away inside a memcgroup patch.)\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nTested-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8952898b0d25223f38daf46b86156fd1c4d17ad0",
      "tree": "10912460cd9d42195d4aba8250ed1c3bd3577bb4",
      "parents": [
        "5402b976ae0be96b3a32f3508ab7308c380d6477"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:45 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "swapin: fix valid_swaphandles defect\n\nvalid_swaphandles is supposed to do a quick pass over the swap map entries\nneigbouring the entry which swapin_readahead is targetting, to determine for\nit a range worth reading all together.  But since it always starts its search\nfrom the beginning of the swap \"cluster\", a reject (free entry) there\nimmediately curtails the readaround, and every swapin_readahead from that\ncluster is for just a single page.  Instead scan forwards and backwards around\nthe target entry.\n\nUse better names for some variables: a swap_info pointer is usually called\n\"si\" not \"swapdev\".  And at the end, if only the target page should be read,\nreturn count of 0 to disable readaround, to avoid the unnecessarily repeated\ncall to read_swap_cache_async.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@surriel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5402b976ae0be96b3a32f3508ab7308c380d6477",
      "tree": "d2c0900086033ea1fdeb3e1540e733d962cd177c",
      "parents": [
        "d3602444e1e3485890eea5f61366e19a287c00c4"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "shmem_file_write is redundant\n\nWith the old aops, writing to a tmpfs file had to use its own special method:\nthe generic method would pass in a fresh page to prepare_write when the right\npage was there in swapcache - which was inefficient to handle, even once we\u0027d\nconcocted the code to handle it.\n\nWith the new aops, the generic method uses shmem_write_end, which lets\nshmem_getpage find the right page: so now abandon shmem_file_write in favour\nof the generic method.  Yes, that does do several things that tmpfs hasn\u0027t\nreally needed (notably balance_dirty_pages_ratelimited, which ramfs also\ncalls); but more use of common code is preferable.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d3602444e1e3485890eea5f61366e19a287c00c4",
      "tree": "f27cca0ce7c113c6b8f15f77abc3124faea9e2c8",
      "parents": [
        "27d54b398ec0edea0e7417f003171017300e0efc"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:44 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:15 2008 -0800"
      },
      "message": "shmem_getpage return page locked\n\nIn the new aops, write_begin is supposed to return the page locked: though\nI\u0027ve seen no ill effects, that\u0027s been overlooked in the case of\nshmem_write_begin, and should be fixed.  Then shmem_write_end must unlock the\npage: do so _after_ updating i_size, as we found to be important in other\nfilesystems (though since shmem pages don\u0027t go the usual writeback route, they\nnever suffered from that corruption).\n\nFor shmem_write_begin to return the page locked, we need shmem_getpage to\nreturn the page locked in SGP_WRITE case as well as SGP_CACHE case: let\u0027s\nsimplify the interface and return it locked even when SGP_READ.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "27d54b398ec0edea0e7417f003171017300e0efc",
      "tree": "2167c058ab0734bbb424ec27b2dc19d58fa7befd",
      "parents": [
        "02098feaa42b2e0087fbbe6c6ab9a23e4653b16a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "shmem: SGP_QUICK and SGP_FAULT redundant\n\nRemove SGP_QUICK from the sgp_type enum: it was for shmem_populate and has no\nusers now.  Remove SGP_FAULT from the enum: SGP_CACHE does just as well (and\nshmem_getpage is about to return with page always locked).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "02098feaa42b2e0087fbbe6c6ab9a23e4653b16a",
      "tree": "494eaf13f204c9384d4316202fd76cd1b5d960ad",
      "parents": [
        "46017e954826ac59e91df76341a3f76b45467847"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:42 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin needs gfp_mask for loop on tmpfs\n\nBuilding in a filesystem on a loop device on a tmpfs file can hang when\nswapping, the loop thread caught in that infamous throttle_vm_writeout.\n\nIn theory this is a long standing problem, which I\u0027ve either never seen in\npractice, or long ago suppressed the recollection, after discounting my load\nand my tmpfs size as unrealistically high.  But now, with the new aops, it has\nbecome easy to hang on one machine.\n\nLoop used to grab_cache_page before the old prepare_write to tmpfs, which\nseems to have been enough to free up some memory for any swapin needed; but\nthe new write_begin lets tmpfs find or allocate the page (much nicer, since\ngrab_cache_page missed tmpfs pages in swapcache).\n\nWhen allocating a fresh page, tmpfs respects loop\u0027s mapping_gfp_mask, which\nhas __GFP_IO|__GFP_FS stripped off, and throttle_vm_writeout is designed to\nbreak out when __GFP_IO or GFP_FS is unset; but when tmfps swaps in,\nread_swap_cache_async allocates with GFP_HIGHUSER_MOVABLE regardless of the\nmapping_gfp_mask - hence the hang.\n\nSo, pass gfp_mask down the line from shmem_getpage to shmem_swapin to\nswapin_readahead to read_swap_cache_async to add_to_swap_cache.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.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": "46017e954826ac59e91df76341a3f76b45467847",
      "tree": "711a35e3936118665d0eac2afeef8758b4f4e95f",
      "parents": [
        "c4cc6d07b2f465fbf5efd99bbe772a49c515f3f2"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:41 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin_readahead: move and rearrange args\n\nswapin_readahead has never sat well in mm/memory.c: move it to mm/swap_state.c\nbeside its kindred read_swap_cache_async.  Why were its args in a different\norder?  rearrange them.  And since it was always followed by a\nread_swap_cache_async of the target page, fold that in and return struct\npage*.  Then CONFIG_SWAP\u003dn no longer needs valid_swaphandles and\nread_swap_cache_async stubs.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4cc6d07b2f465fbf5efd99bbe772a49c515f3f2",
      "tree": "0aec353fce4ee6cd16e3051ecfdf55e8022aaa5a",
      "parents": [
        "75897d60a54ccee94253312107f941a83b5077cb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Mon Feb 04 22:28:40 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "swapin_readahead: excise NUMA bogosity\n\nFor three years swapin_readahead has been cluttered with fanciful CONFIG_NUMA\ncode, advancing addr, and stepping on to the next vma at the boundary, to line\nup the mempolicy for each page allocation.\n\nIt _might_ be a good idea to allocate swap more according to vma layout; but\nthe fact is, that\u0027s not how we do it at all, 2.6 even less than 2.4: swap is\nallocated as needed for pages as they sink to the bottom of the inactive LRUs.\n Sometimes that may match vma layout, but not so often that it\u0027s worth going\nto these misleading vma-\u003evm_next lengths: rip all that out.\n\nOriginally I intended to retain the incrementation of addr, but correct its\ninitial value: valid_swaphandles generally supplies an offset below the target\naddr (this is readaround rather than readahead), but addr has not been\nadjusted accordingly, so in the interleave case it has usually been allocating\nthe target page from the \"wrong\" node (though that may not matter very much).\n\nBut look at the equivalent shmem_swapin code: either by oversight or by\ndesign, though it has all the apparatus for choosing a new mempolicy per page,\nit uses the same idx throughout, choosing the same mempolicy and interleave\nnode for each page of the cluster.\n\nWhich is actually a much better strategy: each node has its own LRUs and its\nown kswapd, so if you\u0027re betting on any particular relationship between swap\nand node, the best bet is that nearby swap entries belong to pages from the\nsame node - even when the mempolicy of the target page is to interleave.  And\nexamining a map of nodes corresponding to swap entries on a numa\u003dfake system\nbears this out.  (We could later tweak swap allocation to make it even more\nlikely, but this patch is merely about removing cruft.)\n\nSo, neither adjust nor increment addr in swapin_readahead, and then\nshmem_swapin can use it too; the pseudo-vma to pass policy need only be set up\nonce per cluster, and so few fields of pvma are used, let\u0027s skip the memset -\nfrom shmem_alloc_page also.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Christoph Lameter \u003cclameter@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": "bf53d6f8fa467397a16de2a2500312ae26528d34",
      "tree": "5fe5fb6e7e4835d358dcc67e7b38f1aa00b9e525",
      "parents": [
        "9e2779fa281cfda13ac060753d674bbcaa23367e"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "vmalloc: clean up page array indexing\n\nThe page array is repeatedly indexed both in vunmap and vmalloc_area_node().\nAdd a temporary variable to make it easier to read (and easier to patch\nlater).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e2779fa281cfda13ac060753d674bbcaa23367e",
      "tree": "e2af17d69b71e0f8b3f00fe949cb8abfba4298ed",
      "parents": [
        "0b7a96114bd5991d355a1f1c1d3d9c0c9d9c1cfc"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:34 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "is_vmalloc_addr(): Check if an address is within the vmalloc boundaries\n\nChecking if an address is a vmalloc address is done in a couple of places.\nDefine a common version in mm.h and replace the other checks.\n\nAgain the include structures suck.  The definition of VMALLOC_START and\nVMALLOC_END is not available in vmalloc.h since highmem.c cannot be included\nthere.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b3bdda02aa547a0753b4fdbc105e86ef9046b30b",
      "tree": "969557274d94bd0a8e3c638b796c0a13f3e3afd2",
      "parents": [
        "48667e7a43c1a1e0ba743f93ae946f8cb34ff2f9"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:32 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:14 2008 -0800"
      },
      "message": "vmalloc: add const to void* parameters\n\nMake vmalloc functions work the same way as kfree() and friends that\ntake a const void * argument.\n\n[akpm@linux-foundation.org: fix consts, coding-style]\nSigned-off-by: Christoph Lameter \u003cclameter@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": "48667e7a43c1a1e0ba743f93ae946f8cb34ff2f9",
      "tree": "b2fb79d16fbac46a859f8332cf95852b73839e07",
      "parents": [
        "eebd2aa355692afaf9906f62118620f1a1c19dbb"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Move vmalloc_to_page() to mm/vmalloc.\n\nWe already have page table manipulation for vmalloc in vmalloc.c. Move the\nvmalloc_to_page() function there as well.\n\nMove the definitions for vmalloc related functions in mm.h to a newly created\nsection.  A better place would be vmalloc.h but mm.h is basic and may depend\non these functions.  An alternative would be to include vmalloc.h in mm.h\n(like done for vmstat.h).\n\nSigned-off-by: Christoph Lameter \u003cclameter@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": "eebd2aa355692afaf9906f62118620f1a1c19dbb",
      "tree": "207eead3a736963c3e50942038c463f2f611ccce",
      "parents": [
        "b98348bdd08dc4ec11828aa98a78edde15c53cfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Pagecache zeroing: zero_user_segment, zero_user_segments and zero_user\n\nSimplify page cache zeroing of segments of pages through 3 functions\n\nzero_user_segments(page, start1, end1, start2, end2)\n\n        Zeros two segments of the page. It takes the position where to\n        start and end the zeroing which avoids length calculations and\n\tmakes code clearer.\n\nzero_user_segment(page, start, end)\n\n        Same for a single segment.\n\nzero_user(page, start, length)\n\n        Length variant for the case where we know the length.\n\nWe remove the zero_user_page macro. Issues:\n\n1. Its a macro. Inline functions are preferable.\n\n2. The KM_USER0 macro is only defined for HIGHMEM.\n\n   Having to treat this special case everywhere makes the\n   code needlessly complex. The parameter for zeroing is always\n   KM_USER0 except in one single case that we open code.\n\nAvoiding KM_USER0 makes a lot of code not having to be dealing\nwith the special casing for HIGHMEM anymore. Dealing with\nkmap is only necessary for HIGHMEM configurations. In those\nconfigurations we use KM_USER0 like we do for a series of other\nfunctions defined in highmem.h.\n\nSince KM_USER0 is depends on HIGHMEM the existing zero_user_page\nfunction could not be a macro. zero_user_* functions introduced\nhere can be be inline because that constant is not used when these\nfunctions are called.\n\nAlso extract the flushing of the caches to be outside of the kmap.\n\n[akpm@linux-foundation.org: fix nfs and ntfs build]\n[akpm@linux-foundation.org: fix ntfs build some more]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a459e44ad837018ea5c34a9efe8eb4ad27ded26",
      "tree": "b2c479cc980c9793677302574005b97e05732d74",
      "parents": [
        "c0b49b0d164c4902e53c17d90e2c5e5a2ac9e132"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@tv-sign.ru",
        "time": "Mon Feb 04 22:27:18 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:07 2008 -0800"
      },
      "message": "sys_remap_file_pages: fix -\u003evm_file accounting\n\nFix -\u003evm_file accounting, mmap_region() may do do_munmap().\n\nSigned-off-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2c8296f8cf0ec40867965dddef3dfe92f73b38f4",
      "tree": "9d50fb09cd08a2677b3590668cbd49a7aa7f7a63",
      "parents": [
        "d2fc0bacd5c438cb459fdf531eff00ab18422a00",
        "da89b79ed06bac8e9b5b6874d4efc5382e1091de"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 04 12:14:55 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 04 12:14:55 2008 -0800"
      },
      "message": "Merge branch \u0027slub-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/christoph/vm\n\n* \u0027slub-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/christoph/vm:\n  Explain kmem_cache_cpu fields\n  SLUB: Do not upset lockdep\n  SLUB: Fix coding style violations\n  Add parameter to add_partial to avoid having two functions\n  SLUB: rename defrag to remote_node_defrag_ratio\n  Move count_partial before kmem_cache_shrink\n  SLUB: Fix sysfs refcounting\n  slub: fix shadowed variable sparse warnings\n"
    },
    {
      "commit": "ba84c73c7ae21fc891a3c2576fa3be42752fce53",
      "tree": "d6e569ad26cf604fc16617388dd314e4b5e47fcb",
      "parents": [
        "064287807c9dd64688084d34c6748a326b5f3ec8"
      ],
      "author": {
        "name": "root",
        "email": "root@programming.kicks-ass.net",
        "time": "Mon Jan 07 23:20:28 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "SLUB: Do not upset lockdep\n\ninconsistent {softirq-on-W} -\u003e {in-softirq-W} usage.\nswapper/0 [HC0[0]:SC1[1]:HE0:SE0] takes:\n (\u0026n-\u003elist_lock){-+..}, at: [\u003cffffffff802935c1\u003e] add_partial+0x31/0xa0\n{softirq-on-W} state was registered at:\n  [\u003cffffffff80259fb8\u003e] __lock_acquire+0x3e8/0x1140\n  [\u003cffffffff80259838\u003e] debug_check_no_locks_freed+0x188/0x1a0\n  [\u003cffffffff8025ad65\u003e] lock_acquire+0x55/0x70\n  [\u003cffffffff802935c1\u003e] add_partial+0x31/0xa0\n  [\u003cffffffff805c76de\u003e] _spin_lock+0x1e/0x30\n  [\u003cffffffff802935c1\u003e] add_partial+0x31/0xa0\n  [\u003cffffffff80296f9c\u003e] kmem_cache_open+0x1cc/0x330\n  [\u003cffffffff805c7984\u003e] _spin_unlock_irq+0x24/0x30\n  [\u003cffffffff802974f4\u003e] create_kmalloc_cache+0x64/0xf0\n  [\u003cffffffff80295640\u003e] init_alloc_cpu_cpu+0x70/0x90\n  [\u003cffffffff8080ada5\u003e] kmem_cache_init+0x65/0x1d0\n  [\u003cffffffff807f1b4e\u003e] start_kernel+0x23e/0x350\n  [\u003cffffffff807f112d\u003e] _sinittext+0x12d/0x140\n  [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\n\nThis change isn\u0027t really necessary for correctness, but it prevents lockdep\nfrom getting upset and then disabling itself.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Kamalesh Babulal \u003ckamalesh@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "064287807c9dd64688084d34c6748a326b5f3ec8",
      "tree": "49bbcae6aa117cb917a14a1aa30618f533b18262",
      "parents": [
        "7c2e132c54c79af4e524154074b9a02c3c0d6072"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Mon Jan 07 23:20:27 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "SLUB: Fix coding style violations\n\nThis fixes most of the obvious coding style violations in mm/slub.c as\nreported by checkpatch.\n\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "7c2e132c54c79af4e524154074b9a02c3c0d6072",
      "tree": "0976894919b0a7675855d14cb7d68e007a200289",
      "parents": [
        "9824601ead957a29e35d539e43266c003f7b085b"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:27 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "Add parameter to add_partial to avoid having two functions\n\nAdd a parameter to add_partial instead of having separate functions.  The\nparameter allows a more detailed control of where the slab pages is placed in\nthe partial queues.\n\nIf we put slabs back to the front then they are likely immediately used for\nallocations.  If they are put at the end then we can maximize the time that\nthe partial slabs spent without being subject to allocations.\n\nWhen deactivating slab we can put the slabs that had remote objects freed (we\ncan see that because objects were put on the freelist that requires locks) to\nthem at the end of the list so that the cachelines of remote processors can\ncool down.  Slabs that had objects from the local cpu freed to them (objects\nexist in the lockless freelist) are put in the front of the list to be reused\nASAP in order to exploit the cache hot state of the local cpu.\n\nPatch seems to slightly improve tbench speed (1-2%).\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9824601ead957a29e35d539e43266c003f7b085b",
      "tree": "13df23987102e39fce77d64f60e499401444a905",
      "parents": [
        "f61396aed90acb033952531c522d1010f87e24f4"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:26 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:02 2008 -0800"
      },
      "message": "SLUB: rename defrag to remote_node_defrag_ratio\n\nThe NUMA defrag works by allocating objects from partial slabs on remote\nnodes.  Rename it to\n\n\tremote_node_defrag_ratio\n\nto be clear about this.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f61396aed90acb033952531c522d1010f87e24f4",
      "tree": "53d42c90f0aab1d1b53e8648a279e10a83df0107",
      "parents": [
        "151c602f79cb9154c3f3d83223cae355af463d6f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 23:20:26 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:01 2008 -0800"
      },
      "message": "Move count_partial before kmem_cache_shrink\n\nMove the counting function for objects in partial slabs so that it is placed\nbefore kmem_cache_shrink.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\n"
    },
    {
      "commit": "151c602f79cb9154c3f3d83223cae355af463d6f",
      "tree": "140f75b7a100c50b9d337b3a128dd34b5731780f",
      "parents": [
        "e374d4835668a8c6aec7cefc0a44df69f9679017"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 07 22:29:05 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:01 2008 -0800"
      },
      "message": "SLUB: Fix sysfs refcounting\n\nIf CONFIG_SYSFS is set then free the kmem_cache structure when\nsysfs tells us its okay.\n\nOtherwise there is the danger (as pointed out by\nAl Viro) that sysfs thinks the kobject still exists after\nkmem_cache_destroy() removed it.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nReviewed-by: Pekka J Enberg \u003cpenberg@cs.helsinki.fi\u003e\n"
    },
    {
      "commit": "e374d4835668a8c6aec7cefc0a44df69f9679017",
      "tree": "95930cf83053d43df9ad0b2827cf2abebbc12493",
      "parents": [
        "9135f1901ee6449dfe338adf6e40e9c2025b8150"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Thu Jan 31 15:20:50 2008 -0800"
      },
      "committer": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 10:56:01 2008 -0800"
      },
      "message": "slub: fix shadowed variable sparse warnings\n\nIntroduce \u0027len\u0027 at outer level:\nmm/slub.c:3406:26: warning: symbol \u0027n\u0027 shadows an earlier one\nmm/slub.c:3393:6: originally declared here\n\nNo need to declare new node:\nmm/slub.c:3501:7: warning: symbol \u0027node\u0027 shadows an earlier one\nmm/slub.c:3491:6: originally declared here\n\nNo need to declare new x:\nmm/slub.c:3513:9: warning: symbol \u0027x\u0027 shadows an earlier one\nmm/slub.c:3492:6: originally declared here\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\n"
    },
    {
      "commit": "f5bb3a5e9dcdb8435471562b6cada89525cf4df1",
      "tree": "7b7cf9b90bacd0e2fe07cb3387516e9243f1ab66",
      "parents": [
        "9853832c49dc1685587abeb4e1decd4be690d256",
        "1560a79a2c2ea0c3826150da8029991d685de990"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 04 07:58:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 04 07:58:52 2008 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (79 commits)\n  Jesper Juhl is the new trivial patches maintainer\n  Documentation: mention email-clients.txt in SubmittingPatches\n  fs/binfmt_elf.c: spello fix\n  do_invalidatepage() comment typo fix\n  Documentation/filesystems/porting fixes\n  typo fixes in net/core/net_namespace.c\n  typo fix in net/rfkill/rfkill.c\n  typo fixes in net/sctp/sm_statefuns.c\n  lib/: Spelling fixes\n  kernel/: Spelling fixes\n  include/scsi/: Spelling fixes\n  include/linux/: Spelling fixes\n  include/asm-m68knommu/: Spelling fixes\n  include/asm-frv/: Spelling fixes\n  fs/: Spelling fixes\n  drivers/watchdog/: Spelling fixes\n  drivers/video/: Spelling fixes\n  drivers/ssb/: Spelling fixes\n  drivers/serial/: Spelling fixes\n  drivers/scsi/: Spelling fixes\n  ...\n"
    },
    {
      "commit": "2f98735c9c24ea1f0d40a364d4e63611b689b795",
      "tree": "a42b3802449af474d36cda3b6f9fb190a717defb",
      "parents": [
        "fe2528b96b02173395f5a75e37714c07f3e25e73"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Feb 02 03:08:53 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Feb 04 07:55:38 2008 -0800"
      },
      "message": "vm audit: add VM_DONTEXPAND to mmap for drivers that need it\n\nDrivers that register a -\u003efault handler, but do not range-check the\noffset argument, must set VM_DONTEXPAND in the vm_flags in order to\nprevent an expanding mremap from overflowing the resource.\n\nI\u0027ve audited the tree and attempted to fix these problems (usually by\nadding VM_DONTEXPAND where it is not obvious).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28bc44d7d1d967b8251214dd7a130d523b5ba5ee",
      "tree": "74c972b9eac534644dfa5b944b718c3acd0532bc",
      "parents": [
        "3eb43f689cef73c7c62bcaf90d7dc75a6182d2bd"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Sun Feb 03 18:04:10 2008 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sun Feb 03 18:04:10 2008 +0200"
      },
      "message": "do_invalidatepage() comment typo fix\n\nFix a typo in the comment for do_invalidatepage().\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "124d3b7041f9a0ca7c43a6293e1cae4576c32fd5",
      "tree": "9b92dd8f99c10ae0a0931ce71f3e9a20b32b167b",
      "parents": [
        "6598b60fd56ba5e915a001cc4e307880a94d19ae"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Feb 02 15:01:17 2008 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 03 07:55:39 2008 +1100"
      },
      "message": "fix writev regression: pan hanging unkillable and un-straceable\n\nFrederik Himpe reported an unkillable and un-straceable pan process.\n\nZero length iovecs can go into an infinite loop in writev, because the\niovec iterator does not always advance over them.\n\nThe sequence required to trigger this is not trivial. I think it\nrequires that a zero-length iovec be followed by a non-zero-length iovec\nwhich causes a pagefault in the atomic usercopy. This causes the writev\ncode to drop back into single-segment copy mode, which then tries to\ncopy the 0 bytes of the zero-length iovec; a zero length copy looks like\na failure though, so it loops.\n\nPut a test into iov_iter_advance to catch zero-length iovecs. We could\njust put the test in the fallback path, but I feel it is more robust to\nskip over zero-length iovecs throughout the code (iovec iterator may be\nused in filesystems too, so it should be robust).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75659ca0c10992dcb39258518368a0f6f56e935d",
      "tree": "5d014ceb2f10158061a23d0d976f9a613d85e659",
      "parents": [
        "fbdde7bd274d74729954190f99afcb1e3d9bbfba",
        "2dfe485a2c8afa54cb069fcf48476f6c90ea3fdf"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 01 11:45:47 2008 +1100"
      },
      "message": "Merge branch \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc\n\n* \u0027task_killable\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc: (22 commits)\n  Remove commented-out code copied from NFS\n  NFS: Switch from intr mount option to TASK_KILLABLE\n  Add wait_for_completion_killable\n  Add wait_event_killable\n  Add schedule_timeout_killable\n  Use mutex_lock_killable in vfs_readdir\n  Add mutex_lock_killable\n  Use lock_page_killable\n  Add lock_page_killable\n  Add fatal_signal_pending\n  Add TASK_WAKEKILL\n  exit: Use task_is_*\n  signal: Use task_is_*\n  sched: Use task_contributes_to_load, TASK_ALL and TASK_NORMAL\n  ptrace: Use task_is_*\n  power: Use task_is_*\n  wait: Use TASK_NORMAL\n  proc/base.c: Use task_is_*\n  proc/array.c: Use TASK_REPORT\n  perfmon: Use task_is_*\n  ...\n\nFixed up conflicts in NFS/sunrpc manually..\n"
    },
    {
      "commit": "03252919b79891063cf99145612360efbdf9500b",
      "tree": "a80dc0c89448308d75d247446a5a04c84cb708a6",
      "parents": [
        "d3432896dae72ee97deb850ad7bbc30329d32c0d"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Wed Jan 30 13:33:18 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:33:18 2008 +0100"
      },
      "message": "x86: print which shared library/executable faulted in segfault etc. messages v3\n\nThey now look like:\n\nhal-resmgr[13791]: segfault at 3c rip 2b9c8caec182 rsp 7fff1e825d30 error 4 in libacl.so.1.1.0[2b9c8caea000+6000]\n\nThis makes it easier to pinpoint bugs to specific libraries.\n\nAnd printing the offset into a mapping also always allows to find the\ncorrect fault point in a library even with randomized mappings. Previously\nthere was no way to actually find the correct code address inside\nthe randomized mapping.\n\nRelies on earlier patch to shorten the printk formats.\n\nThey are often now longer than 80 characters, but I think that\u0027s worth it.\n\n[includes fix from Eric Dumazet to check d_path error value]\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "95c354fe9f7d6decc08a92aa26eb233ecc2155bf",
      "tree": "ec9267032ea875e84216cfb20acb2cfc7c62149f",
      "parents": [
        "a95d67f87e1a5f1b4429be3ba3bf7b4051657908"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:31:20 2008 +0100"
      },
      "message": "spinlock: lockbreak cleanup\n\nThe break_lock data structure and code for spinlocks is quite nasty.\nNot only does it double the size of a spinlock but it changes locking to\na potentially less optimal trylock.\n\nPut all of that under CONFIG_GENERIC_LOCKBREAK, and introduce a\n__raw_spin_is_contended that uses the lock data itself to determine whether\nthere are waiters on the lock, to be used if CONFIG_GENERIC_LOCKBREAK is\nnot set.\n\nRename need_lockbreak to spin_needbreak, make it use spin_is_contended to\ndecouple it from the spinlock implementation, and make it typesafe (rwlocks\ndo not have any need_lockbreak sites -- why do they even get bloated up\nwith that break_lock then?).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c1d171a002942ea2d93b4fbd0c9583c56fce0772",
      "tree": "49249c927dc1644e7c92150808269cb474bdd411",
      "parents": [
        "7b83dae7aa31db4f6d6e78c3c6d490a7ac58699c"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Wed Jan 30 13:30:40 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 30 13:30:40 2008 +0100"
      },
      "message": "x86: randomize brk\n\nRandomize the location of the heap (brk) for i386 and x86_64.  The range is\nrandomized in the range starting at current brk location up to 0x02000000\noffset for both architectures.  This, together with\npie-executable-randomization.patch and\npie-executable-randomization-fix.patch, should make the address space\nrandomization on i386 and x86_64 complete.\n\nArjan says:\n\nThis is known to break older versions of some emacs variants, whose dumper\ncode assumed that the last variable declared in the program is equal to the\nstart of the dynamically allocated memory region.\n\n(The dumper is the code where emacs effectively dumps core at the end of it\u0027s\ncompilation stage; this coredump is then loaded as the main program during\nnormal use)\n\niirc this was 5 years or so; we found this way back when I was at RH and we\nfirst did the security stuff there (including this brk randomization).  It\nwasn\u0027t all variants of emacs, and it got fixed as a result (I vaguely remember\nthat emacs already had code to deal with it for other archs/oses, just\nifdeffed wrongly).\n\nIt\u0027s a rare and wrong assumption as a general thing, just on x86 it mostly\nhappened to be true (but to be honest, it\u0027ll break too if gcc does\nsomething fancy or if the linker does a non-standard order).  Still its\nsomething we should at least document.\n\nNote 2: afaik it only broke the emacs *build*.  I\u0027m not 100% sure about that\n(it IS 5 years ago) though.\n\n[ akpm@linux-foundation.org: deuglification ]\n\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Jakub Jelinek \u003cjakub@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d5f68c6dbda8e63df258a0c639f03d7565cf1d50",
      "tree": "490df8e0dcdfd38e83754711d6db6ce0d055b121",
      "parents": [
        "29e0d209b38479e6817318a971082421a7d630b7"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Nov 22 16:28:26 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Mon Jan 28 13:18:55 2008 +0900"
      },
      "message": "sh: Bump number of quicklists for SH-5.\n\nSync up with the SH definitions.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "fa717060f1ab7eb6570f2fb49136f838fc9195a9",
      "tree": "0338460dae3116563645e3bfa1ff5100d39826f8",
      "parents": [
        "8eb703e4f33488bf75829564d51d427e17f7cd4c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jan 25 21:08:27 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:27 2008 +0100"
      },
      "message": "sched: sched_rt_entity\n\nMove the task_struct members specific to rt scheduling together.\nA future optimization could be to put sched_entity and sched_rt_entity\ninto a union.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCC: Srivatsa Vaddagiri \u003cvatsa@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "95402b3829010fe1e208f44e4a158ccade88969a",
      "tree": "3b9895b47623b4673e3c11121980e5171af76bbe",
      "parents": [
        "86ef5c9a8edd78e6bf92879f32329d89b2d55b5a"
      ],
      "author": {
        "name": "Gautham R Shenoy",
        "email": "ego@in.ibm.com",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 25 21:08:02 2008 +0100"
      },
      "message": "cpu-hotplug: replace per-subsystem mutexes with get_online_cpus()\n\nThis patch converts the known per-subsystem mutexes to get_online_cpus\nput_online_cpus. It also eliminates the CPU_LOCK_ACQUIRE and\nCPU_LOCK_RELEASE hotplug notification events.\n\nSigned-off-by: Gautham  R Shenoy \u003cego@in.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b47711bfbcd4eb77ca61ef0162487b20e023ae55",
      "tree": "b2a695dbd40f7ca2333664cf946ef34eda7b7dba",
      "parents": [
        "7556afa0e0e436cad4f560ee83e5fbd5dac9359a",
        "2e08c0c1c3977a5ddc88887dd3af1b26c433e9d0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 25 08:44:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 25 08:44:29 2008 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6:\n  selinux: make mls_compute_sid always polyinstantiate\n  security/selinux: constify function pointer tables and fields\n  security: add a secctx_to_secid() hook\n  security: call security_file_permission from rw_verify_area\n  security: remove security_sb_post_mountroot hook\n  Security: remove security.h include from mm.h\n  Security: remove security_file_mmap hook sparse-warnings (NULL as 0).\n  Security: add get, set, and cloning of superblock security information\n  security/selinux: Add missing \"space\"\n"
    },
    {
      "commit": "df8dc74e8a383eaf2d9b44b80a71ec6f0e52b42e",
      "tree": "bc3799a43e8b94fa84b32e37b1c124d5e4868f50",
      "parents": [
        "556a169dab38b5100df6f4a45b655dddd3db94c1",
        "4a3ad20ccd8f4d2a0535cf98fa83f7b561ba59a9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 25 08:34:42 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 25 08:35:13 2008 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6\n\nThis can be broken down into these major areas:\n - Documentation updates (language translations and fixes, as\n   well as kobject and kset documenatation updates.)\n - major kset/kobject/ktype rework and fixes.  This cleans up the\n   kset and kobject and ktype relationship and architecture,\n   making sense of things now, and good documenation and samples\n   are provided for others to use.  Also the attributes for\n   kobjects are much easier to handle now.  This cleaned up a LOT\n   of code all through the kernel, making kobjects easier to use\n   if you want to.\n - struct bus_type has been reworked to now handle the lifetime\n   rules properly, as the kobject is properly dynamic.\n - struct driver has also been reworked, and now the lifetime\n   issues are resolved.\n - the block subsystem has been converted to use struct device\n   now, and not \"raw\" kobjects.  This patch has been in the -mm\n   tree for over a year now, and finally all the issues are\n   worked out with it.  Older distros now properly work with new\n   kernels, and no userspace updates are needed at all.\n - nozomi driver is added.  This has also been in -mm for a long\n   time, and many people have asked for it to go in.  It is now\n   in good enough shape to do so.\n - lots of class_device conversions to use struct device instead.\n   The tree is almost all cleaned up now, only SCSI and IB is the\n   remaining code to fix up...\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: (196 commits)\n  Driver core: coding style fixes\n  Kobject: fix coding style issues in kobject c files\n  Kobject: fix coding style issues in kobject.h\n  Driver core: fix coding style issues in device.h\n  spi: use class iteration api\n  scsi: use class iteration api\n  rtc: use class iteration api\n  power supply : use class iteration api\n  ieee1394: use class iteration api\n  Driver Core: add class iteration api\n  Driver core: Cleanup get_device_parent() in device_add() and device_move()\n  UIO: constify function pointer tables\n  Driver Core: constify the name passed to platform_device_register_simple\n  driver core: fix build with SYSFS\u003dn\n  sysfs: make SYSFS_DEPRECATED depend on SYSFS\n  Driver core: use LIST_HEAD instead of call to INIT_LIST_HEAD in __init\n  kobject: add sample code for how to use ksets/ktypes/kobjects\n  kobject: add sample code for how to use kobjects in a simple manner.\n  kobject: update the kobject/kset documentation\n  kobject: remove old, outdated documentation.\n  ...\n"
    },
    {
      "commit": "556a169dab38b5100df6f4a45b655dddd3db94c1",
      "tree": "c7788980db8dfb401dd4cf28f4445e1ab98f51d2",
      "parents": [
        "eb36f4fc019835cecf0788907f6cab774508087b"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jan 25 08:20:51 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 25 08:30:36 2008 -0800"
      },
      "message": "slab: fix bootstrap on memoryless node\n\nIf the node we\u0027re booting on doesn\u0027t have memory, bootstrapping kmalloc()\ncaches resorts to fallback_alloc() which requires -\u003enodelists set for all\nnodes.  Fix that by calling set_up_list3s() for CACHE_CACHE in\nkmem_cache_init().\n\nAs kmem_getpages() is called with GFP_THISNODE set, this used to work before\nbecause of breakage in 2.6.22 and before with GFP_THISNODE returning pages from\nthe wrong node if a node had no memory. So it may have worked accidentally and\nin an unsafe manner because the pages would have been associated with the wrong\nnode which could trigger bug ons and locking troubles.\n\nTested-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nTested-by: Olaf Hering \u003colaf@aepfle.de\u003e\nReviewed-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\n[ With additional one-liner by Olaf Hering  - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1eada11c88251e0a30ce5690d2607bb4293b3564",
      "tree": "8ee96c0300fadd21bdbd872d55cac3c19b4cedbc",
      "parents": [
        "cf15126b3d4511e06e5299781ab74922590900be"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Mon Dec 17 23:05:35 2007 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:31 2008 -0800"
      },
      "message": "Kobject: convert mm/slub.c to use kobject_init/add_ng()\n\nThis converts the code to use the new kobject functions, cleaning up the\nlogic in doing so.\n\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n"
    },
    {
      "commit": "0ff21e46630abce11fdaaffabd72bbd4eed5ac2c",
      "tree": "cc49671622ef90775bf12a91d20b8286aa346e6f",
      "parents": [
        "5c03c7ab886859eb195440dbb6ccb8c30c4e84cc"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Nov 06 10:36:58 2007 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:24 2008 -0800"
      },
      "message": "kobject: convert kernel_kset to be a kobject\n\nkernel_kset does not need to be a kset, but a much simpler kobject now\nthat we have kobj_attributes.\n\nWe also rename kernel_kset to kernel_kobj to catch all users of this\nsymbol with a build error instead of an easy-to-ignore build warning.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "081248de0a0288a0ce4e1447a07ccf56aa4fae01",
      "tree": "2a45ac7ad26aa8f8edb9e72ac8be461be82d0271",
      "parents": [
        "27c3a314d55b810f3b51902d1d815c714a7afbd2"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Nov 01 09:29:06 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:16 2008 -0800"
      },
      "message": "kset: move /sys/slab to /sys/kernel/slab\n\n/sys/kernel is where these things should go.\nAlso updated the documentation and tool that used this directory.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "27c3a314d55b810f3b51902d1d815c714a7afbd2",
      "tree": "9f3efcc6d94661eda3ed10aa96fb011c7fe164d8",
      "parents": [
        "aade4041aa60a3ed335391ba308458e26f2dbc0a"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Nov 01 09:29:06 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:15 2008 -0800"
      },
      "message": "kset: convert slub to use kset_create\n\nDynamically create the kset instead of declaring it statically.\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "3514faca19a6fdc209734431c509631ea92b094e",
      "tree": "f6d102e6dec276f8e8d1044b47c74a02b901554f",
      "parents": [
        "c11c4154e7ff4cebfadad849b1e22689d759c3f4"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Tue Oct 16 10:11:44 2007 -0600"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu Jan 24 20:40:10 2008 -0800"
      },
      "message": "kobject: remove struct kobj_type from struct kset\n\nWe don\u0027t need a \"default\" ktype for a kset.  We should set this\nexplicitly every time for each kset.  This change is needed so that we\ncan make ksets dynamic, and cleans up one of the odd, undocumented\nassumption that the kset/kobject/ktype model has.\n\nThis patch is based on a lot of help from Kay Sievers.\n\nNasty bug in the block code was found by Dave Young\n\u003chidave.darkstar@gmail.com\u003e\n\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Dave Young \u003chidave.darkstar@gmail.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "88c3f7a8f2c86be264d326cf6f49a3e8c30d13a6",
      "tree": "9ab4e6996d3630652e55468b0a8ce77242630ac3",
      "parents": [
        "c9180a57a9ab2d5525faf8815a332364ee9e89b7"
      ],
      "author": {
        "name": "Richard Knutsson",
        "email": "ricknu-0@student.ltu.se",
        "time": "Sat Dec 08 12:02:48 2007 +0100"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Fri Jan 25 11:29:48 2008 +1100"
      },
      "message": "Security: remove security_file_mmap hook sparse-warnings (NULL as 0).\n\nFixing:\n  CHECK   mm/mmap.c\nmm/mmap.c:1623:29: warning: Using plain integer as NULL pointer\nmm/mmap.c:1623:29: warning: Using plain integer as NULL pointer\nmm/mmap.c:1944:29: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Richard Knutsson \u003cricknu-0@student.ltu.se\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n"
    },
    {
      "commit": "9c09a95cf431fcf5720f2e408befa24b32b8cf4d",
      "tree": "c188d29023856625e91dea6c2e54d6e4c7969e87",
      "parents": [
        "c5c99429fa57dcf6e05203ebe3676db1ec646793"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Thu Jan 24 05:49:54 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 24 08:07:27 2008 -0800"
      },
      "message": "slab: partially revert list3 changes\n\nPartial revert the changes made by 04231b3002ac53f8a64a7bd142fde3fa4b6808c6\nto the kmem_list3 management. On a machine with a memoryless node, this\nBUG_ON was triggering\n\n\tstatic void *____cache_alloc_node(struct kmem_cache *cachep, gfp_t flags, int nodeid)\n\t{\n\t\tstruct list_head *entry;\n\t\tstruct slab *slabp;\n\t\tstruct kmem_list3 *l3;\n\t\tvoid *obj;\n\t\tint x;\n\n\t\tl3 \u003d cachep-\u003enodelists[nodeid];\n\t\tBUG_ON(!l3);\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: \"Aneesh Kumar K.V\" \u003caneesh.kumar@linux.vnet.ibm.com\u003e\nCc: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5c99429fa57dcf6e05203ebe3676db1ec646793",
      "tree": "0be05b59713e87a42274c0fe76da48f423f148e1",
      "parents": [
        "c2f3dabefa73fe3307578553f456e93f0a1bca08"
      ],
      "author": {
        "name": "Larry Woodman",
        "email": "lwoodman@redhat.com",
        "time": "Thu Jan 24 05:49:25 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 24 08:07:27 2008 -0800"
      },
      "message": "fix hugepages leak due to pagetable page sharing\n\nThe shared page table code for hugetlb memory on x86 and x86_64\nis causing a leak.  When a user of hugepages exits using this code\nthe system leaks some of the hugepages.\n\n-------------------------------------------------------\nPart of /proc/meminfo just before database startup:\nHugePages_Total:  5500\nHugePages_Free:   5500\nHugePages_Rsvd:      0\nHugepagesize:     2048 kB\n\nJust before shutdown:\nHugePages_Total:  5500\nHugePages_Free:   4475\nHugePages_Rsvd:      0\nHugepagesize:     2048 kB\n\nAfter shutdown:\nHugePages_Total:  5500\nHugePages_Free:   4988\nHugePages_Rsvd:\n0 Hugepagesize:     2048 kB\n----------------------------------------------------------\n\nThe problem occurs durring a fork, in copy_hugetlb_page_range().  It\nlocates the dst_pte using huge_pte_alloc().  Since huge_pte_alloc() calls\nhuge_pmd_share() it will share the pmd page if can, yet the main loop in\ncopy_hugetlb_page_range() does a get_page() on every hugepage.  This is a\nviolation of the shared hugepmd pagetable protocol and creates additional\nreferenced to the hugepages causing a leak when the unmap of the VMA\noccurs.  We can skip the entire replication of the ptes when the hugepage\npagetables are shared.  The attached patch skips copying the ptes and the\nget_page() calls if the hugetlbpage pagetable is shared.\n\n[akpm@linux-foundation.org: coding-style cleanups]\nSigned-off-by: Larry Woodman \u003clwoodman@redhat.com\u003e\nSigned-off-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8f7b3d156d348b6766833cd4e272d0d19b501e64",
      "tree": "7569825ce2b5e95213d2b5abd2491f7b1667bdc2",
      "parents": [
        "667984d9e481e43a930a478c588dced98cb61fea"
      ],
      "author": {
        "name": "Anton Salikhmetov",
        "email": "salikhmetov@gmail.com",
        "time": "Wed Jan 23 02:21:18 2008 +0300"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Jan 23 09:58:55 2008 -0800"
      },
      "message": "Update ctime and mtime for memory-mapped files\n\nUpdate ctime and mtime for memory-mapped files at a write access on\na present, read-only PTE, as well as at a write on a non-present PTE.\n\nSigned-off-by: Anton Salikhmetov \u003csalikhmetov@gmail.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9723198c219f3546982cb469e5aed26e68399055",
      "tree": "b8e195cb1ca1bdf143e4e564fdb43f09aadfd6f3",
      "parents": [
        "6b2d2cec1081a979e0efd6a1e9559e5a01a3c10e"
      ],
      "author": {
        "name": "Carsten Otte",
        "email": "cotte@de.ibm.com",
        "time": "Thu Jan 17 15:21:17 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 17 15:38:59 2008 -0800"
      },
      "message": "#ifdef very expensive debug check in page fault path\n\nThis patch puts #ifdef CONFIG_DEBUG_VM around a check in vm_normal_page\nthat verifies that a pfn is valid.  This patch increases performance of the\npage fault microbenchmark in lmbench by 13% and overall dbench performance\nby 7% on s390x.  pfn_valid() is an expensive operation on s390 that needs a\nhigh double digit amount of CPU cycles.  Nick Piggin suggested that\npfn_valid() involves an array lookup on systems with sparsemem, and\ntherefore is an expensive operation there too.\n\nThe check looks like a clear debug thing to me, it should never trigger on\nregular kernels.  And if a pte is created for an invalid pfn, we\u0027ll find\nout once the memory gets accessed later on anyway.  Please consider\ninclusion of this patch into mm.\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1d6f4e60e736a00b50ec668ba1a9fe27afb083a3",
      "tree": "5d08b61e5aba935662763fbfce05768eb5067ac4",
      "parents": [
        "b0e86f0a3b9329bbebadb01ca935208459df18c3"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Thu Jan 17 15:21:12 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jan 17 15:38:58 2008 -0800"
      },
      "message": "mm: fix section mismatch warning in page_alloc.c\n\nWith CONFIG_HOTPLUG\u003dn and CONFIG_HOTPLUG_CPU\u003dy we saw\nfollowing warning:\nWARNING: mm/built-in.o(.text+0x6864): Section mismatch: reference to .init.text: (between \u0027process_zones\u0027 and \u0027pageset_cpuup_callback\u0027)\n\nThe culprit was zone_batchsize() which were annotated __devinit but used\nfrom process_zones() which is annotated __cpuinit.  zone_batchsize() are\nused from another function annotated __meminit so the only valid option is\nto drop the annotation of zone_batchsize() so we know it is always valid to\nuse it.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\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": "c23f72cae9523d29ff94eec8f30ccbdaf234b20e",
      "tree": "1e5f46971510cd36a3deebfa8f160933212f4df0",
      "parents": [
        "031f2dcd7075e218e74dd7f942ad015cf82dffab"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 14 21:21:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 14 21:21:29 2008 -0800"
      },
      "message": "Revert \"writeback: introduce writeback_control.more_io to indicate more io\"\n\nThis reverts commit 2e6883bdf49abd0e7f0d9b6297fc3be7ebb2250b, as\nrequested by Fengguang Wu.  It\u0027s not quite fully baked yet, and while\nthere are patches around to fix the problems it caused, they should get\nmore testing.  Says Fengguang: \"I\u0027ll resend them both for -mm later on,\nin a more complete patchset\".\n\nSee\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d9738\n\nfor some of this discussion.\n\nRequested-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68842c9b94560e647e8e7cc75cbb3dbe59f6fcb5",
      "tree": "58220ff2840a62155d3e7f934bc39e4cea673b39",
      "parents": [
        "747d016e7e25e216b31022fe2b012508d99fb682"
      ],
      "author": {
        "name": "Ken Chen",
        "email": "kenchen@google.com",
        "time": "Mon Jan 14 00:55:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 14 08:52:23 2008 -0800"
      },
      "message": "hugetlbfs: fix quota leak\n\nIn the error path of both shared and private hugetlb page allocation,\nthe file system quota is never undone, leading to fs quota leak.  Fix\nthem up.\n\n[akpm@linux-foundation.org: cleanup, micro-optimise]\nSigned-off-by: Ken Chen \u003ckenchen@google.com\u003e\nAcked-by: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: William Lee Irwin III \u003cwli@holomorphy.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96990a4ae979df9e235d01097d6175759331e88c",
      "tree": "ba545616c7deb1cca99565655a80564564d39bd4",
      "parents": [
        "8f4c79ce79d1552014af3c115d03e13092443905"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Jan 14 00:55:14 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jan 14 08:52:22 2008 -0800"
      },
      "message": "quicklists: Only consider memory that can be used with GFP_KERNEL\n\nQuicklists calculates the size of the quicklists based on the number of\nfree pages.  This must be the number of free pages that can be allocated\nwith GFP_KERNEL.  node_page_state() includes the pages in ZONE_HIGHMEM and\nZONE_MOVABLE which may lead the quicklists to become too large causing OOM.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nTested-by: Dhaval Giani \u003cdhaval@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": "467bc461d2845f6a04b124bca1ae6ecc554e1ee5",
      "tree": "060bed1cbd2440486d2abaafd8f0f2b8e6b9f76b",
      "parents": [
        "22a860a9e22fa077300e1e72170afb82bf695617"
      ],
      "author": {
        "name": "Thomas Bogendoerfer",
        "email": "tsbogend@alpha.franken.de",
        "time": "Tue Jan 08 15:33:11 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 08 16:10:36 2008 -0800"
      },
      "message": "Fix crash with FLAT_MEMORY and ARCH_PFN_OFFSET !\u003d 0\n\nWhen using FLAT_MEMORY and ARCH_PFN_OFFSET is not 0, the kernel crashes in\nmemmap_init_zone().  This bug got introduced by commit\nc713216deebd95d2b0ab38fef8bb2361c0180c2d\n\nSigned-off-by: Thomas Bogendoerfer \u003ctsbogend@alpha.franken.de\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Bob Picco \u003cbob.picco@hp.com\u003e\nCc: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Andi Kleen \u003cak@muc.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: \"Keith Mannthey\" \u003ckmannth@gmail.com\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: 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"
    }
  ],
  "next": "c51b1a160b63304720d49479986915e4c475a2cf"
}
