)]}'
{
  "log": [
    {
      "commit": "32c5fc10e79a7053ac5728b01a0bff55cbcb9d49",
      "tree": "7a392ac3196770c49622d5d5cb41f77c46a35f83",
      "parents": [
        "c9354c85c1c7bac788ce57d3c17f2016c1c45b1d"
      ],
      "author": {
        "name": "Bo Liu",
        "email": "bo-liu@hotmail.com",
        "time": "Mon Nov 02 16:50:33 2009 +0000"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 02 09:44:41 2009 -0800"
      },
      "message": "mm: remove incorrect swap_count() from try_to_unuse()\n\nIn try_to_unuse(), swcount is a local copy of *swap_map, including the\nSWAP_HAS_CACHE bit; but a wrong comparison against swap_count(*swap_map),\nwhich masks off the SWAP_HAS_CACHE bit, succeeded where it should fail.\n\nThat had the effect of resetting the mm from which to start searching\nfor the next swap page, to an irrelevant mm instead of to an mm in which\nthis swap page had been found: which may increase search time by ~20%.\nBut we\u0027re used to swapoff being slow, so never noticed the slowdown.\n\nRemove that one spurious use of swap_count(): Bo Liu thought it merely\nredundant, Hugh rewrote the description since it was measurably wrong.\n\nSigned-off-by: Bo Liu \u003cbo-liu@hotmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nReviewed-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3bd0f0c763e497c8674b28e3df2732f48683dabd",
      "tree": "fd3bb8635291ad8c0b4e302e40cc776fd1644ada",
      "parents": [
        "a112a71d45b5e40c3cf07371d20a4a5079a72610"
      ],
      "author": {
        "name": "Suresh Jayaraman",
        "email": "sjayaraman@suse.de",
        "time": "Wed Sep 30 10:53:48 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 01 21:15:46 2009 +0200"
      },
      "message": "swapfile: avoid NULL pointer dereference in swapon when s_bdev is NULL\n\nWhile testing Swap over NFS patchset, I noticed an oops that was triggered\nduring swapon. Investigating further, the NULL pointer deference is due to the\nSSD device check/optimization in the swapon code that assumes s_bdev could never\nbe NULL.\n\ninode-\u003ei_sb-\u003es_bdev could be NULL in a few cases. For e.g. one such case is\nloopback NFS mount, there could be others as well. Fix this by ensuring s_bdev\nis not NULL before we try to deference s_bdev.\n\nSigned-off-by: Suresh Jayaraman \u003csjayaraman@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "db16826367fefcb0ddb93d76b66adc52eb4e6339",
      "tree": "626224c1eb1eb79c522714591f208b4fdbdcd9d4",
      "parents": [
        "cd6045138ed1bb5d8773e940d51c34318eef3ef2",
        "465fdd97cbe16ef8727221857e96ef62dd352017"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Sep 24 07:53:22 2009 -0700"
      },
      "message": "Merge branch \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6\n\n* \u0027hwpoison\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6: (21 commits)\n  HWPOISON: Enable error_remove_page on btrfs\n  HWPOISON: Add simple debugfs interface to inject hwpoison on arbitary PFNs\n  HWPOISON: Add madvise() based injector for hardware poisoned pages v4\n  HWPOISON: Enable error_remove_page for NFS\n  HWPOISON: Enable .remove_error_page for migration aware file systems\n  HWPOISON: The high level memory error handler in the VM v7\n  HWPOISON: Add PR_MCE_KILL prctl to control early kill behaviour per process\n  HWPOISON: shmem: call set_page_dirty() with locked page\n  HWPOISON: Define a new error_remove_page address space op for async truncation\n  HWPOISON: Add invalidate_inode_page\n  HWPOISON: Refactor truncate to allow direct truncating of page v2\n  HWPOISON: check and isolate corrupted free pages v2\n  HWPOISON: Handle hardware poisoned pages in try_to_unmap\n  HWPOISON: Use bitmask/action code for try_to_unmap behaviour\n  HWPOISON: x86: Add VM_FAULT_HWPOISON handling to x86 page fault handler v2\n  HWPOISON: Add poison check to page fault handling\n  HWPOISON: Add basic support for poisoned pages in fault handler v3\n  HWPOISON: Add new SIGBUS error codes for hardware poison signals\n  HWPOISON: Add support for poison swap entries v2\n  HWPOISON: Export some rmap vma locking to outside world\n  ...\n"
    },
    {
      "commit": "35451beecbd7c86ce3249d543594517a5fe9a0cd",
      "tree": "e72759e6e6fcd142ab85c607a9b3dd3e1c016eed",
      "parents": [
        "a913e182ab9484308e870af37a14d372742d53b0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh.dickins@tiscali.co.uk",
        "time": "Mon Sep 21 17:02:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:33 2009 -0700"
      },
      "message": "ksm: unmerge is an origin of OOMs\n\nJust as the swapoff system call allocates many pages of RAM to various\nprocesses, perhaps triggering OOM, so \"echo 2 \u003e/sys/kernel/mm/ksm/run\"\n(unmerge) is liable to allocate many pages of RAM to various processes,\nperhaps triggering OOM; and each is normally run from a modest admin\nprocess (swapoff or shell), easily repeated until it succeeds.\n\nSo treat unmerge_and_remove_all_rmap_items() in the same way that we treat\ntry_to_unuse(): generalize PF_SWAPOFF to PF_OOM_ORIGIN, and bracket both\nwith that, to ask the OOM killer to kill them first, to prevent them from\nspawning more and more OOM kills.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nAcked-by: Izik Eidus \u003cieidus@redhat.com\u003e\nCc: Andrea Arcangeli \u003caarcange@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a7420aa54dbf699a5a05feba3c859b6baaa3938c",
      "tree": "97119d311149c902b3bd3a6157e70fb79c876462",
      "parents": [
        "10be22dfe1e6ad978269dc275147e0ed049187bb"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Wed Sep 16 11:50:05 2009 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "ak@linux.intel.com",
        "time": "Wed Sep 16 11:50:05 2009 +0200"
      },
      "message": "HWPOISON: Add support for poison swap entries v2\n\nMemory migration uses special swap entry types to trigger special actions on\npage faults. Extend this mechanism to also support poisoned swap entries, to\ntrigger poison handling on page faults. This allows follow-on patches to\nprevent processes from faulting in poisoned pages again.\n\nv2: Fix overflow in MAX_SWAPFILES (Fengguang Wu)\nv3: Better overflow fix (Hidehiro Kawai)\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\n"
    },
    {
      "commit": "746cd1e7e4a555ddaee53b19a46e05c9c61eaf09",
      "tree": "d129194669e0122113a5cc86003a4a7711450284",
      "parents": [
        "3d2257f157c2324acbc0fa0fa54e8626a987edd2"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sat Sep 12 07:35:43 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Sep 14 08:24:53 2009 +0200"
      },
      "message": "block: use blkdev_issue_discard in blk_ioctl_discard\n\nblk_ioctl_discard duplicates large amounts of code from blkdev_issue_discard,\nthe only difference between the two is that blkdev_issue_discard needs to\nsend a barrier discard request and blk_ioctl_discard a non-barrier one,\nand blk_ioctl_discard needs to wait on the request.  To facilitates this\nadd a flags argument to blkdev_issue_discard to control both aspects of the\nbehaviour.  This will be very useful later on for using the waiting\nfuncitonality for other callers.\n\nBased on an earlier patch from Matthew Wilcox \u003cmatthew@wil.cx\u003e.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "dddac6a7b445de95515f64fdf82fe5dc36c02f26",
      "tree": "39651610292d6b0c17f210f253a0dd16b022727d",
      "parents": [
        "ec79be26875f6c1468784876cb99192b7f41c7a5"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Wed Jul 29 21:07:55 2009 +0200"
      },
      "committer": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Jul 29 21:07:55 2009 +0200"
      },
      "message": "PM / Hibernate: Replace bdget call with simple atomic_inc of i_count\n\nCreate bdgrab().  This function copies an existing reference to a\nblock_device.  It is safe to call from any context.\n\nHibernation code wishes to copy a reference to the active swap device.\nRight now it calls bdget() under a spinlock, but this is wrong because\nbdget() can sleep.  It doesn\u0027t need a full bdget() because we already\nhold a reference to active swap devices (and the spinlock protects\nagainst swapoff).\n\nFixes http://bugzilla.kernel.org/show_bug.cgi?id\u003d13827\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\n"
    },
    {
      "commit": "8a9478ca7f4bcb8945cec7f95d52dae2d5e50cbd",
      "tree": "935e6ee3340ebe999374b54967cc2fa14e8d0060",
      "parents": [
        "20ebcdda78a282d1d5266887ddf8a2d670182576"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jun 17 16:27:17 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 18 13:03:47 2009 -0700"
      },
      "message": "memcg: fix swap accounting\n\nThis patch fixes mis-accounting of swap usage in memcg.\n\nIn the current implementation, memcg\u0027s swap account is uncharged only when\nswap is completely freed.  But there are several cases where swap cannot\nbe freed cleanly.  For handling that, this patch changes that memcg\nuncharges swap account when swap has no references other than cache.\n\nBy this, memcg\u0027s swap entry accounting can be fully synchronous with the\napplication\u0027s behavior.\n\nThis patch also changes memcg\u0027s hooks for swap-out.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c9e444103b5e7a5a3519f9913f59767f92e33baf",
      "tree": "6b14020dc9271b5ef22ba34daf5494ef6572abb9",
      "parents": [
        "355cfa73ddff2fb8fa14e93bd94a057cc022512e"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jun 16 15:32:54 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "mm: reuse unused swap entry if necessary\n\nPresently we can know a swap entry is just used as SwapCache via swap_map,\nwithout looking up swap cache.\n\nThen, we have a chance to reuse swap-cache-only swap entries in\nget_swap_pages().\n\nThis patch tries to free swap-cache-only swap entries if swap is not\nenough.\n\nNote: We hit following path when swap_cluster code cannot find a free\ncluster.  Then, vm_swap_full() is not only condition to allow the kernel\nto reclaim unused swap.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "355cfa73ddff2fb8fa14e93bd94a057cc022512e",
      "tree": "7ff70cd56d533070d50b06db6ba0086e8aab0d71",
      "parents": [
        "cb4b86ba47bb0937b71fb825b3ed88adf7a190f0"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jun 16 15:32:53 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "mm: modify swap_map and add SWAP_HAS_CACHE flag\n\nThis is a part of the patches for fixing memcg\u0027s swap accountinf leak.\nBut, IMHO, not a bad patch even if no memcg.\n\nThere are 2 kinds of references to swap.\n - reference from swap entry\n - reference from swap cache\n\nThen,\n\n - If there is swap cache \u0026\u0026 swap\u0027s refcnt is 1, there is only swap cache.\n  (*) swapcount(entry) \u003d\u003d 1 \u0026\u0026 find_get_page(swapper_space, entry) !\u003d NULL\n\nThis counting logic have worked well for a long time.  But considering\nthat we cannot know there is a _real_ reference or not by swap_map[],\ncurrent usage of counter is not very good.\n\nThis patch adds a flag SWAP_HAS_CACHE and recored information that a swap\nentry has a cache or not.  This will remove -1 magic used in swapfile.c\nand be a help to avoid unnecessary find_get_page().\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb4b86ba47bb0937b71fb825b3ed88adf7a190f0",
      "tree": "4b8528ba914a315e5857e7fe2a6e7d415f2e6650",
      "parents": [
        "6837765963f1723e80ca97b1fae660f3a60d77df"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Tue Jun 16 15:32:52 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jun 16 19:47:42 2009 -0700"
      },
      "message": "mm: add swap cache interface for swap reference\n\nIn a following patch, the usage of swap cache is recorded into swap_map.\nThis patch is for necessary interface changes to do that.\n\n2 interfaces:\n\n  - swapcache_prepare()\n  - swapcache_free()\n\nare added for allocating/freeing refcnt from swap-cache to existing swap\nentries.  But implementation itself is not changed under this patch.  At\nadding swapcache_free(), memcg\u0027s hook code is moved under\nswapcache_free().  This is better than using scattered hooks.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nAcked-by: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Dhaval Giani \u003cdhaval@linux.vnet.ibm.com\u003e\nCc: YAMAMOTO Takashi \u003cyamamoto@valinux.co.jp\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1bb7d61233ba5fb5cd865f907a9ddcc8f8c02bd",
      "tree": "bd0877610aaa2e33a7ff76c684a51a65765c78fb",
      "parents": [
        "eed3ee08292d821282169708e5e8e89a0d0a0c63"
      ],
      "author": {
        "name": "Alan Jenkins",
        "email": "alan-jenkins@tuffmail.co.uk",
        "time": "Sat Feb 14 02:01:14 2009 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Feb 21 14:17:17 2009 -0800"
      },
      "message": "PM/hibernate: fix \"swap breaks after hibernation failures\"\n\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d12239\n\nThe image writing code dropped a reference to the current swap device.\nThis doesn\u0027t show up if the hibernation succeeds - because it doesn\u0027t\naffect the image which gets resumed.  But it means multiple _failed_\nhibernations end up freeing the swap device while it is still use!\n\nswsusp_write() finds the block device for the swap file using swap_type_of().\nIt then uses blkdev_get() / blkdev_put() to open and close the block device.\n\nUnfortunately, blkdev_get() assumes ownership of the inode of the block_device\npassed to it.  So blkdev_put() calls iput() on the inode.  This is by design\nand other callers expect this behaviour.  The fix is for swap_type_of() to take\na reference on the inode using bdget().\n\nSigned-off-by: Alan Jenkins \u003calan-jenkins@tuffmail.co.uk\u003e\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "85d9fc89fb0f0703df6444f260187c088a8d59ff",
      "tree": "ba034e2b8bff6b7f3b62a826a0106dc0e1391b46",
      "parents": [
        "7460db567bbca76bf087d1694d792a1a96bdaa26"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Thu Jan 29 14:25:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 29 18:04:43 2009 -0800"
      },
      "message": "memcg: fix refcnt handling at swapoff\n\nNow, at swapoff, even while try_charge() fails, commit is executed.  This\nis a bug which turns the refcnt of cgroup_subsys_state negative.\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c4ea37c26a691ad0b7e86aa5884aab27830e95c9",
      "tree": "4a3bd25e61cd3782f535ad2140a01bf3835dca4f",
      "parents": [
        "d5460c9974a321a194aded4a8c4daaac68ea8171"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:14:28 2009 +0100"
      },
      "committer": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Wed Jan 14 14:15:29 2009 +0100"
      },
      "message": "[CVE-2009-0029] System call wrappers part 26\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\n"
    },
    {
      "commit": "2c26fdd70c3094fa3e84caf9ef434911933d5477",
      "tree": "06a3bafc12f5f8fd91d9ed1fca5ea0a632ef2004",
      "parents": [
        "887007561ae58628f03aa9046949747c04f63be8"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:06 2009 -0800"
      },
      "message": "memcg: revert gfp mask fix\n\nMy patch, memcg-fix-gfp_mask-of-callers-of-charge.patch changed gfp_mask\nof callers of charge to be GFP_HIGHUSER_MOVABLE for showing what will\nhappen at memory reclaim.\n\nBut in recent discussion, it\u0027s NACKed because it sounds ugly.\n\nThis patch is for reverting it and add some clean up to gfp_mask of\ncallers of charge.  No behavior change but need review before generating\nHUNK in deep queue.\n\nThis patch also adds explanation to meaning of gfp_mask passed to charge\nfunctions in memcontrol.h.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8c7c6e34a1256a5082d38c8e9bd1474476912715",
      "tree": "09f53c7c4bac5532a9ecbdadb4450702c744ea6f",
      "parents": [
        "27a7faa0779dd13729196c1a818c294f44bbd1ee"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:08:00 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: mem+swap controller core\n\nThis patch implements per cgroup limit for usage of memory+swap.  However\nthere are SwapCache, double counting of swap-cache and swap-entry is\navoided.\n\nMem+Swap controller works as following.\n  - memory usage is limited by memory.limit_in_bytes.\n  - memory + swap usage is limited by memory.memsw_limit_in_bytes.\n\nThis has following benefits.\n  - A user can limit total resource usage of mem+swap.\n\n    Without this, because memory resource controller doesn\u0027t take care of\n    usage of swap, a process can exhaust all the swap (by memory leak.)\n    We can avoid this case.\n\n    And Swap is shared resource but it cannot be reclaimed (goes back to memory)\n    until it\u0027s used. This characteristic can be trouble when the memory\n    is divided into some parts by cpuset or memcg.\n    Assume group A and group B.\n    After some application executes, the system can be..\n\n    Group A -- very large free memory space but occupy 99% of swap.\n    Group B -- under memory shortage but cannot use swap...it\u0027s nearly full.\n\n    Ability to set appropriate swap limit for each group is required.\n\nMaybe someone wonder \"why not swap but mem+swap ?\"\n\n  - The global LRU(kswapd) can swap out arbitrary pages. Swap-out means\n    to move account from memory to swap...there is no change in usage of\n    mem+swap.\n\n    In other words, when we want to limit the usage of swap without affecting\n    global LRU, mem+swap limit is better than just limiting swap.\n\nAccounting target information is stored in swap_cgroup which is\nper swap entry record.\n\nCharge is done as following.\n  map\n    - charge  page and memsw.\n\n  unmap\n    - uncharge page/memsw if not SwapCache.\n\n  swap-out (__delete_from_swap_cache)\n    - uncharge page\n    - record mem_cgroup information to swap_cgroup.\n\n  swap-in (do_swap_page)\n    - charged as page and memsw.\n      record in swap_cgroup is cleared.\n      memsw accounting is decremented.\n\n  swap-free (swap_free())\n    - if swap entry is freed, memsw is uncharged by PAGE_SIZE.\n\nThere are people work under never-swap environments and consider swap as\nsomething bad. For such people, this mem+swap controller extension is just an\noverhead.  This overhead is avoided by config or boot option.\n(see Kconfig. detail is not in this patch.)\n\nTODO:\n - maybe more optimization can be don in swap-in path. (but not very safe.)\n   But we just do simple accounting at this stage.\n\n[nishimura@mxp.nes.nec.co.jp: make resize limit hold mutex]\n[hugh@veritas.com: memswap controller core swapcache fixes]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\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": "27a7faa0779dd13729196c1a818c294f44bbd1ee",
      "tree": "30837689bf39eb734a8917f2c912e1b8ac0c28c0",
      "parents": [
        "c077719be8e9e6b55702117513d1b5f41d80404a"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:05 2009 -0800"
      },
      "message": "memcg: swap cgroup for remembering usage\n\nFor accounting swap, we need a record per swap entry, at least.\n\nThis patch adds following function.\n  - swap_cgroup_swapon() .... called from swapon\n  - swap_cgroup_swapoff() ... called at the end of swapoff.\n\n  - swap_cgroup_record() .... record information of swap entry.\n  - swap_cgroup_lookup() .... lookup information of swap entry.\n\nThis patch just implements \"how to record information\".  No actual method\nfor limit the usage of swap.  These routine uses flat table to record and\nlookup.  \"wise\" lookup system like radix-tree requires requires memory\nallocation at new records but swap-out is usually called under memory\nshortage (or memcg hits limit.) So, I used static allocation.  (maybe\ndynamic allocation is not very hard but it adds additional memory\nallocation in memory shortage path.)\n\nNote1: In this, we use pointer to record information and this means\n      8bytes per swap entry. I think we can reduce this when we\n      create \"id of cgroup\" in the range of 0-65535 or 0-255.\n\nReported-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nTested-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nReported-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReported-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bced0520fe462bb94021dcabd32e99630c171be2",
      "tree": "6fa234f4a25bc8231742aea13e7cc2664b0a69a6",
      "parents": [
        "7a81b88cb53e335ff7d019e6398c95792c817d93"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: fix gfp_mask of callers of charge\n\nFix misuse of gfp_kernel.\n\nNow, most of callers of mem_cgroup_charge_xxx functions uses GFP_KERNEL.\n\nI think that this is from the fact that page_cgroup *was* dynamically\nallocated.\n\nBut now, we allocate all page_cgroup at boot.  And\nmem_cgroup_try_to_free_pages() reclaim memory from GFP_HIGHUSER_MOVABLE +\nspecified GFP_RECLAIM_MASK.\n\n  * This is because we just want to reduce memory usage.\n    \"Where we should reclaim from ?\" is not a problem in memcg.\n\nThis patch modifies gfp masks to be GFP_HIGUSER_MOVABLE if possible.\n\nNote: This patch is not for fixing behavior but for showing sane information\n      in source code.\n\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7a81b88cb53e335ff7d019e6398c95792c817d93",
      "tree": "6ebca4d509a541ac707e10f9369916549e90c0ad",
      "parents": [
        "0b82ac37b889ec881b645860da3775118effb3ca"
      ],
      "author": {
        "name": "KAMEZAWA Hiroyuki",
        "email": "kamezawa.hiroyu@jp.fujitsu.com",
        "time": "Wed Jan 07 18:07:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jan 08 08:31:04 2009 -0800"
      },
      "message": "memcg: introduce charge-commit-cancel style of functions\n\nThere is a small race in do_swap_page().  When the page swapped-in is\ncharged, the mapcount can be greater than 0.  But, at the same time some\nprocess (shares it ) call unmap and make mapcount 1-\u003e0 and the page is\nuncharged.\n\n      CPUA \t\t\tCPUB\n       mapcount \u003d\u003d 1.\n   (1) charge if mapcount\u003d\u003d0     zap_pte_range()\n                                (2) mapcount 1 \u003d\u003e 0.\n\t\t\t        (3) uncharge(). (success)\n   (4) set page\u0027s rmap()\n       mapcount 0\u003d\u003e1\n\nThen, this swap page\u0027s account is leaked.\n\nFor fixing this, I added a new interface.\n  - charge\n   account to res_counter by PAGE_SIZE and try to free pages if necessary.\n  - commit\n   register page_cgroup and add to LRU if necessary.\n  - cancel\n   uncharge PAGE_SIZE because of do_swap_page failure.\n\n     CPUA\n  (1) charge (always)\n  (2) set page\u0027s rmap (mapcount \u003e 0)\n  (3) commit charge was necessary or not after set_pte().\n\nThis protocol uses PCG_USED bit on page_cgroup for avoiding over accounting.\nUsual mem_cgroup_charge_common() does charge -\u003e commit at a time.\n\nAnd this patch also adds following function to clarify all charges.\n\n  - mem_cgroup_newpage_charge() ....replacement for mem_cgroup_charge()\n\tcalled against newly allocated anon pages.\n\n  - mem_cgroup_charge_migrate_fixup()\n        called only from remove_migration_ptes().\n\twe\u0027ll have to rewrite this later.(this patch just keeps old behavior)\n\tThis function will be removed by additional patch to make migration\n\tclearer.\n\nGood for clarifying \"what we do\"\n\nThen, we have 4 following charge points.\n  - newpage\n  - swap-in\n  - add-to-cache.\n  - migration.\n\n[akpm@linux-foundation.org: add missing inline directives to stubs]\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nReviewed-by: Daisuke Nishimura \u003cnishimura@mxp.nes.nec.co.jp\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "084f71ae5ceeb16734d8ac47559d3c718456a865",
      "tree": "65970a2e1873135d4b71d5a19b83b3f427835857",
      "parents": [
        "9f572e3f96b8a2ef70dcb881e64c7b9c10057d98"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:40:30 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:10 2009 -0800"
      },
      "message": "mm: kill page_queue_congested()\n\npage_queue_congested() was introduced in 2002, but it was never used\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2509ef26db4699a5d9fa876e90ddfc107afcab84",
      "tree": "09e65185142c60b5d766d8b75f3cbc8a65de6a39",
      "parents": [
        "22b31eec63e5f2e219a3ee15f456897272bc73e8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: zap print_bad_pte on swap and file\n\nComplete zap_pte_range()\u0027s coverage of bad pagetable entries by calling\nprint_bad_pte() on a pte_file in a linear vma and on a bad swap entry.\nThat needs free_swap_and_cache() to tell it, which will also have shown\none of those \"swap_free\" errors (but with much less information).\n\nSimilar checks in fork\u0027s copy_one_pte()?  No, that would be more noisy\nthan helpful: we\u0027ll see them when parent and child exec or exit.\n\nWhere do_nonlinear_fault() calls print_bad_pte(): omit !VM_CAN_NONLINEAR\ncase, that could only be a bug in sys_remap_file_pages(), not a bad pte.\nVM_FAULT_OOM rather than VM_FAULT_SIGBUS?  Well, okay, that is consistent\nwith what happens if do_swap_page() operates a bad swap entry; but don\u0027t\nwe have patches to be more careful about killing when VM_FAULT_OOM?\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f0d7a4b3ed46816f5097d521850a8ab7a0d40f3c",
      "tree": "521a69aea8b8b67e706f46d602a08c9aca1defd9",
      "parents": [
        "858a29900ea2d639759e697be901a60b759cdcfb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "swapfile: let others seed random\n\nRemove the srandom32((u32)get_seconds()) from non-rotational swapon:\nthere\u0027s been a coincidental discussion of earlier randomization, assume\nthat goes ahead, let swapon be a client rather than stirring for itself.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Donjun Shin \u003cdjshin90@gmail.com\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Tejun Heo \u003cteheo@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": "858a29900ea2d639759e697be901a60b759cdcfb",
      "tree": "2a75b37a5bb5522c33d47356354866d0b3e8bb40",
      "parents": [
        "c60aa176c6de82703f064082b909496fc4fee956"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:56 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "swapfile: change discard pgoff_t to sector_t\n\nChange pgoff_t nr_blocks in discard_swap() and discard_swap_cluster() to\nsector_t: given the constraints on swap offsets (in particular, the 5 bits\nof swap type accommodated in the same unsigned long), pgoff_t was actually\nsafe as is, but it certainly looked worrying when shifted left.\n\n[akpm@linux-foundation.org: fix shift overflow]\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Donjun Shin \u003cdjshin90@gmail.com\u003e\nCc: Tejun Heo \u003cteheo@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": "c60aa176c6de82703f064082b909496fc4fee956",
      "tree": "2a6e58bda416af2c87f470023041f7049dcf1167",
      "parents": [
        "20137a490f397d9c01fc9fadd83a8d198bda4477"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:55 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "swapfile: swap allocation cycle if nonrot\n\nThough attempting to find free clusters (Andrea), swap allocation has\nalways restarted its searches from the beginning of the swap area (sct),\nto reduce seek times between swap pages, by not scattering them all over\nthe partition.\n\nBut on a solidstate swap device, seeks are cheap, and block remapping to\nlevel the wear may be limited by zones: in that case it\u0027s better to cycle\naround the whole partition.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Donjun Shin \u003cdjshin90@gmail.com\u003e\nCc: Tejun Heo \u003cteheo@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": "20137a490f397d9c01fc9fadd83a8d198bda4477",
      "tree": "38e2d904e06f576a825cca3e1eaad7da6fd55947",
      "parents": [
        "7992fde72ce06c73280a1939b7a1e903bc95ef85"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: swapon randomize if nonrot\n\nSwap allocation has always started from the beginning of the swap area;\nbut if we\u0027re dealing with a solidstate swap device which can only remap\nblocks within limited zones, that would sooner wear out the first zone.\n\nTherefore sys_swapon() test whether blk_queue is non-rotational, and if so\nrandomize the cluster_next starting position for allocation.\n\nIf blk_queue is nonrot, note SWP_SOLIDSTATE for later use, and report it\nwith an \"SS\" at the right end of the kernel\u0027s \"Adding ...  swap\" message\n(so that if it\u0027s both nonrot and discardable, \"SSD\" will be shown there).\nPerhaps something should be shown in /proc/swaps (swapon -s), but we have\nto be more cautious before making any addition to that format.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Donjun Shin \u003cdjshin90@gmail.com\u003e\nCc: Tejun Heo \u003cteheo@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": "7992fde72ce06c73280a1939b7a1e903bc95ef85",
      "tree": "8e8ef30ec4e29b325f70c2d01d2a9def192b5c64",
      "parents": [
        "6a6ba83175c029c7820765bae44692266b29e67a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:53 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: swap allocation use discard\n\nWhen scan_swap_map() finds a free cluster of swap pages to allocate,\ndiscard the old contents of the cluster if the device supports discard.\nBut don\u0027t bother when swap is so fragmented that we allocate single pages.\n\nBe careful about racing allocations made while we\u0027re scanning for a\ncluster; and hold up allocations made while we\u0027re discarding.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Donjun Shin \u003cdjshin90@gmail.com\u003e\nCc: Tejun Heo \u003cteheo@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": "6a6ba83175c029c7820765bae44692266b29e67a",
      "tree": "30bfb4938c73b715eb90dd15c09777fe0bbf93e6",
      "parents": [
        "ebebbbe904634b0ca1c674457b399f68db5e05b1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:51 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: swapon use discard (trim)\n\nWhen adding swap, all the old data on swap can be forgotten: sys_swapon()\ndiscard all but the header page of the swap partition (or every extent but\nthe header of the swap file), to give a solidstate swap device the\nopportunity to optimize its wear-levelling.\n\nIf that succeeds, note SWP_DISCARDABLE for later use, and report it with a\n\"D\" at the right end of the kernel\u0027s \"Adding ...  swap\" message.  Perhaps\nsomething should be shown in /proc/swaps (swapon -s), but we have to be\nmore cautious before making any addition to that format.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: David Woodhouse \u003cdwmw2@infradead.org\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Matthew Wilcox \u003cmatthew@wil.cx\u003e\nCc: Joern Engel \u003cjoern@logfs.org\u003e\nCc: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\nCc: Donjun Shin \u003cdjshin90@gmail.com\u003e\nCc: Tejun Heo \u003cteheo@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": "ebebbbe904634b0ca1c674457b399f68db5e05b1",
      "tree": "168c6c1193580e40ba1916ebaff822e15e8ee186",
      "parents": [
        "81e33971271ec8603fe696731ff9967afb99e729"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: rearrange scan and swap_info\n\nBefore making functional changes, rearrange scan_swap_map() to simplify\nsubsequent diffs.  Actually, there is one functional change in there:\nleave cluster_nr negative while scanning for a new cluster - resetting it\nearly increased the likelihood that when we have difficulty finding a free\ncluster, another task may come in and try doing exactly the same - just a\nwaste of cpu.\n\nBefore making functional changes, rearrange struct swap_info_struct\nslightly: flags will be needed as an unsigned long (for wait_on_bit), next\nis a good int to pair with prio, old_block_size is uninteresting so shift\nit to the end.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "81e33971271ec8603fe696731ff9967afb99e729",
      "tree": "c63bac5122a1e2d873be2d3a2b21c11adc709df1",
      "parents": [
        "886bb7e9c3ed0bb3e4a2b1f336d8c6a6e5a4b782"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: remove v0 SWAP-SPACE message\n\nThe kernel has not supported v0 SWAP-SPACE since 2.5.22: I think we can\nnow safely drop its \"version 0 swap is no longer supported\" message - just\nsay \"Unable to find swap-space signature\" as usual.  This removes one\nlevel of indentation from a stretch of sys_swapon().\n\nI\u0027d have liked to be specific, saying \"Unable to find SWAPSPACE2\nsignature\", but it\u0027s just too confusing that the version 1 signature shows\nthe number 2.\n\nIrrelevant nearby cleanup: kmap(page) already gives page_address(page).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "886bb7e9c3ed0bb3e4a2b1f336d8c6a6e5a4b782",
      "tree": "1d34d8dff1186d88c84ae9a7efd698beda14cd17",
      "parents": [
        "22c6f8fdb31993cf49bdd4a47b64a7002391e1c7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: remove surplus whitespace\n\nRemove trailing whitespace from swapfile.c, and odd swap_show() alignment.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "22c6f8fdb31993cf49bdd4a47b64a7002391e1c7",
      "tree": "4721575904bc220bed559efb95f04f32a1febbfe",
      "parents": [
        "73fd8748ab0b9b3ddd178bea1d7ae03372033d96"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:48 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: remove SWP_ACTIVE mask\n\nRemove the SWP_ACTIVE mask: it just obscures the SWP_WRITEOK flag.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "73fd8748ab0b9b3ddd178bea1d7ae03372033d96",
      "tree": "6c0173c84ff6ace213578a9a8b03fd73e23ec8ad",
      "parents": [
        "69beeb1d3428424fbc7546f85e5cd7ac4119c09d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:47 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "swapfile: swapon needs larger size type\n\nsys_swapon()\u0027s swapfilesize (better renamed swapfilepages) is declared as\nan int, but should be an unsigned long like the maxpages it\u0027s compared\nagainst: on 64-bit (with 4kB pages) a swapfile of 2^44 bytes was rejected\nwith \"Swap area shorter than signature indicates\".\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.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": "b962716b459505a8d83aea313fea0abe76749f42",
      "tree": "b401e882f2ee8ff5a11209057496e603c211e8fe",
      "parents": [
        "60371d971a3d01afd102f0bbf2681f32ecc31d78"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:41 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: optimize get_scan_ratio for no swap\n\nRik suggests a simplified get_scan_ratio() for !CONFIG_SWAP.  Yes, the gcc\noptimizer gives us that, when nr_swap_pages is #defined as 0L.  Move usual\ndeclaration to swapfile.c: it never belonged in page_alloc.c.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Robin Holt \u003cholt@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": "68bdc8d64742ccc5e340c5d122ebbab3f0cf2a74",
      "tree": "1187bba5722e99f00dbba555f17026c63b0b88f9",
      "parents": [
        "a2c43eed8334e878702fca713b212ae2a11d84b9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:37 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: try_to_unuse check removing right swap\n\nThere\u0027s a possible race in try_to_unuse() which Nick Piggin led me to two\nyears ago.  Where it does lock_page() after read_swap_cache_async(), what\nif another task removed that page from swapcache just before we locked it?\n\nIt would sail though the (*swap_map \u003e 1) tests doing nothing (because it\ncould not have been removed from swapcache before its swap references were\ngone), until it reaches the delete_from_swap_cache(page) near the bottom.\n\nNow imagine that this page has been allocated to swap on a different swap\narea while we dropped page lock (perhaps at the top, perhaps in unuse_mm):\nwe could wrongly remove from swap cache before the page has been written\nto swap, so a subsequent do_swap_page() would read in stale data from\nswap.\n\nI think this case could not happen before: remove_exclusive_swap_page()\nrefused while page count was raised.  But now with reuse_swap_page() and\ntry_to_free_swap() removing from swap cache without minding page count, I\nthink it could happen - the previous patch argued that it was safe because\ntry_to_unuse() already ignored page count, but overlooked that it might be\nbreaking the assumptions in try_to_unuse() itself.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Robin Holt \u003cholt@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": "a2c43eed8334e878702fca713b212ae2a11d84b9",
      "tree": "4eb3f9b9153df5e7a638b15a6f7c9aa924066a94",
      "parents": [
        "7b1fe59793e61f826bef053107b57b23954833bb"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:36 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: try_to_free_swap replaces remove_exclusive_swap_page\n\nremove_exclusive_swap_page(): its problem is in living up to its name.\n\nIt doesn\u0027t matter if someone else has a reference to the page (raised\npage_count); it doesn\u0027t matter if the page is mapped into userspace\n(raised page_mapcount - though that hints it may be worth keeping the\nswap): all that matters is that there be no more references to the swap\n(and no writeback in progress).\n\nswapoff (try_to_unuse) has been removing pages from swapcache for years,\nwith no concern for page count or page mapcount, and we used to have a\ncomment in lookup_swap_cache() recognizing that: if you go for a page of\nswapcache, you\u0027ll get the right page, but it could have been removed from\nswapcache by the time you get page lock.\n\nSo, give up asking for exclusivity: get rid of\nremove_exclusive_swap_page(), and remove_exclusive_swap_page_ref() and\nremove_exclusive_swap_page_count() which were spawned for the recent LRU\nwork: replace them by the simpler try_to_free_swap() which just checks\npage_swapcount().\n\nSimilarly, remove the page_count limitation from free_swap_and_count(),\nbut assume that it\u0027s worth holding on to the swap if page is mapped and\nswap nowhere near full.  Add a vm_swap_full() test in free_swap_cache()?\nIt would be consistent, but I think we probably have enough for now.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Robin Holt \u003cholt@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": "7b1fe59793e61f826bef053107b57b23954833bb",
      "tree": "0ac769c48123c5d0770b0a0f88bad9e6318b83ed",
      "parents": [
        "ab967d86015a19777955370deebc8262d50fed63"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:34 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: reuse_swap_page replaces can_share_swap_page\n\nA good place to free up old swap is where do_wp_page(), or do_swap_page(),\nis about to redirty the page: the data on disk is then stale and won\u0027t be\nread again; and if we do decide to write the page out later, using the\nprevious swap location makes an unnecessary disk seek very likely.\n\nSo give can_share_swap_page() the side-effect of delete_from_swap_cache()\nwhen it safely can.  And can_share_swap_page() was always a misleading\nname, the more so if it has a side-effect: rename it reuse_swap_page().\n\nIrrelevant cleanup nearby: remove swap_token_default_timeout definition\nfrom swap.h: it\u0027s used nowhere.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nCc: Robin Holt \u003cholt@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": "51726b1222863852c46ca21ed0115b85d1edfd89",
      "tree": "fb9d4de47a1ee860003bc4aa7c46651a77ae7b83",
      "parents": [
        "6d91add09f4bad5f4d4233b13faa392f0c4b16be"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: replace some BUG_ONs by VM_BUG_ONs\n\nThe swap code is over-provisioned with BUG_ONs on assorted page flags,\nmostly dating back to 2.3.  They\u0027re good documentation, and guard against\ndeveloper error, but a waste of space on most systems: change them to\nVM_BUG_ONs, conditional on CONFIG_DEBUG_VM.  Just delete the PagePrivate\nones: they\u0027re later, from 2.5.69, but even less interesting now.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReviewed-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1796316a8b028a148be48ba5d4e7be493a39d173",
      "tree": "628848bb98909632bbb503b1db27c2a6db9291e6",
      "parents": [
        "9470565579f29486f4ed0ffa50774268b64994b0"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "jbeulich@novell.com",
        "time": "Tue Dec 16 11:35:24 2008 +0000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 16 18:34:51 2008 +0100"
      },
      "message": "x86: consolidate __swp_XXX() macros\n\nImpact: cleanup, code robustization\n\nThe __swp_...() macros silently relied upon which bits are used for\n_PAGE_FILE and _PAGE_PROTNONE. After having changed _PAGE_PROTNONE in\nour Xen kernel to no longer overlap _PAGE_PAT, live locks and crashes\nwere reported that could have been avoided if these macros properly\nused the symbolic constants. Since, as pointed out earlier, for Xen\nDom0 support mainline likewise will need to eliminate the conflict\nbetween _PAGE_PAT and _PAGE_PROTNONE, this patch does all the necessary\nadjustments, plus it introduces a mechanism to check consistency\nbetween MAX_SWAPFILES_SHIFT and the actual encoding macros.\n\nThis also fixes a latent bug in that x86-64 used a 6-bit mask in\n__swp_type(), and if MAX_SWAPFILES_SHIFT was increased beyond 5 in (the\nseemingly unrelated) linux/swap.h, this would have resulted in a\ncollision with _PAGE_FILE.\n\nNon-PAE 32-bit code gets similarly adjusted for its pte_to_pgoff() and\npgoff_to_pte() calculations.\n\nSigned-off-by: Jan Beulich \u003cjbeulich@novell.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8413ac9d8c9a1366a4f57880723126cd24e5a5c3",
      "tree": "fcee6ff670dcfccf895a48e92d27f52902d34301",
      "parents": [
        "a978d6f521063514812a7094dbe5036e056e4de3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Oct 18 20:26:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:52:32 2008 -0700"
      },
      "message": "mm: page lock use lock bitops\n\ntrylock_page, unlock_page open and close a critical section. Hence,\nwe can use the lock bitops to get the desired memory ordering.\n\nAlso, mark trylock as likely to succeed (and remove the annotation from\ncallers).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "68a22394c286a2daf06ee8d65d8835f738faefa5",
      "tree": "1fb91d5bf57a1f6d1cabaac0a6f5d86060ebecb5",
      "parents": [
        "f04e9ebbe4909f9a41efd55149bc353299f4e83b"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Sat Oct 18 20:26:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 20 08:50:25 2008 -0700"
      },
      "message": "vmscan: free swap space on swap-in/activation\n\nIf vm_swap_full() (swap space more than 50% full), the system will free\nswap space at swapin time.  With this patch, the system will also free the\nswap space in the pageout code, when we decide that the page is not a\ncandidate for swapout (and just wasting swap space).\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: MinChan Kim \u003cminchan.kim@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "529ae9aaa08378cfe2a4350bded76f32cc8ff0ce",
      "tree": "d3ae998f9876c72a83a022805103a92111852b21",
      "parents": [
        "e9ba9698187ddbc0c5bfcf41de0349a662d23d02"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sat Aug 02 12:01:03 2008 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Aug 04 21:31:34 2008 -0700"
      },
      "message": "mm: rename page trylock\n\nConverting page lock to new locking bitops requires a change of page flag\noperation naming, so we might as well convert it to something nicer\n(!TestSetPageLocked_Lock \u003d\u003e trylock_page, SetPageLocked \u003d\u003e set_page_locked).\n\nThis also facilitates lockdeping of page lock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nAcked-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7d03431cf98aaed635524024273668bb8cedadda",
      "tree": "aae817e9bd8398fd3521514d0c7573db7b5823ae",
      "parents": [
        "ab33dc09a5c0d2bd6757afa1c2f804c9657daec0"
      ],
      "author": {
        "name": "Fernando Luis Vazquez Cao",
        "email": "fernando@oss.ntt.co.jp",
        "time": "Tue Jul 29 22:33:41 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 30 09:41:46 2008 -0700"
      },
      "message": "swapfile/vmscan: update comments related to vmscan functions\n\nSigned-off-by: Fernando Luis Vazquez Cao \u003cfernando@oss.ntt.co.jp\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7c363b8c6536f26934172d3c46f0bbec01a97c61",
      "tree": "46a9ce1b0ef9285ab2c7b04f0cf584294853a16f",
      "parents": [
        "15f59adae001766a2c7f7fe4f196387bb04bcff5"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Fri Jul 25 19:46:24 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:12 2008 -0700"
      },
      "message": "mm/swapfile.c: make code static\n\nThis patch makes the following needlessly global code static:\n - swap_lock\n - nr_swapfiles\n - struct swap_list\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19fd6231279be3c3bdd02ed99f9b0eb195978064",
      "tree": "ee09121054262d73c551b57114acd855b82a7a82",
      "parents": [
        "a60637c85893e7191faaafa6a72e197c24386727"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "mm: spinlock tree_lock\n\nmapping-\u003etree_lock has no read lockers.  convert the lock from an rwlock\nto a spinlock.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \"Paul E. McKenney\" \u003cpaulmck@us.ibm.com\u003e\nReviewed-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "78ecba081224a2db5876b6b81cfed0b78f58adc7",
      "tree": "db29cc9357ea95172f42e64e833a3a7d3fcfa8fb",
      "parents": [
        "83d1674a946141c3c59d430e96c224f7937e6158"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Wed Jul 23 21:28:23 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:21 2008 -0700"
      },
      "message": "mm: fix ever-decreasing swap priority\n\nVegard Nossum has noticed the ever-decreasing negative priority in a\nswapon /swapoff loop, which eventually would misprioritize when int wraps\npositive.  Not worth spending much code on, but probably better fixed.\n\nIt\u0027s easy to handle the swapping on and off of just one area, but there\u0027s\nnot much point if a pair or more still misbehave.  To handle the general\ncase, swapoff should compact negative priorities, keeping them always from\n-1 to -MAX_SWAPFILES.  That\u0027s a change, but should cause no regression,\nsince these negative (unspecified) priorities are disjoint from the the\npositive specified priorities 0 to 32767.\n\nOne small functional difference, which seems appropriate: when swapoff\nfails to free all swap from a negative priority area, that area is now\nreinserted at lowest priority, rather than at its original priority.\n\nIn moving down swapon\u0027s setting of priority, I notice that an area is\nvisible to /proc/swaps when it has swap_map set, yet that was being set\nbefore all the visible fields were properly filled in: corrected.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReported-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d71f86f4dfccd749e4421f10301f3f3b31da88a",
      "tree": "7a052e776b660a2fa1bbe3702fd061bc3d3e6a37",
      "parents": [
        "6a6375db13703b42dd51b28576d444bb73c541b9"
      ],
      "author": {
        "name": "Denis V. Lunev",
        "email": "den@openvz.org",
        "time": "Tue Apr 29 01:02:13 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 29 08:06:20 2008 -0700"
      },
      "message": "mm: use non-racy method for /proc/swaps creation\n\nUse proc_create() to make sure that -\u003eproc_fops be setup before gluing PDE to\nmain tree.\n\nSigned-off-by: Denis V. Lunev \u003cden@openvz.org\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "797df5749032c2286bc7ff3a52de41fde0cdf0a5",
      "tree": "38ebb9f0672c6eeab3269cc875f22422fa2c908b",
      "parents": [
        "19770b32609b6bf97a3dece2529089494cbfc549"
      ],
      "author": {
        "name": "Chris Dearman",
        "email": "chris@mips.com",
        "time": "Mon Apr 28 02:12:19 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 28 08:58:19 2008 -0700"
      },
      "message": "mm: try both endianess when checking for endianess\n\nWhen checking for the swap header try byteswapping the endianess dependent\nfields to allow the swap partition to be shared between big \u0026 little endian\nsystems.\n\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\nSigned-off-by: Ralf Baechle \u003cralf@linux-mips.org\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c32c2f63a9d6c953aaf168c0b2551da9734f76d2",
      "tree": "14eca3083f3de4a87a95359ab66109c10add1ae7",
      "parents": [
        "e83aece3afad4d56cc01abe069d3519e851cd2de"
      ],
      "author": {
        "name": "Jan Blunck",
        "email": "jblunck@suse.de",
        "time": "Thu Feb 14 19:38:43 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 14 21:17:08 2008 -0800"
      },
      "message": "d_path: Make seq_path() use a struct path argument\n\nseq_path() is always called with a dentry and a vfsmount from a struct path.\nMake seq_path() take it directly as an argument.\n\nSigned-off-by: Jan Blunck \u003cjblunck@suse.de\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Neil Brown \u003cneilb@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": "044d66c1d2b1c5aa50b4d6d68c21c6c93dd678da",
      "tree": "35442e01a5ef7e2d45abc20d45122c3c4c809d5d",
      "parents": [
        "3062fc67dad01b1d2a15d58c709eff946389eca4"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Feb 07 00:14:04 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "memcgroup: reinstate swapoff mod\n\nThis patch reinstates the \"swapoff: scan ptes preemptibly\" mod we started\nwith: in due course it should be rendered down into the earlier patches,\nleaving us with a more straightforward mem_cgroup_charge mod to unuse_pte,\nallocating with GFP_KERNEL while holding no spinlock and no atomic kmap.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@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": "e1a1cd590e3fcb0d2e230128daf2337ea55387dc",
      "tree": "eb660ab340c657a1eb595b2d4d8e8b62783bf6fb",
      "parents": [
        "bed7161a519a2faef53e1bce1b47595e297c1d14"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:14:02 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:19 2008 -0800"
      },
      "message": "Memory controller: make charging gfp mask aware\n\nNick Piggin pointed out that swap cache and page cache addition routines\ncould be called from non GFP_KERNEL contexts.  This patch makes the\ncharging routine aware of the gfp context.  Charging might fail if the\ncgroup is over it\u0027s limit, in which case a suitable error is returned.\n\nThis patch was tested on a Powerpc box.  I am still looking at being able\nto test the path, through which allocations happen in non GFP_KERNEL\ncontexts.\n\n[kamezawa.hiroyu@jp.fujitsu.com: problem with ZONE_MOVABLE]\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8a9f3ccd24741b50200c3f33d62534c7271f3dfc",
      "tree": "066aabd8d2952299501f067a91cbfd6f47ee62f6",
      "parents": [
        "78fb74669e80883323391090e4d26d17fe29488f"
      ],
      "author": {
        "name": "Balbir Singh",
        "email": "balbir@linux.vnet.ibm.com",
        "time": "Thu Feb 07 00:13:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "Memory controller: memory accounting\n\nAdd the accounting hooks.  The accounting is carried out for RSS and Page\nCache (unmapped) pages.  There is now a common limit and accounting for both.\nThe RSS accounting is accounted at page_add_*_rmap() and page_remove_rmap()\ntime.  Page cache is accounted at add_to_page_cache(),\n__delete_from_page_cache().  Swap cache is also accounted for.\n\nEach page\u0027s page_cgroup is protected with the last bit of the\npage_cgroup pointer, this makes handling of race conditions involving\nsimultaneous mappings of a page easier.  A reference count is kept in the\npage_cgroup to deal with cases where a page might be unmapped from the RSS\nof all tasks, but still lives in the page cache.\n\nCredits go to Vaidyanathan Srinivasan for helping with reference counting work\nof the page cgroup.  Almost all of the page cache accounting code has help\nfrom Vaidyanathan Srinivasan.\n\n[hugh@veritas.com: fix swapoff breakage]\n[akpm@linux-foundation.org: fix locking]\nSigned-off-by: Vaidyanathan Srinivasan \u003csvaidy@linux.vnet.ibm.com\u003e\nSigned-off-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nCc: Pavel Emelianov \u003cxemul@openvz.org\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Kirill Korotaev \u003cdev@sw.ru\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: \u003cValdis.Kletnieks@vt.edu\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": "59bd26582de660d4c9c26125747f1b4a5eb40d1e",
      "tree": "2b7606b3f18a87cdee5022381ba52f94efdb5d42",
      "parents": [
        "1b6df3aa457690100f9827548943101447766572"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Thu Feb 07 00:13:48 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Feb 07 08:42:18 2008 -0800"
      },
      "message": "memcgroup: temporarily revert swapoff mod\n\nThis patch precisely reverts the \"swapoff: scan ptes preemptibly\" patch\njust presented.  It\u0027s a temporary measure to allow existing memory\ncontroller patches to apply without rejects: in due course they should be\nrendered down into one sensible patch, and this reversion disappear.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: 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": "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": "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": "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": "b0cb1a19d05b8ea8611a9ef48a17fe417f1832e6",
      "tree": "895fe53e8dc4fc59d05b963ac079f6ff759ad0fb",
      "parents": [
        "6c8dca5d53f95009d4fff00195bf38f277dc4366"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Jul 29 23:24:36 2007 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Jul 29 16:45:38 2007 -0700"
      },
      "message": "Replace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBERNATION\n\nReplace CONFIG_SOFTWARE_SUSPEND with CONFIG_HIBERNATION to avoid\nconfusion (among other things, with CONFIG_SUSPEND introduced in the\nnext patch).\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2706a1b89b1a3e7434a668d4a9d15f616da96685",
      "tree": "6b8d8b8d24811c7f8b4593e0b600533f9d5329f6",
      "parents": [
        "553948491c18413928b85a9025b92af80e7d61d6"
      ],
      "author": {
        "name": "Anderson Briglia",
        "email": "briglia.anderson@gmail.com",
        "time": "Sun Jul 15 23:38:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:35 2007 -0700"
      },
      "message": "vmscan: fix comments related to shrink_list()\n\nFix the shrink_list name on some files under mm/ directory.\n\nSigned-off-by: Anderson Briglia \u003canderson.briglia@indt.org.br\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6fe6900e1e5b6fa9e5c59aa5061f244fe3f467e2",
      "tree": "8bbfe5072279227cc50a941ad4813908082426a1",
      "parents": [
        "714b8171af9c930a59a0da8f6fe50518e70ab035"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Sun May 06 14:49:04 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon May 07 12:12:51 2007 -0700"
      },
      "message": "mm: make read_cache_page synchronous\n\nEnsure pages are uptodate after returning from read_cache_page, which allows\nus to cut out most of the filesystem-internal PageUptodate calls.\n\nI didn\u0027t have a great look down the call chains, but this appears to fixes 7\npossible use-before uptodate in hfs, 2 in hfsplus, 1 in jfs, a few in\necryptfs, 1 in jffs2, and a possible cleared data overwritten with readpage in\nblock2mtd.  All depending on whether the filler is async and/or can return\nwith a !uptodate page.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7bf236874292fd073c6bdd27f89c3d9e81a79cbc",
      "tree": "27e4196e4b720c113010d544567f76f181c11428",
      "parents": [
        "3223ea8cca5936b8e78450dd5b8ba88372e9c0a8"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jan 05 16:36:28 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Jan 05 23:55:22 2007 -0800"
      },
      "message": "[PATCH] swsusp: Do not fail if resume device is not set\n\nIn the kernels later than 2.6.19 there is a regression that makes swsusp\nfail if the resume device is not explicitly specified.\n\nIt can be fixed by adding an additional parameter to\nmm/swapfile.c:swap_type_of() allowing us to pass the (struct block_device\n*) corresponding to the first available swap back to the caller.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d3ac7f892b7d07d61d0895caa4f6e190e43112f8",
      "tree": "0ff35e7e5ab822b600075d79910d3cc136ba07ef",
      "parents": [
        "f3a43f3f64bff8e205c3702f6b4804d66e306848"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:44 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:43 2006 -0800"
      },
      "message": "[PATCH] mm: change uses of f_{dentry,vfsmnt} to use f_path\n\nChange all the uses of f_{dentry,vfsmnt} to f_path.{dentry,mnt} in linux/mm/.\n\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "15ad7cdcfd76450d4beebc789ec646664238184d",
      "tree": "279d05a76ae0906c23ee2de8c5684d95d9886ad3",
      "parents": [
        "4a08a9f68168e547c2baf100020e9b96cae5fbd1"
      ],
      "author": {
        "name": "Helge Deller",
        "email": "deller@gmx.de",
        "time": "Wed Dec 06 20:40:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:46 2006 -0800"
      },
      "message": "[PATCH] struct seq_operations and struct file_operations constification\n\n - move some file_operations structs into the .rodata section\n\n - move static strings from policy_types[] array into the .rodata section\n\n - fix generic seq_operations usages, so that those structs may be defined\n   as \"const\" as well\n\n[akpm@osdl.org: couple of fixes]\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3aef83e0ef1ffb8ea3bea97be46821a45c952173",
      "tree": "f73878eb2ecce804c9eea6fbb13603907b3674b4",
      "parents": [
        "3fc6b34f4803b959c1e30c15247e2180cd529115"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 06 20:34:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] swsusp: use block device offsets to identify swap locations\n\nMake swsusp use block device offsets instead of swap offsets to identify swap\nlocations and make it use the same code paths for writing as well as for\nreading data.\n\nThis allows us to use the same code for handling swap files and swap\npartitions and to simplify the code, eg.  by dropping rw_swap_page_sync().\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "915bae9ebe41e52d71ad8b06d50e4ab26189f964",
      "tree": "daf0c9a370d3a551c1bb5beea69a3a0cfecd9885",
      "parents": [
        "3592695c363c3f3119621bdcf5ed852d6b9d1a5c"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Wed Dec 06 20:34:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:27 2006 -0800"
      },
      "message": "[PATCH] swsusp: use partition device and offset to identify swap areas\n\nThe Linux kernel handles swap files almost in the same way as it handles swap\npartitions and there are only two differences between these two types of swap\nareas:\n\n(1) swap files need not be contiguous,\n\n(2) the header of a swap file is not in the first block of the partition\n    that holds it.  From the swsusp\u0027s point of view (1) is not a problem,\n    because it is already taken care of by the swap-handling code, but (2) has\n    to be taken into consideration.\n\nIn principle the location of a swap file\u0027s header may be determined with the\nhelp of appropriate filesystem driver.  Unfortunately, however, it requires\nthe filesystem holding the swap file to be mounted, and if this filesystem is\njournaled, it cannot be mounted during a resume from disk.  For this reason we\nneed some other means by which swap areas can be identified.\n\nFor example, to identify a swap area we can use the partition that holds the\narea and the offset from the beginning of this partition at which the swap\nheader is located.\n\nThe following patch allows swsusp to identify swap areas this way.  It changes\nswap_type_of() so that it takes an additional argument representing an offset\nof the swap header within the partition represented by its first argument.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5d1854e15ee979f8e27330f0d3ce5e2703afa1dc",
      "tree": "8aff9641966020284218f2cdd75fd3b7bfc2babc",
      "parents": [
        "4af2bfc1202041006a0f01d0591a975f6c573f09"
      ],
      "author": {
        "name": "Eric Sandeen",
        "email": "sandeen@redhat.com",
        "time": "Wed Dec 06 20:33:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:23 2006 -0800"
      },
      "message": "[PATCH] reject corrupt swapfiles earlier\n\nThe fsfuzzer found this; with a corrupt small swapfile that claims to have\nmany pages:\n\n  [root]# file swap.741.img\n  swap.741.img: Linux/i386 swap file (new style) 1 (4K pages) size 1040191487 pages\n  [root]# ls -l swap.741.img\n  -rw-r--r-- 1 root root 16777216 Nov 22 05:18 swap.741.img\n\nsys_swapon() will try to vmalloc all those pages, and -then- check to see if\nthe file is actually that large:\n\n                if (!(p-\u003eswap_map \u003d vmalloc(maxpages * sizeof(short)))) {\n  \u003csnip\u003e\n        if (swapfilesize \u0026\u0026 maxpages \u003e swapfilesize) {\n                printk(KERN_WARNING\n                       \"Swap area shorter than signature indicates\\n\");\n\nIt seems to me that it would make more sense to move this test up before\nthe vmalloc, with the other checks, to avoid the OOM-killer in this\nsituation...\n\nSigned-off-by: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "881e4aabe4c6b3fce93674b67c6adc646fe2683b",
      "tree": "f5e429c01ca20c8bb8bd300e33013f056516b131",
      "parents": [
        "b43a57bb4dae72e8f7232e7c821a8799eda30022"
      ],
      "author": {
        "name": "Suleiman Souhlal",
        "email": "ssouhlal@FreeBSD.org",
        "time": "Wed Dec 06 20:32:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:22 2006 -0800"
      },
      "message": "[PATCH] Always print out the header line in /proc/swaps\n\nIt would be possible for /proc/swaps to not always print out the header:\n\nswapon /dev/hdc2\nswapon /dev/hde2\nswapoff /dev/hdc2\n\nAt this point /proc/swaps would not have a header.\n\nSigned-off-by: Suleiman Souhlal \u003csuleiman@google.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3f9e7949f86dfe2bd9a1ad0604f78e7683c059de",
      "tree": "af710aa375e0f641ceec1bf7d4002ef33beeb571",
      "parents": [
        "2d1d43f6a43b703587e759145f69467e7c6553a7"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Fri Sep 29 02:01:26 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:23 2006 -0700"
      },
      "message": "[PATCH] valid_swaphandles() fix\n\nakpm draws my attention to the fact that sysctl(VM_PAGE_CLUSTER) might\nconceivably change page_cluster to 0 while valid_swaphandles() is in the\nmiddle of using it, leading to an embarrassingly long loop: take a local\nsnapshot of page_cluster and work with that.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b6b5bce3571e496504a89ee575d32101e0a98b93",
      "tree": "283d4da88216071813b25d82c6e49a5ab71948f9",
      "parents": [
        "c06aad854fdb9da38fcc22dccfe9d72919453e43"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Sun Aug 27 01:23:25 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Aug 27 11:01:28 2006 -0700"
      },
      "message": "[PATCH] swsusp: Fix swap_type_of\n\nThere is a bug in mm/swapfile.c#swap_type_of() that makes swsusp only be\nable to use the first active swap partition as the resume device.  Fix it.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Pavel Machek \u003cpavel@suse.cz\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "090d2b185d8680fc26a2eaf4245d4171dcf4baf1",
      "tree": "67e604e3cd1bad3cfd034bced19a0fbff6a80c30",
      "parents": [
        "c330dda908b5a46469a997eea90b66f2f9f02b34"
      ],
      "author": {
        "name": "Pekka Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Jun 23 02:05:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:02 2006 -0700"
      },
      "message": "[PATCH] read_mapping_page for address space\n\nAdd read_mapping_page() which is used for callers that pass\nmapping-\u003ea_ops-\u003ereadpage as the filler for read_cache_page.  This removes\nsome duplication from filesystem code.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "70af7c5c6492ef6ad137dbff6c4568c73edbcaf0",
      "tree": "4e8646ba72b14f2bdd94802d42684c00c1a7507c",
      "parents": [
        "9637a5efd4fbe36164c5ce7f6a0ee68b2bf22b7f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Fri Jun 23 02:03:44 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:51 2006 -0700"
      },
      "message": "[PATCH] swapoff: use atomic_inc_not_zero() on mm_users\n\nNow that we have atomic_inc_not_zero, it\u0027s more elegant for try_to_unuse to\nuse that on mm_users: doesn\u0027t actually matter at present, but safer to be\nsure that once mm_users has gone to 0, nothing raises it for an instant.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d75a0fcda2cfc71b50e16dc89e0c32c57d427e85",
      "tree": "cc9dda0a0e53e62c859bf7fcafe7b9c9f6de2352",
      "parents": [
        "0697212a411c1dae03c27845f2de2f3adb32c331"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:50 2006 -0700"
      },
      "message": "[PATCH] Swapless page migration: rip out swap based logic\n\nRip the page migration logic out.\n\nRemove all code that has to do with swapping during page migration.\n\nThis also guts the ability to migrate pages to swap.  No one used that so lets\nlet it go for good.\n\nPage migration should be a bit broken after this patch.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0697212a411c1dae03c27845f2de2f3adb32c331",
      "tree": "4bedcdb27522f4a42c422e0a8af155501f43a69c",
      "parents": [
        "8351a6e4785218a2b03c142be92926baff95ba5c"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:50 2006 -0700"
      },
      "message": "[PATCH] Swapless page migration: add R/W migration entries\n\nImplement read/write migration ptes\n\nWe take the upper two swapfiles for the two types of migration ptes and define\na series of macros in swapops.h.\n\nThe VM is modified to handle the migration entries.  migration entries can\nonly be encountered when the page they are pointing to is locked.  This limits\nthe number of places one has to fix.  We also check in copy_pte_range and in\nmprotect_pte_range() for migration ptes.\n\nWe check for migration ptes in do_swap_cache and call a function that will\nthen wait on the page lock.  This allows us to effectively stop all accesses\nto apge.\n\nMigration entries are created by try_to_unmap if called for migration and\nremoved by local functions in migrate.c\n\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\n\n  Several times while testing swapless page migration (I\u0027ve no NUMA, just\n  hacking it up to migrate recklessly while running load), I\u0027ve hit the\n  BUG_ON(!PageLocked(p)) in migration_entry_to_page.\n\n  This comes from an orphaned migration entry, unrelated to the current\n  correctly locked migration, but hit by remove_anon_migration_ptes as it\n  checks an address in each vma of the anon_vma list.\n\n  Such an orphan may be left behind if an earlier migration raced with fork:\n  copy_one_pte can duplicate a migration entry from parent to child, after\n  remove_anon_migration_ptes has checked the child vma, but before it has\n  removed it from the parent vma.  (If the process were later to fault on this\n  orphaned entry, it would hit the same BUG from migration_entry_wait.)\n\n  This could be fixed by locking anon_vma in copy_one_pte, but we\u0027d rather\n  not.  There\u0027s no such problem with file pages, because vma_prio_tree_add\n  adds child vma after parent vma, and the page table locking at each end is\n  enough to serialize.  Follow that example with anon_vma: add new vmas to the\n  tail instead of the head.\n\n  (There\u0027s no corresponding problem when inserting migration entries,\n  because a missed pte will leave the page count and mapcount high, which is\n  allowed for.  And there\u0027s no corresponding problem when migrating via swap,\n  because a leftover swap entry will be correctly faulted.  But the swapless\n  method has no refcounting of its entries.)\n\nFrom: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n  pte_unmap_unlock() takes the pte pointer as an argument.\n\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\n\n  Several times while testing swapless page migration, gcc has tried to exec\n  a pointer instead of a string: smells like COW mappings are not being\n  properly write-protected on fork.\n\n  The protection in copy_one_pte looks very convincing, until at last you\n  realize that the second arg to make_migration_entry is a boolean \"write\",\n  and SWP_MIGRATION_READ is 30.\n\n  Anyway, it\u0027s better done like in change_pte_range, using\n  is_write_migration_entry and make_migration_entry_read.\n\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\n\n  Remove unnecessary obfuscation from sys_swapon\u0027s range check on swap type,\n  which blew up causing memory corruption once swapless migration made\n  MAX_SWAPFILES no longer 2 ^ MAX_SWAPFILES_SHIFT.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@engr.sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nFrom: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3c5a87f476bed45616e7e543dcaea4440c77bf93",
      "tree": "0ff4c86ef594f7bfad9937095b69aab5e70b4174",
      "parents": [
        "4776874ff096cd410382c0eca5d75f69c9dfa58f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Fri Jun 23 02:03:08 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:42:46 2006 -0700"
      },
      "message": "[PATCH] migration: remove unnecessary PageSwapCache checks\n\nRemove two unnecessary PageSwapCache checks.  The page refcount is raised\nand therefore page migration cannot occur in both functions.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "93fac7041f082297b93655a0e49f659cd7520e40",
      "tree": "2d8f295087377d4ac0ceea49dd67bb682b04c749",
      "parents": [
        "9bf9e89c3d147ca8cf9622d2d053684fba77a464"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Mar 31 02:29:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Mar 31 12:18:49 2006 -0800"
      },
      "message": "[PATCH] mm: schedule find_trylock_page() removal\n\nfind_trylock_page() is an odd interface in that it doesn\u0027t take a reference\nlike the others.  Now that XFS no longer uses it, and its last remaining\ncaller actually wants an elevated refcount, opencode that callsite and\nschedule find_trylock_page() for removal.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6e1819d615f24ce0726a7d0bd3dd0152d7b21654",
      "tree": "abc68747446e8241a1a7103882b9f6b6e24fa274",
      "parents": [
        "543cc27d09643640cbc34189c03a40beb8227aef"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Mar 23 03:00:03 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:07 2006 -0800"
      },
      "message": "[PATCH] swsusp: userland interface\n\nThis patch introduces a user space interface for swsusp.\n\nThe interface is based on a special character device, called the snapshot\ndevice, that allows user space processes to perform suspend and resume-related\noperations with the help of some ioctls and the read()/write() functions.\n Additionally it allows these processes to allocate free swap pages from a\nselected swap partition, called the resume partition, so that they know which\nsectors of the resume partition are available to them.\n\nThe interface uses the same low-level system memory snapshot-handling\nfunctions that are used by the built-it swap-writing/reading code of swsusp.\n\nThe interface documentation is included in the patch.\n\nThe patch assumes that the major and minor numbers of the snapshot device will\nbe 10 (ie.  misc device) and 231, the registration of which has already been\nrequested.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f577eb30afdc68233f25d4d82b04102129262365",
      "tree": "25d3c2fa8dfbf42fd0d4776a36166736fcc1446a",
      "parents": [
        "2b322ce210aec74ae0d02938d3a01e29fe079469"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Thu Mar 23 02:59:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Mar 23 07:38:07 2006 -0800"
      },
      "message": "[PATCH] swsusp: low level interface\n\nIntroduce the low level interface that can be used for handling the\nsnapshot of the system memory by the in-kernel swap-writing/reading code of\nswsusp and the userland interface code (to be introduced shortly).\n\nAlso change the way in which swsusp records the allocated swap pages and,\nconsequently, simplifies the in-kernel swap-writing/reading code (this is\nnecessary for the userland interface too).  To this end, it introduces two\nhelper functions in mm/swapfile.c, so that the swsusp code does not refer\ndirectly to the swap internals.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9b65ef59d42a56fa1358958ede77aaa5bac385a8",
      "tree": "c6f83951e399cf52784f6d200c9588e4c41d6461",
      "parents": [
        "879336c3930ae9273ea1c45214cb8adae0ce494a"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "mita@miraclelinux.com",
        "time": "Wed Mar 22 00:09:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Mar 22 07:54:06 2006 -0800"
      },
      "message": "[PATCH] fix swap cluster offset\n\nWhen we\u0027ve allocated SWAPFILE_CLUSTER pages, -\u003ecluster_next should be the\nfirst index of swap cluster.  But current code probably sets it wrong offset.\n\nSigned-off-by: Akinobu Mita \u003cmita@miraclelinux.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a3351e525e4768c29aa5d22ef59b5b38e0361e53",
      "tree": "457ab54f402b471c5158e8b361d059e88ab8cd62",
      "parents": [
        "a48d07afdf18212de22b959715b16793c5a6e57a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Feb 01 03:05:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:16 2006 -0800"
      },
      "message": "[PATCH] Direct Migration V9: remove_from_swap() to remove swap ptes\n\nAdd remove_from_swap\n\nremove_from_swap() allows the restoration of the pte entries that existed\nbefore page migration occurred for anonymous pages by walking the reverse\nmaps.  This reduces swap use and establishes regular pte\u0027s without the need\nfor page faults.\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b16664e44c54525be89dc07ad15a13b4eeec5634",
      "tree": "1844d193009c1e55e3c26256feb14bc622ec9af3",
      "parents": [
        "2a16e3f4b0c408b9e50297d2ec27e295d490267a"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Feb 01 03:05:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:16 2006 -0800"
      },
      "message": "[PATCH] Direct Migration V9: PageSwapCache checks\n\nCheck for PageSwapCache after looking up and locking a swap page.\n\nThe page migration code may change a swap pte to point to a different page\nunder lock_page().\n\nIf that happens then the vm must retry the lookup operation in the swap space\nto find the correct page number.  There are a couple of locations in the VM\nwhere a lock_page() is done on a swap page.  In these locations we need to\ncheck afterwards if the page was migrated.  If the page was migrated then the\nold page that was looked up before was freed and no longer has the\nPageSwapCache bit set.\n\nSigned-off-by: Hirokazu Takahashi \u003ctaka@valinux.co.jp\u003e\nSigned-off-by: Dave Hansen \u003chaveblue@us.ibm.com\u003e\nSigned-off-by: Christoph Lameter \u003cclameter@@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fc0abb1451c64c79ac80665d5ba74450ce274e4d",
      "tree": "30301b6134b122a638104645bd6bd4b45014dd2c",
      "parents": [
        "1743660b911bfb849b1fb33830522254561b9f9b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 18 17:42:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:18 2006 -0800"
      },
      "message": "[PATCH] sem2mutex: mm/slab.c\n\nConvert mm/swapfile.c\u0027s swapon_sem to swapon_mutex.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c59ede7b78db329949d9cdcd7064e22d357560ef",
      "tree": "f9dc9d464fdad5bfd464d983e77c1af031389dda",
      "parents": [
        "e16885c5ad624a6efe1b1bf764e075d75f65a788"
      ],
      "author": {
        "name": "Randy.Dunlap",
        "email": "rdunlap@xenotime.net",
        "time": "Wed Jan 11 12:17:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 11 18:42:13 2006 -0800"
      },
      "message": "[PATCH] move capable() to capability.h\n\n- Move capable() from sched.h to capability.h;\n\n- Use \u003clinux/capability.h\u003e where capable() is used\n\t(in include/, block/, ipc/, kernel/, a few drivers/,\n\tmm/, security/, \u0026 sound/;\n\tmany more drivers/ to go)\n\nSigned-off-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e97a31117c0f96be6637f68b4029609bb1f2cc7c",
      "tree": "6754f5be8904bf1e034c7c24fe992304a017c75a",
      "parents": [
        "ffd59daceb7db5f7c54f095c5529cec45222c1f1"
      ],
      "author": {
        "name": "Jesper Juhl",
        "email": "juhl-lkml@dif.dk",
        "time": "Wed Jan 11 01:50:28 2006 +0100"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@r063144.stusta.swh.mhn.de",
        "time": "Wed Jan 11 01:50:28 2006 +0100"
      },
      "message": "add missing printk loglevel in mm/swapfile.c\n\nin mm/swapfile.c a printk() is missing a loglevel. I believe the proper\nloglevel for this situation is KERN_ERR, so that\u0027s what the patch below\nsets -if you agree, please apply.\n\nSigned-off-by: Jesper Juhl \u003cjuhl-lkml@dif.dk\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd105df4590c89837a1c300843238148cfef9b5f",
      "tree": "bea54d8f24ad97d4af5fda6baac5711fa524af0e",
      "parents": [
        "152194aaa6266d71dfee57882a23def339ef17a4"
      ],
      "author": {
        "name": "Tobias Klauser",
        "email": "tklauser@nuerscht.ch",
        "time": "Sun Jan 08 01:00:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:43 2006 -0800"
      },
      "message": "[PATCH] mm: clean up local variables\n\nClean up a local variable with the same name as a variable in a larger\nblock.  Also move a variable into the block where it\u0027s actually used.\n\nSpotted by http://linuxicc.sourceforge.net/\n\nSigned-off-by: Tobias Klauser \u003ctklauser@nuerscht.ch\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3a291a20bd6fcfafb2109031f0760a0d3e92ecd7",
      "tree": "6c034471da9b2aac77b9810af640bb7a515cb299",
      "parents": [
        "ca0aec0f7a94bf9f07fefa8bfd23282d4e8ceb8a"
      ],
      "author": {
        "name": "Rafael J. Wysocki",
        "email": "rjw@sisk.pl",
        "time": "Fri Jan 06 00:16:37 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:43 2006 -0800"
      },
      "message": "[PATCH] mm: add a new function (needed for swap suspend)\n\nThis adds the function get_swap_page_of_type() allowing us to specify an index\nin swap_info[] and select a swap_info_struct structure to be used for\nallocating a swap page.\n\nThis function (or another one of similar functionality) will be necessary for\nimplementing the image-writing part of swsusp in the user space.   It can also\nbe used for simplifying the current in-kernel implementation of the\nimage-writing part of swsusp.\n\nSigned-off-by: Rafael J. Wysocki \u003crjw@sisk.pl\u003e\nAcked-by: Pavel Machek \u003cpavel@ucw.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e2de225710b0f7480c29700bf93326b078657db8",
      "tree": "d2c0ea62f9a5c0c8f262633af2d2e5a7745e651b",
      "parents": [
        "1b09d16489f831bfc23d1c7311ee331b0680e90e"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Mon Nov 07 01:01:41 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 07 07:54:07 2005 -0800"
      },
      "message": "[PATCH] mm/swapfile.c: unexport total_swap_pages\n\nI didn\u0027t find any possible modular usage in the kernel.\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4c21e2f2441dc5fbb957b030333f5a3f2d02dea7",
      "tree": "1f76d33bb1d76221c6424bc5fed080a4f91349a6",
      "parents": [
        "b38c6845b695141259019e2b7c0fe6c32a6e720d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:40 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:42 2005 -0700"
      },
      "message": "[PATCH] mm: split page table lock\n\nChristoph Lameter demonstrated very poor scalability on the SGI 512-way, with\na many-threaded application which concurrently initializes different parts of\na large anonymous area.\n\nThis patch corrects that, by using a separate spinlock per page table page, to\nguard the page table entries in that page, instead of using the mm\u0027s single\npage_table_lock.  (But even then, page_table_lock is still used to guard page\ntable allocation, and anon_vma allocation.)\n\nIn this implementation, the spinlock is tucked inside the struct page of the\npage table page: with a BUILD_BUG_ON in case it overflows - which it would in\nthe case of 32-bit PA-RISC with spinlock debugging enabled.\n\nSplitting the lock is not quite for free: another cacheline access.  Ideally,\nI suppose we would use split ptlock only for multi-threaded processes on\nmulti-cpu machines; but deciding that dynamically would have its own costs.\nSo for now enable it by config, at some number of cpus - since the Kconfig\nlanguage doesn\u0027t support inequalities, let preprocessor compare that with\nNR_CPUS.  But I don\u0027t think it\u0027s worth being user-configurable: for good\ntesting of both split and unsplit configs, split now at 4 cpus, and perhaps\nchange that to 8 later.\n\nThere is a benefit even for singly threaded processes: kswapd can be attacking\none part of the mm while another part is busy faulting.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "705e87c0c3c38424f7f30556c85bc20e808d2f59",
      "tree": "7a237e6266f4801385e1226cc497b47e3a2458bd",
      "parents": [
        "8f4e2101fd7df9031a754eedb82e2060b51f8c45"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:40 2005 -0700"
      },
      "message": "[PATCH] mm: pte_offset_map_lock loops\n\nConvert those common loops using page_table_lock on the outside and\npte_offset_map within to use just pte_offset_map_lock within instead.\n\nThese all hold mmap_sem (some exclusively, some not), so at no level can a\npage table be whipped away from beneath them.  But whereas pte_alloc loops\ntested with the \"atomic\" pmd_present, these loops are testing with pmd_none,\nwhich on i386 PAE tests both lower and upper halves.\n\nThat\u0027s now unsafe, so add a cast into pmd_none to test only the vital lower\nhalf: we lose a little sensitivity to a corrupt middle directory, but not\nenough to worry about.  It appears that i386 and UML were the only\narchitectures vulnerable in this way, and pgd and pud no problem.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4294621f41a85497019fae64341aa5351a1921b7",
      "tree": "fdeb7eb44384a99d0679ffa6de5019bab0ea2166",
      "parents": [
        "404351e67a9facb475abf1492245374a28d13e90"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:16:05 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:38 2005 -0700"
      },
      "message": "[PATCH] mm: rss \u003d file_rss + anon_rss\n\nI was lazy when we added anon_rss, and chose to change as few places as\npossible.  So currently each anonymous page has to be counted twice, in rss\nand in anon_rss.  Which won\u0027t be so good if those are atomic counts in some\nconfigurations.\n\nChange that around: keep file_rss and anon_rss separately, and add them\ntogether (with get_mm_rss macro) when the total is needed - reading two\natomics is much cheaper than updating two atomics.  And update anon_rss\nupfront, typically in memory.c, not tucked away in page_add_anon_rmap.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "72866f6f277ec0ddd6df7a3b6ecdcf59a28de115",
      "tree": "a76bb7fb8e092250c4399c20f0c7c973b77cb0bb",
      "parents": [
        "6237bcd94851e9cf0ecd2520d744779df0f5a9a6"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Oct 29 18:15:55 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:36 2005 -0700"
      },
      "message": "[PATCH] mm: anon is already wrprotected\n\ndo_anonymous_page\u0027s pte_wrprotect causes some confusion: in such a case,\nvm_page_prot must already be forcing COW, so must omit write permission, and\nso the pte_wrprotect is redundant.  Replace it by a comment to that effect,\nand reword the comment on unuse_pte which also caused confusion.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f7b3a4359b25311fb5894c8809478a2df6bed480",
      "tree": "ef2e2a707f1b5d5095c9e2e1e6d760d77ad2b31b",
      "parents": [
        "8bdac5d1ed892da54b6b2069e50a47b3aa39460f"
      ],
      "author": {
        "name": "Rob Landley",
        "email": "rob@landley.net",
        "time": "Thu Sep 22 21:44:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Sep 22 22:17:37 2005 -0700"
      },
      "message": "[PATCH] Fix bd_claim() error code.\n\nProblem: In some circumstances, bd_claim() is returning the wrong error\ncode.\n\nIf we try to swapon an unused block device that isn\u0027t swap formatted, we\nget -EINVAL.  But if that same block device is already mounted, we instead\nget -EBUSY, even though it still isn\u0027t a valid swap device.\n\nThis issue came up on the busybox list trying to get the error message\nfrom \"swapon -a\" right.  If a swap device is already enabled, we get -EBUSY,\nand we shouldn\u0027t report this as an error.  But we can\u0027t distinguish the two\n-EBUSY conditions, which are very different errors.\n\nIn the code, bd_claim() returns either 0 or -EBUSY, but in this case busy\nmeans \"somebody other than sys_swapon has already claimed this\", and\n_that_ means this block device can\u0027t be a valid swap device.  So return\n-EINVAL there.\n\nSigned-off-by: Rob Landley \u003crob@landley.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "13e4b57f6a4e23ceb99794a650d777e74831f4a6",
      "tree": "a585fdc3a2374dbedcf0114fa3c38d2fb7920774",
      "parents": [
        "75bcc8c5e1de78616b04ef9f317a293a7c1c163c"
      ],
      "author": {
        "name": "Nishanth Aravamudan",
        "email": "nacc@us.ibm.com",
        "time": "Sat Sep 10 00:27:25 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Sep 10 10:06:37 2005 -0700"
      },
      "message": "[PATCH] mm: fix-up schedule_timeout() usage\n\nUse schedule_timeout_{,un}interruptible() instead of\nset_current_state()/schedule_timeout() to reduce kernel size.\n\nSigned-off-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5d337b9194b1ce3b6fd5f3cb2799455ed2f9a3d1",
      "tree": "91ed9ef6f4cb5f6a1832f2baaaabd53fcd83513e",
      "parents": [
        "048c27fd72816b44e096997d1c6901c3abbfd45b"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:41 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:42 2005 -0700"
      },
      "message": "[PATCH] swap: swap_lock replace list+device\n\nThe idea of a swap_device_lock per device, and a swap_list_lock over them all,\nis appealing; but in practice almost every holder of swap_device_lock must\nalready hold swap_list_lock, which defeats the purpose of the split.\n\nThe only exceptions have been swap_duplicate, valid_swaphandles and an\nuntrodden path in try_to_unuse (plus a few places added in this series).\nvalid_swaphandles doesn\u0027t show up high in profiles, but swap_duplicate does\ndemand attention.  However, with the hold time in get_swap_pages so much\nreduced, I\u0027ve not yet found a load and set of swap device priorities to show\neven swap_duplicate benefitting from the split.  Certainly the split is mere\noverhead in the common case of a single swap device.\n\nSo, replace swap_list_lock and swap_device_lock by spinlock_t swap_lock\n(generally we seem to prefer an _ in the name, and not hide in a macro).\n\nIf someone can show a regression in swap_duplicate, then probably we should\nadd a hashlock for the swap_map entries alone (shorts being anatomic), so as\nto help the case of the single swap device too.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "048c27fd72816b44e096997d1c6901c3abbfd45b",
      "tree": "159a00b71ce9db161a48e4fc07b212db455a2cf1",
      "parents": [
        "52b7efdbe5f5696fc80338560a3fc51e0b0a993c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:40 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:41 2005 -0700"
      },
      "message": "[PATCH] swap: scan_swap_map latency breaks\n\nThe get_swap_page/scan_swap_map latency can be so bad that even those without\npreemption configured deserve relief: periodically cond_resched.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "52b7efdbe5f5696fc80338560a3fc51e0b0a993c",
      "tree": "30162de9fc8fe3dddb6462f8ff82f1594067cadd",
      "parents": [
        "7dfad4183bf9cd92f977caa3c12cc74f0eefc0e6"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:39 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:41 2005 -0700"
      },
      "message": "[PATCH] swap: scan_swap_map drop swap_device_lock\n\nget_swap_page has often shown up on latency traces, doing lengthy scans while\nholding two spinlocks.  swap_list_lock is already dropped, now scan_swap_map\ndrop swap_device_lock before scanning the swap_map.\n\nWhile scanning for an empty cluster, don\u0027t worry that racing tasks may\nallocate what was free and free what was allocated; but when allocating an\nentry, check it\u0027s still free after retaking the lock.  Avoid dropping the lock\nin the expected common path.  No barriers beyond the locks, just let the\ncookie crumble; highest_bit limit is volatile, but benign.\n\nGuard against swapoff: must check SWP_WRITEOK before allocating, must raise\nSWP_SCANNING reference count while in scan_swap_map, swapoff wait for that to\nfall - just use schedule_timeout, we don\u0027t want to burden scan_swap_map\nitself, and it\u0027s very unlikely that anyone can really still be in\nscan_swap_map once swapoff gets this far.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7dfad4183bf9cd92f977caa3c12cc74f0eefc0e6",
      "tree": "e11306e1e82acba1832f07fdfb3296c34cf6e934",
      "parents": [
        "fb4f88dcabdc716c7c350e09cf4a38a419b007e1"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:38 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:41 2005 -0700"
      },
      "message": "[PATCH] swap: scan_swap_map restyled\n\nRewrite scan_swap_map to allocate in just the same way as before (taking the\nnext free entry SWAPFILE_CLUSTER-1 times, then restarting at the lowest wholly\nempty cluster, falling back to lowest entry if none), but with a view towards\ndropping the lock in the next patch.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fb4f88dcabdc716c7c350e09cf4a38a419b007e1",
      "tree": "1a7806e3ac8bd45eded544763324c13c9f95c0e6",
      "parents": [
        "89d09a2c80ea6baafb559b86d545fada05e14ab5"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:37 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:41 2005 -0700"
      },
      "message": "[PATCH] swap: get_swap_page drop swap_list_lock\n\nRewrite get_swap_page to allocate in just the same sequence as before, but\nwithout holding swap_list_lock across its scan_swap_map.  Decrement\nnr_swap_pages and update swap_list.next in advance, while still holding\nswap_list_lock.  Skip full devices by testing highest_bit.  Swapoff hold\nswap_device_lock as well as swap_list_lock to clear SWP_WRITEOK.  Reduces lock\ncontention when there are parallel swap devices of the same priority.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "89d09a2c80ea6baafb559b86d545fada05e14ab5",
      "tree": "90ff3c2a62c144b93c89b33d66583046f1a7efae",
      "parents": [
        "6eb396dc4a9781c5e7951143ab56ce5710687ab3"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:41 2005 -0700"
      },
      "message": "[PATCH] swap: freeing update swap_list.next\n\nThis makes negligible difference in practice: but swap_list.next should not be\nupdated to a higher prio in the general helper swap_info_get, but rather in\nswap_entry_free; and then only in the case when entry is actually freed.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6eb396dc4a9781c5e7951143ab56ce5710687ab3",
      "tree": "48b165c8934a0f3852344725fee060740dcdfa48",
      "parents": [
        "53092a7402f227151a681b0c92ec8598c5618b1a"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Sat Sep 03 15:54:35 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@evo.osdl.org",
        "time": "Mon Sep 05 00:05:41 2005 -0700"
      },
      "message": "[PATCH] swap: swap unsigned int consistency\n\nThe swap header\u0027s unsigned int last_page determines the range of swap pages,\nbut swap_info has been using int or unsigned long in some cases: use unsigned\nint throughout (except, in several places a local unsigned long is useful to\navoid overflows when adding).\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "53092a7402f227151a681b0c92ec8598c5618b1a"
}
