)]}'
{
  "log": [
    {
      "commit": "f99ebf0a86de13f77bc4ee349de96db9f2f67f2e",
      "tree": "1f286cd9cd4d69638b4b3cc5d2ed48a6e566ce98",
      "parents": [
        "91f47662dfaa5b459aebe13284c6c38db27350dc"
      ],
      "author": {
        "name": "Rakib Mullick",
        "email": "rakib.mullick@gmail.com",
        "time": "Tue Jan 06 14:40:38 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:10 2009 -0800"
      },
      "message": "init: properly placing noinline keyword\n\ncheckpatch warns about \u0027static void noinline\u0027.  It wants `static noinline\nvoid\u0027.\n\nBoth are permissible, but the kernel consistently uses `static inline\u0027 and\n`static noinline\u0027, and consistency is good.  Hence let\u0027s keep the\ncheckpatch warning and fix up this code site.\n\n[akpm@linux-foundation.org: rewrote changelog]\nSigned-off-by: Md.Rakib H. Mullick \u003crakib.mullick@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": "91f47662dfaa5b459aebe13284c6c38db27350dc",
      "tree": "f2ab72a8be3219b1233e9c63e87f235219df3053",
      "parents": [
        "73ce02e96fe34a983199a9855b2ae738f960a6ee"
      ],
      "author": {
        "name": "Cyrill Gorcunov",
        "email": "gorcunov@gmail.com",
        "time": "Tue Jan 06 14:40:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:10 2009 -0800"
      },
      "message": "mm: hugetlb: remove redundant `if\u0027 operation\n\nAt this point we already know that \u0027addr\u0027 is not NULL so get rid of\nredundant \u0027if\u0027.  Probably gcc eliminate it by optimization pass.\n\n[akpm@linux-foundation.org: use __weak, too]\nSigned-off-by: Cyrill Gorcunov \u003cgorcunov@openvz.org\u003e\nReviewed-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "73ce02e96fe34a983199a9855b2ae738f960a6ee",
      "tree": "06dbbc2c38d55f8eacab09c55a68c736156b9540",
      "parents": [
        "594fe1a044325bb0a1a49ca7d086e3df4f1df59a"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:40:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:10 2009 -0800"
      },
      "message": "mm: stop kswapd\u0027s infinite loop at high order allocation\n\nWassim Dagash reported following kswapd infinite loop problem.\n\n  kswapd runs in some infinite loop trying to swap until order 10 of zone\n  highmem is OK.... kswapd will continue to try to balance order 10 of zone\n  highmem forever (or until someone release a very large chunk of highmem).\n\nFor non order-0 allocations, the system may never be balanced due to\nfragmentation but kswapd should not infinitely loop as a result.\n\nInstead, recheck all watermarks at order-0 as they are the most important.\nIf watermarks are ok, kswapd will go back to sleep.\n\n[akpm@linux-foundation.org: fix comment]\nReported-by: wassim dagash \u003cwassim.dagash@gmail.com\u003e\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "594fe1a044325bb0a1a49ca7d086e3df4f1df59a",
      "tree": "db3ed12346af4357d154637baad4fb224fbde639",
      "parents": [
        "dcd4a049b9751828c516c59709f3fdf50436df85"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jan 06 14:40:32 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:10 2009 -0800"
      },
      "message": "bootmem: print request details before BUG_ON(them)\n\nMoving the request details print-out before the sanity checks that\nmight panic() enables us to analyse invalid requests without having\naccess to the line information of the stack dump.\n\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "dcd4a049b9751828c516c59709f3fdf50436df85",
      "tree": "126fe11368da94f0c2e11ed586a870fa1b02f0a6",
      "parents": [
        "084f71ae5ceeb16734d8ac47559d3c718456a865"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jan 06 14:40:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:10 2009 -0800"
      },
      "message": "mm: check for no mmaps in exit_mmap()\n\nWhen dup_mmap() ooms we can end up with mm-\u003emmap \u003d\u003d NULL.  The error\npath does mmput() and unmap_vmas() gets a NULL vma which it\ndereferences.\n\nIn exit_mmap() there is nothing to do at all for this case, we can\ncancel the callpath right there.\n\n[akpm@linux-foundation.org: add sorely-needed comment]\nSigned-off-by: Johannes Weiner \u003channes@cmpxchg.org\u003e\nReported-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "9f572e3f96b8a2ef70dcb881e64c7b9c10057d98",
      "tree": "26accc06afbe7149d2aed6930cc50c5e865d6d28",
      "parents": [
        "901608d9045146aec6f14a7777ea4b1501c379f0"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:40:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:10 2009 -0800"
      },
      "message": "mm: remove CONFIG_OUT_OF_LINE_PFN_TO_PAGE\n\nNo architectures use CONFIG_OUT_OF_LINE_PFN_TO_PAGE - it can be removed.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: KAMEZAWA Hiroyuki \u003ckamezawa.hiroyu@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "901608d9045146aec6f14a7777ea4b1501c379f0",
      "tree": "0155189f48479b920855dedccba6829363376d4d",
      "parents": [
        "67d58ac47d25f7e2a105248a4aea6113131ab874"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jan 06 14:40:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "mm: introduce get_mm_hiwater_xxx(), fix taskstats-\u003ehiwater_xxx accounting\n\nxacct_add_tsk() relies on do_exit()-\u003eupdate_hiwater_xxx() and uses\nmm-\u003ehiwater_xxx directly, this leads to 2 problems:\n\n- taskstats_user_cmd() can call fill_pid()-\u003exacct_add_tsk() at any\n  moment before the task exits, so we should check the current values of\n  rss/vm anyway.\n\n- do_exit()-\u003eupdate_hiwater_xxx() calls are racy.  An exiting thread can\n  be preempted right before mm-\u003ehiwater_xxx \u003d new_val, and another thread\n  can use A_LOT of memory and exit in between.  When the first thread\n  resumes it can be the last thread in the thread group, in that case we\n  report the wrong hiwater_xxx values which do not take A_LOT into\n  account.\n\nIntroduce get_mm_hiwater_rss() and get_mm_hiwater_vm() helpers and change\nxacct_add_tsk() to use them.  The first helper will also be used by\nrusage-\u003eru_maxrss accounting.\n\nKill do_exit()-\u003eupdate_hiwater_xxx() calls.  Unless we are going to\ndecrease rss/vm there is no point to update mm-\u003ehiwater_xxx, and nobody\ncan look at this mm_struct when exit_mmap() actually unmaps the memory.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Balbir Singh \u003cbalbir@linux.vnet.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "67d58ac47d25f7e2a105248a4aea6113131ab874",
      "tree": "5bf9440696b72ec0962d352c6d60b81929b79602",
      "parents": [
        "856bf4d717feb8c55d4e2f817b71ebb70cfbc67b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "mm: pagecache gfp flags fix\n\nFrustratingly, gfp_t is really divided into two classes of flags.  One are\nthe context dependent ones (can we sleep?  can we enter filesystem?  block\nsubsystem?  should we use some extra reserves, etc.).  The other ones are\nthe type of memory required and depend on how the algorithm is implemented\nrather than the point at which the memory is allocated (highmem?  dma\nmemory?  etc).\n\nSome of the functions which allocate a page and add it to page cache take\na gfp_t, but sometimes those functions or their callers aren\u0027t really\ndoing the right thing: when allocating pagecache page, the memory type\nshould be mapping_gfp_mask(mapping).  When allocating radix tree nodes,\nthe memory type should be kernel mapped (not highmem) memory.  The gfp_t\nargument should only really be needed for context dependent options.\n\nThis patch doesn\u0027t really solve that tangle in a nice way, but it does\nattempt to fix a couple of bugs.\n\n- find_or_create_page changes its radix-tree allocation to only include\n  the main context dependent flags in order so the pagecache page may be\n  allocated from arbitrary types of memory without affecting the\n  radix-tree.  In practice, slab allocations don\u0027t come from highmem\n  anyway, and radix-tree only uses slab allocations.  So there isn\u0027t a\n  practical change (unless some fs uses GFP_DMA for pages).\n\n- grab_cache_page_nowait() is changed to allocate radix-tree nodes with\n  GFP_NOFS, because it is not supposed to reenter the filesystem.  This\n  bug could cause lock recursion if a filesystem is not expecting the\n  function to reenter the fs (as-per documentation).\n\nFilesystems should be careful about exactly what semantics they want and\nwhat they get when fiddling with gfp_t masks to allocate pagecache.  One\nshould be as liberal as possible with the type of memory that can be used,\nand same for the the context specific flags.\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": "856bf4d717feb8c55d4e2f817b71ebb70cfbc67b",
      "tree": "f44790d9b8f42223955d1866645103ac5f9c68a3",
      "parents": [
        "38f21977663126fef53f5585e7f1653d8ebe55c4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "fs: sys_sync fix\n\ns_syncing livelock avoidance was breaking data integrity guarantee of\nsys_sync, by allowing sys_sync to skip writing or waiting for superblocks\nif there is a concurrent sys_sync happening.\n\nThis livelock avoidance is much less important now that we don\u0027t have the\nget_super_to_sync() call after every sb that we sync.  This was replaced\nby __put_super_and_need_restart.\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": "38f21977663126fef53f5585e7f1653d8ebe55c4",
      "tree": "be5ee7a264fea0d9f4b2d109b7e08b7a1ec794c9",
      "parents": [
        "4f5a99d64c17470a784a6c68064207d82e3e74a5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "fs: sync_sb_inodes fix\n\nFix data integrity semantics required by sys_sync, by iterating over all\ninodes and waiting for any writeback pages after the initial writeout.\nComments explain the exact problem.\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": "4f5a99d64c17470a784a6c68064207d82e3e74a5",
      "tree": "2a3e0f0c3990bb8dbda2cdaa506a64180e5cbff2",
      "parents": [
        "e8ea1759138d4279869f52bfb7dca8f02f8ccfe5"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:25 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "fs: remove WB_SYNC_HOLD\n\nRemove WB_SYNC_HOLD.  The primary motiviation is the design of my\nanti-starvation code for fsync.  It requires taking an inode lock over the\nsync operation, so we could run into lock ordering problems with multiple\ninodes.  It is possible to take a single global lock to solve the ordering\nproblem, but then that would prevent a future nice implementation of \"sync\nmultiple inodes\" based on lock order via inode address.\n\nSeems like a backward step to remove this, but actually it is busted\nanyway: we can\u0027t use the inode lists for data integrity wait: an inode can\nbe taken off the dirty lists but still be under writeback.  In order to\nsatisfy data integrity semantics, we should wait for it to finish\nwriteback, but if we only search the dirty lists, we\u0027ll miss it.\n\nIt would be possible to have a \"writeback\" list, for sys_sync, I suppose.\nBut why complicate things by prematurely optimise?  For unmounting, we\ncould avoid the \"livelock avoidance\" code, which would be easier, but\nagain premature IMO.\n\nFixing the existing data integrity problem will come next.\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": "e8ea1759138d4279869f52bfb7dca8f02f8ccfe5",
      "tree": "2e59ef400c9b79af6eeb80024c3923e21c915a8a",
      "parents": [
        "48b47c561e41525061b5bc0cfd67d6367fd11dc4"
      ],
      "author": {
        "name": "Artem Bityutskiy",
        "email": "Artem.Bityutskiy@nokia.com",
        "time": "Tue Jan 06 14:40:23 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "UBIFS: do not use WB_SYNC_HOLD\n\nWB_SYNC_HOLD is going to be zapped so we should not use it. Use\n%WB_SYNC_NONE instead. Here is what akpm said:\n\n\"I think I\u0027ll just switch that to WB_SYNC_NONE.  The `wait\u003d\u003d0\u0027 mode is\njust an advisory thing to help the fs shove lots of data into the\nqueues.  If some gets missed then it\u0027ll be picked up on the second\n-\u003esync_fs call, with wait\u003d\u003d1.\"\n\nThanks to Randy Dunlap for catching this.\n\nSigned-off-by: Artem Bityutskiy \u003cArtem.Bityutskiy@nokia.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "48b47c561e41525061b5bc0cfd67d6367fd11dc4",
      "tree": "ae99a8cb55b4d2716847521953db4bddd66b8e8b",
      "parents": [
        "48aae42556e5ea1ba0d8ddab25352706577af2ed"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:40:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:09 2009 -0800"
      },
      "message": "mm: direct IO starvation improvement\n\nDirect IO can invalidate and sync a lot of pagecache pages in the mapping.\n A 4K direct IO will actually try to sync and/or invalidate the pagecache\nof the entire file, for example (which might be many GB or TB large).\n\nImprove this by doing range syncs.  Also, memory no longer has to be\nunmapped to catch the dirty bits for syncing, as dirty bits would remain\ncoherent due to dirty mmap accounting.\n\nThis fixes the immediate DM deadlocks when doing direct IO reads to block\ndevice with a mounted filesystem, if only by papering over the problem\nsomewhat rather than addressing the fsync starvation cases.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nReviewed-by: Jeff Moyer \u003cjmoyer@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": "48aae42556e5ea1ba0d8ddab25352706577af2ed",
      "tree": "6a016f91627ce717f5f68f27f47a5771dc7058f8",
      "parents": [
        "853ac43ab194f5051b27a55060215d696dc9480d"
      ],
      "author": {
        "name": "ZhenwenXu",
        "email": "helight.xu@gmail.com",
        "time": "Tue Jan 06 14:40:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "mm/mmap.c: fix coding style\n\nFix a little of the coding style in mm/mmap.c\n\n[akpm@linux-foundation.org: cleanup]\nSigned-off-by: ZhenwenXu \u003chelight.xu@gmail.com\u003e\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "853ac43ab194f5051b27a55060215d696dc9480d",
      "tree": "1f60fd49d516b7b242781a77446993b1dfb5bb66",
      "parents": [
        "69e9930993cfd70d82c8d9dd96fc3a88854d06fc"
      ],
      "author": {
        "name": "Matt Mackall",
        "email": "mpm@selenic.com",
        "time": "Tue Jan 06 14:40:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "shmem: unify regular and tiny shmem\n\ntiny-shmem shares most of its 130 lines of code with shmem and tends to\nbreak when particular bits of shmem get modified.  Unifying saves code and\nmakes keeping these two in sync much easier.\n\nbefore:\n  14367\t    392\t     24\t  14783\t   39bf\tmm/shmem.o\n    396      72       8     476\t    1dc\tmm/tiny-shmem.o\n\nafter:\n  14367\t    392\t     24\t  14783\t   39bf\tmm/shmem.o\n    412\t     72       8     492\t    1ec\tmm/shmem.o tiny\n\nSigned-off-by: Matt Mackall \u003cmpm@selenic.com\u003e\nAcked-by: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "69e9930993cfd70d82c8d9dd96fc3a88854d06fc",
      "tree": "2467f8e1fdb745f4ca5e94acf0aba09c74063125",
      "parents": [
        "4779280d1ea4d361af13ae77ba55217fbcd16d4c"
      ],
      "author": {
        "name": "Franck Bui-Huu",
        "email": "fbuihuu@gmail.com",
        "time": "Tue Jan 06 14:40:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "block_write_begin(): remove useless goto\n\nSigned-off-by: Franck Bui-Huu \u003cfbuihuu@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": "4779280d1ea4d361af13ae77ba55217fbcd16d4c",
      "tree": "1abb35d85f2280aebb9cd565cc223d14b8731203",
      "parents": [
        "91bf189c3a766927694ce9de7d545e96b23f20fc"
      ],
      "author": {
        "name": "Ying Han",
        "email": "yinghan@google.com",
        "time": "Tue Jan 06 14:40:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "mm: make get_user_pages() interruptible\n\nThe initial implementation of checking TIF_MEMDIE covers the cases of OOM\nkilling.  If the process has been OOM killed, the TIF_MEMDIE is set and it\nreturn immediately.  This patch includes:\n\n1.  add the case that the SIGKILL is sent by user processes.  The\n   process can try to get_user_pages() unlimited memory even if a user\n   process has sent a SIGKILL to it(maybe a monitor find the process\n   exceed its memory limit and try to kill it).  In the old\n   implementation, the SIGKILL won\u0027t be handled until the get_user_pages()\n   returns.\n\n2.  change the return value to be ERESTARTSYS.  It makes no sense to\n   return ENOMEM if the get_user_pages returned by getting a SIGKILL\n   signal.  Considering the general convention for a system call\n   interrupted by a signal is ERESTARTNOSYS, so the current return value\n   is consistant to that.\n\nLee:\n\nAn unfortunate side effect of \"make-get_user_pages-interruptible\" is that\nit prevents a SIGKILL\u0027d task from munlock-ing pages that it had mlocked,\nresulting in freeing of mlocked pages.  Freeing of mlocked pages, in\nitself, is not so bad.  We just count them now--altho\u0027 I had hoped to\nremove this stat and add PG_MLOCKED to the free pages flags check.\n\nHowever, consider pages in shared libraries mapped by more than one task\nthat a task mlocked--e.g., via mlockall().  If the task that mlocked the\npages exits via SIGKILL, these pages would be left mlocked and\nunevictable.\n\nProposed fix:\n\nAdd another GUP flag to ignore sigkill when calling get_user_pages from\nmunlock()--similar to Kosaki Motohiro\u0027s \u0027IGNORE_VMA_PERMISSIONS flag for\nthe same purpose.  We are not actually allocating memory in this case,\nwhich \"make-get_user_pages-interruptible\" intends to avoid.  We\u0027re just\nmunlocking pages that are already resident and mapped, and we\u0027re reusing\nget_user_pages() to access those pages.\n\n??  Maybe we should combine \u0027IGNORE_VMA_PERMISSIONS and \u0027_IGNORE_SIGKILL\ninto a single flag: GUP_FLAGS_MUNLOCK ???\n\n[Lee.Schermerhorn@hp.com: ignore sigkill in get_user_pages during munlock]\nSigned-off-by: Paul Menage \u003cmenage@google.com\u003e\nSigned-off-by: Ying Han \u003cyinghan@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nReviewed-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Rohit Seth \u003crohitseth@google.com\u003e\nCc: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "91bf189c3a766927694ce9de7d545e96b23f20fc",
      "tree": "c9b289cffce3bf7606b8c166b446d3a2185463b0",
      "parents": [
        "b555749aac87d7c2637f153e44bd77c7fdf4c65b"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Tue Jan 06 14:40:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "hugetlb: unsigned ret cannot be negative\n\nunsigned long ret cannot be negative, but ret can get -EFAULT.\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Adam Litke \u003cagl@us.ibm.com\u003e\nCc: David Gibson \u003cdavid@gibson.dropbear.id.au\u003e\nCc: Ken Chen \u003ckenchen@google.com\u003e\nCc: 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": "b555749aac87d7c2637f153e44bd77c7fdf4c65b",
      "tree": "b65a437fd70795eac749f5dcf327151d458ec742",
      "parents": [
        "1e9e63650d6cb88e6d6d2ca6cc3ee276c26de4a3"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Jan 06 14:40:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "vmscan: shrink_active_list(): reduce lru_lock hold time\n\nThese three statements manipulate local variables and do not need the lock\ncoverage.\n\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nCc: Rik van Riel \u003criel@redhat.com\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1e9e63650d6cb88e6d6d2ca6cc3ee276c26de4a3",
      "tree": "2fd95051128ef2ebfaad421ee919dab9e25459b2",
      "parents": [
        "d936cf9b39b06c8d2e0d7fb5e7b4f176e18dec69"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:13 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:08 2009 -0800"
      },
      "message": "badpage: KERN_ALERT BUG instead of KERN_EMERG\n\nbad_page() and rmap Eeek messages have said KERN_EMERG for a few years,\nwhich I\u0027ve followed in print_bad_pte().  These are serious system errors,\non a par with BUGs, but they\u0027re not quite emergencies, and we do our best\nto carry on: say KERN_ALERT \"BUG: \" like the x86 oops does.\n\nAnd remove the \"Trying to fix it up, but a reboot is needed\" line: it\u0027s\nnot untrue, but I hope the KERN_ALERT \"BUG: \" conveys as much.\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": "d936cf9b39b06c8d2e0d7fb5e7b4f176e18dec69",
      "tree": "db691451bc77e90b980b62674519731c6ece72db",
      "parents": [
        "edc315fd222497ae4f4b959a9e31ada1e68a4755"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: ratelimit print_bad_pte and bad_page\n\nprint_bad_pte() and bad_page() might each need ratelimiting - especially\nfor their dump_stacks, almost never of interest, yet not quite\ndispensible.  Correlating corruption across neighbouring entries can be\nvery helpful, so allow a burst of 60 reports before keeping quiet for the\nremainder of that minute (or allow a steady drip of one report per\nsecond).\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": "edc315fd222497ae4f4b959a9e31ada1e68a4755",
      "tree": "aaf1a6b015368c52097ed0c362a24bf18e40897f",
      "parents": [
        "2509ef26db4699a5d9fa876e90ddfc107afcab84"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: remove vma from page_remove_rmap\n\nRemove page_remove_rmap()\u0027s vma arg, which was only for the Eeek message.\nAnd remove the BUG_ON(page_mapcount(page) \u003d\u003d 0) from CONFIG_DEBUG_VM\u0027s\npage_dup_rmap(): we\u0027re trying to be more resilient about that than BUGs.\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": "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": "22b31eec63e5f2e219a3ee15f456897272bc73e8",
      "tree": "906e4975a0e2cdef15ef071b4890e3b28e36cf39",
      "parents": [
        "3dc147414ccad81dc33edb80774b1fed12a38c08"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: vm_normal_page use print_bad_pte\n\nprint_bad_pte() is so far being called only when zap_pte_range() finds\nnegative page_mapcount, or there\u0027s a fault on a pte_file where it does not\nbelong.  That\u0027s weak coverage when we suspect pagetable corruption.\n\nOriginally, it was called when vm_normal_page() found an invalid pfn: but\npfn_valid is expensive on some architectures and configurations, so 2.6.24\nput that under CONFIG_DEBUG_VM (which doesn\u0027t help in the field), then\n2.6.26 replaced it by a VM_BUG_ON (likewise).\n\nReinstate the print_bad_pte() in vm_normal_page(), but use a cheaper test\nthan pfn_valid(): memmap_init_zone() (used in bootup and hotplug) keep a\n__read_mostly note of the highest_memmap_pfn, vm_normal_page() then check\npfn against that.  We could call this pfn_plausible() or pfn_sane(), but I\ndoubt we\u0027ll need it elsewhere: of course it\u0027s not reliable, but gives much\nstronger pagetable validation on many boxes.\n\nAlso use print_bad_pte() when the pte_special bit is found outside a\nVM_PFNMAP or VM_MIXEDMAP area, instead of VM_BUG_ON.\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": "3dc147414ccad81dc33edb80774b1fed12a38c08",
      "tree": "bdcfd37fa47d6617490fa276ddfcc5a6ab0c731b",
      "parents": [
        "8cc3b39221b0ecbd83a338948a8396df097fc656"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: replace page_remove_rmap Eeek and BUG\n\nNow that bad pages are kept out of circulation, there is no need for the\ninfamous page_remove_rmap() BUG() - once that page is freed, its negative\nmapcount will issue a \"Bad page state\" message and the page won\u0027t be\nfreed.  Removing the BUG() allows more info, on subsequent pages, to be\ngathered.\n\nWe do have more info about the page at this point than bad_page() can know\n- notably, what the pmd is, which might pinpoint something like low 64kB\ncorruption - but page_remove_rmap() isn\u0027t given the address to find that.\n\nIn practice, there is only one call to page_remove_rmap() which has ever\nreported anything, that from zap_pte_range() (usually on exit, sometimes\non munmap).  It has all the info, so remove page_remove_rmap()\u0027s \"Eeek\"\nmessage and leave it all to zap_pte_range().\n\nmm/memory.c already has a hardly used print_bad_pte() function, showing\nsome of the appropriate info: extend it to show what we want for the rmap\ncase: pte info, page info (when there is a page) and vma info to compare.\nzap_pte_range() already knows the pmd, but print_bad_pte() is easier to\nuse if it works that out for itself.\n\nSome of this info is also shown in bad_page()\u0027s \"Bad page state\" message.\nKeep them separate, but adjust them to match each other as far as\npossible.  Say \"Bad page map\" in print_bad_pte(), and add a TAINT_BAD_PAGE\nthere too.\n\nprint_bad_pte() show current-\u003ecomm unconditionally (though it should get\nrepeated in the usually irrelevant stack trace): sorry, I misled Nick\nPiggin to make it conditional on vm_mm \u003d\u003d current-\u003emm, but current-\u003emm is\nalready NULL in the exit case.  Usually current-\u003ecomm is good, though\nexceptionally it may not be that of the mm (when \"swapoff\" for example).\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": "8cc3b39221b0ecbd83a338948a8396df097fc656",
      "tree": "8a8617590f6bc9842c28a0fc4e5e5fbc93e95780",
      "parents": [
        "79f4b7bf393e67bbffec807cc68caaefc72b82ee"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: keep any bad page out of circulation\n\nUntil now the bad_page() checkers have special-cased PageReserved, keeping\nthose pages out of circulation thereafter.  Now extend the special case to\nall: we want to keep ANY page with bad state out of circulation - the\n\"free\" page may well be in use by something.\n\nLeave the bad state of those pages untouched, for examination by\ndebuggers; except for PageBuddy - leaving that set would risk bringing the\npage back.\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": "79f4b7bf393e67bbffec807cc68caaefc72b82ee",
      "tree": "5bee7c12fe49e63e38d74afc6bbd2933906ecb9b",
      "parents": [
        "0f64415d42760379753e6088787ce3fd3e069509"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:40:05 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:07 2009 -0800"
      },
      "message": "badpage: simplify page_alloc flag check+clear\n\nSimplify the PAGE_FLAGS checking and clearing when freeing and allocating\na page: check the same flags as before when freeing, clear ALL the flags\n(unless PageReserved) when freeing, check ALL flags off when allocating.\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": "0f64415d42760379753e6088787ce3fd3e069509",
      "tree": "85c9d3be88e56fb2d62558689744dbdd386cc745",
      "parents": [
        "09f445e7f5107c91be12ed386350de6cd055e0a4"
      ],
      "author": {
        "name": "Dmitri Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Jan 06 14:40:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "fs: truncate blocks outside i_size after O_DIRECT write error\n\nIn case of error extending write may have instantiated a few blocks\noutside i_size.  We need to trim these blocks.  We have to do it\n*regardless* to blocksize.  At least ext2, ext3 and reiserfs interpret\n(i_size \u003c biggest block) condition as error.  Fsck will complain about\nwrong i_size.  Then fsck will fix the error by changing i_size according\nto the biggest block.  This is bad because this blocks contain garbage\nfrom previous write attempt.  And result in data corruption.\n\n####TESTCASE_BEGIN\n$touch /mnt/test/BIG_FILE\n## at this moment /mnt/test/BIG_FILE size and blocks equal to zero\nopen(\"/mnt/test/BIG_FILE\", O_WRONLY|O_CREAT|O_DIRECT, 0666) \u003d 3\nwrite(3, \"aaaaaaaaaaaa\"..., 104857600) \u003d -1 ENOSPC (No space left on device)\n## size and block sould\u0027t be changed because write op failed.\n$stat /mnt/test/BIG_FILE\nFile: `/mnt/test/BIG_FILE\u0027\nSize: 0 Blocks: 110896 IO Block: 1024 regular empty file\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c^^^^^^^^^^^^^^^^^^^^^^^^^^^^^file size is less than biggest block idx\nDevice: fe07h/65031d Inode: 14 Links: 1\nAccess: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)\nAccess: 2007-01-24 20:03:38.000000000 +0300\nModify: 2007-01-24 20:03:38.000000000 +0300\nChange: 2007-01-24 20:03:39.000000000 +0300\n\n#fsck.ext3 -f /dev/VG/test\ne2fsck 1.39 (29-May-2006)\nPass 1: Checking inodes, blocks, and sizes\nInode 14, i_size is 0, should be 56556544. Fix\u003cy\u003e? yes\nPass 2: Checking directory structure\n....\n#####TESTCASE_ENDdiff --git a/fs/direct-io.c b/fs/direct-io.c\nindex af0558d..4e88bea 100644\n\n[akpm@linux-foundation.org: use i_size_read()]\nSigned-off-by: Dmitri Monakhov \u003cdmonakhov@openvz.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "09f445e7f5107c91be12ed386350de6cd055e0a4",
      "tree": "4a1114bb896f51e18efbdc05d57ec358abc5aced",
      "parents": [
        "01dbe5c9b1004dab045cb7f38428258ca9cddc02"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:40:03 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "mm: kill zone_is_near_oom()\n\nzone_is_near_oom() is unused.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01dbe5c9b1004dab045cb7f38428258ca9cddc02",
      "tree": "526bba2afd30a7a58e47597f0ab9255a37a21d55",
      "parents": [
        "a79311c14eae4bb946a97af25f3e1b17d625985d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:40:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "vmscan: improve reclaim throughput to bail out patch\n\nThe vmscan bail out patch move nr_reclaimed variable to struct\nscan_control.  Unfortunately, indirect access can easily happen cache\nmiss.\n\nif heavy memory pressure happend, that\u0027s ok.\ncache miss already plenty. it is not observable.\n\nbut, if memory pressure is lite, performance degression is obserbable.\n\nI compared following three pattern (it was mesured 10 times each)\n\nhackbench 125 process 3000\nhackbench 130 process 3000\nhackbench 135 process 3000\n\n            2.6.28-rc6                       bail-out\n\n\t125\t130\t135\t\t125\t130\t135\n      \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t71.866\t75.86\t81.274\t\t93.414\t73.254\t193.382\n\t74.145\t78.295\t77.27\t\t74.897\t75.021\t80.17\n\t70.305\t77.643\t75.855\t\t70.134\t77.571\t79.896\n\t74.288\t73.986\t75.955\t\t77.222\t78.48\t80.619\n\t72.029\t79.947\t78.312\t\t75.128\t82.172\t79.708\n\t71.499\t77.615\t77.042\t\t74.177\t76.532\t77.306\n\t76.188\t74.471\t83.562\t\t73.839\t72.43\t79.833\n\t73.236\t75.606\t78.743\t\t76.001\t76.557\t82.726\n\t69.427\t77.271\t76.691\t\t76.236\t79.371\t103.189\n\t72.473\t76.978\t80.643\t\t69.128\t78.932\t75.736\n\navg\t72.545\t76.767\t78.534\t\t76.017\t77.03\t93.256\nstd\t1.89\t1.71\t2.41\t\t6.29\t2.79\t34.16\nmin\t69.427\t73.986\t75.855\t\t69.128\t72.43\t75.736\nmax\t76.188\t79.947\t83.562\t\t93.414\t82.172\t193.382\n\nabout 4-5% degression.\n\nThen, this patch introduces a temporary local variable.\n\nresult:\n\n            2.6.28-rc6                       this patch\n\nnum\t125\t130\t135\t\t125\t130\t135\n      \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\t71.866\t75.86\t81.274\t\t67.302\t68.269\t77.161\n\t74.145\t78.295\t77.27   \t72.616\t72.712\t79.06\n\t70.305\t77.643\t75.855  \t72.475\t75.712\t77.735\n\t74.288\t73.986\t75.955  \t69.229\t73.062\t78.814\n\t72.029\t79.947\t78.312  \t71.551\t74.392\t78.564\n\t71.499\t77.615\t77.042  \t69.227\t74.31\t78.837\n\t76.188\t74.471\t83.562  \t70.759\t75.256\t76.6\n\t73.236\t75.606\t78.743  \t69.966\t76.001\t78.464\n\t69.427\t77.271\t76.691  \t69.068\t75.218\t80.321\n\t72.473\t76.978\t80.643  \t72.057\t77.151\t79.068\n\navg\t72.545\t76.767\t78.534 \t\t70.425\t74.2083\t78.462\nstd \t1.89\t1.71\t2.41    \t1.66\t2.34\t1.00\nmin \t69.427\t73.986\t75.855  \t67.302\t68.269\t76.6\nmax \t76.188\t79.947\t83.562  \t72.616\t77.151\t80.321\n\nOK. the degression is disappeared.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a79311c14eae4bb946a97af25f3e1b17d625985d",
      "tree": "f12391481dfd7a1c3ffcff75bd04d3a88957d16c",
      "parents": [
        "ebdd4aea8d736e3b5ce27ab0a26860c9fded341b"
      ],
      "author": {
        "name": "Rik van Riel",
        "email": "riel@redhat.com",
        "time": "Tue Jan 06 14:40:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "vmscan: bail out of direct reclaim after swap_cluster_max pages\n\nWhen the VM is under pressure, it can happen that several direct reclaim\nprocesses are in the pageout code simultaneously.  It also happens that\nthe reclaiming processes run into mostly referenced, mapped and dirty\npages in the first round.\n\nThis results in multiple direct reclaim processes having a lower\npageout priority, which corresponds to a higher target of pages to\nscan.\n\nThis in turn can result in each direct reclaim process freeing\nmany pages.  Together, they can end up freeing way too many pages.\n\nThis kicks useful data out of memory (in some cases more than half\nof all memory is swapped out).  It also impacts performance by\nkeeping tasks stuck in the pageout code for too long.\n\nA 30% improvement in hackbench has been observed with this patch.\n\nThe fix is relatively simple: in shrink_zone() we can check how many\npages we have already freed, direct reclaim tasks break out of the\nscanning loop if they have already freed enough pages and have reached\na lower priority level.\n\nWe do not break out of shrink_zone() when priority \u003d\u003d DEF_PRIORITY,\nto ensure that equal pressure is applied to every zone in the common\ncase.\n\nHowever, in order to do this we do need to know how many pages we already\nfreed, so move nr_reclaimed into scan_control.\n\nakpm: a historical interlude...\n\nWe tried this in 2004:\n\n:commit e468e46a9bea3297011d5918663ce6d19094cf87\n:Author: akpm \u003cakpm\u003e\n:Date:   Thu Jun 24 15:53:52 2004 +0000\n:\n:[PATCH] vmscan.c: dont reclaim too many pages\n:\n:    The shrink_zone() logic can, under some circumstances, cause far too many\n:    pages to be reclaimed.  Say, we\u0027re scanning at high priority and suddenly hit\n:    a large number of reclaimable pages on the LRU.\n:    Change things so we bale out when SWAP_CLUSTER_MAX pages have been reclaimed.\n\nAnd we reverted it in 2006:\n\n:commit 210fe530305ee50cd889fe9250168228b2994f32\n:Author: Andrew Morton \u003cakpm@osdl.org\u003e\n:Date:   Fri Jan 6 00:11:14 2006 -0800\n:\n:    [PATCH] vmscan: balancing fix\n:\n:    Revert a patch which went into 2.6.8-rc1.  The changelog for that patch was:\n:\n:      The shrink_zone() logic can, under some circumstances, cause far too many\n:      pages to be reclaimed.  Say, we\u0027re scanning at high priority and suddenly\n:      hit a large number of reclaimable pages on the LRU.\n:\n:      Change things so we bale out when SWAP_CLUSTER_MAX pages have been\n:      reclaimed.\n:\n:    Problem is, this change caused significant imbalance in inter-zone scan\n:    balancing by truncating scans of larger zones.\n:\n:    Suppose, for example, ZONE_HIGHMEM is 10x the size of ZONE_NORMAL.  The zone\n:    balancing algorithm would require that if we\u0027re scanning 100 pages of\n:    ZONE_HIGHMEM, we should scan 10 pages of ZONE_NORMAL.  But this logic will\n:    cause the scanning of ZONE_HIGHMEM to bale out after only 32 pages are\n:    reclaimed.  Thus effectively causing smaller zones to be scanned relatively\n:    harder than large ones.\n:\n:    Now I need to remember what the workload was which caused me to write this\n:    patch originally, then fix it up in a different way...\n\nAnd we haven\u0027t demonstrated that whatever problem caused that reversion is\nnot being reintroduced by this change in 2008.\n\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ebdd4aea8d736e3b5ce27ab0a26860c9fded341b",
      "tree": "4d19d85c0f7bf668a530a69d76d7c8157e8bcba4",
      "parents": [
        "f0d7a4b3ed46816f5097d521850a8ab7a0d40f3c"
      ],
      "author": {
        "name": "Hannes Eder",
        "email": "hannes@hanneseder.net",
        "time": "Tue Jan 06 14:39:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "hugetlb: fix sparse warnings\n\nFix the following sparse warnings:\n\n  mm/hugetlb.c:375:3: warning: returning void-valued expression\n  mm/hugetlb.c:408:3: warning: returning void-valued expression\n\nSigned-off-by: Hannes Eder \u003channes@hanneseder.net\u003e\nAcked-by: Nishanth Aravamudan \u003cnacc@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "69beeb1d3428424fbc7546f85e5cd7ac4119c09d",
      "tree": "b00c806e4ced5ace1bdf4a492c985ee4fa0605b7",
      "parents": [
        "efab81864161f8c546d4403873e7ae7831ed5b26"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "mm: make vread() and vwrite() declaration\n\nSparse output following warnings.\n\nmm/vmalloc.c:1436:6: warning: symbol \u0027vread\u0027 was not declared. Should it be static?\nmm/vmalloc.c:1474:6: warning: symbol \u0027vwrite\u0027 was not declared. Should it be static?\n\nHowever, it is used by /dev/kmem. fixed here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "efab81864161f8c546d4403873e7ae7831ed5b26",
      "tree": "e7fa6bff5c86691e4e675c81649acb9d5275af4a",
      "parents": [
        "14b90b22ec0f359ef4791033ab386b2b627bae07"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:46 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:05 2009 -0800"
      },
      "message": "mm: make setup_per_zone_inactive_ratio() static\n\nSparse output following warning.\n\nmm/page_alloc.c:4301:6: warning: symbol \u0027setup_per_zone_inactive_ratio\u0027 was not declared. Should it be static?\n\ncleanup here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "14b90b22ec0f359ef4791033ab386b2b627bae07",
      "tree": "aa8bf58d54743b914b1d539b05541e6f2a8a68a9",
      "parents": [
        "ff30153bf9647c8646538810d4c01015a5e44787"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:45 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: make scan_zone_unevictable_pages() static\n\nsparse output following warning\n\n\tmm/vmscan.c:2507:6: warning: symbol \u0027scan_zone_unevictable_pages\u0027 was not declared. Should it be static?\n\ncleanup here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ff30153bf9647c8646538810d4c01015a5e44787",
      "tree": "8f423cd925332660c3d46b6b987a7fac6794073f",
      "parents": [
        "d38d2a7582012ecf53aac33683ca5c689093cf65"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: make scan_all_zones_unevictable_pages() static\n\nsparse output following warning.\n\n\tmm/vmscan.c:2549:6: warning: symbol \u0027scan_all_zones_unevictable_pages\u0027 was not declared. Should it be static?\n\ncleanup here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d38d2a7582012ecf53aac33683ca5c689093cf65",
      "tree": "ceb0262a1478a2fa26ffa89e26bef0a80d1bb9ca",
      "parents": [
        "2bc7273b0e3a509fb598abfc5b9fe50158b830d2"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:44 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: make mem_cgroup_resize_limit() static\n\nSparse output following warnings.\n\nmm/memcontrol.c:782:5: warning: symbol \u0027mem_cgroup_resize_limit\u0027 was not\ndeclared.  Should it be static?\n\ncleanup here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2bc7273b0e3a509fb598abfc5b9fe50158b830d2",
      "tree": "e8cd456eb0cdc537f195e93fc0090b970dec7308",
      "parents": [
        "feb166948876e2ff8f70b2da273b2a8e86957578"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: make maddr __iomem\n\nsparse output following warnings.\n\nmm/memory.c:2936:8: warning: incorrect type in assignment (different address spaces)\nmm/memory.c:2936:8:    expected void *maddr\nmm/memory.c:2936:8:    got void [noderef] \u003casn:2\u003e\n\ncleanup here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "feb166948876e2ff8f70b2da273b2a8e86957578",
      "tree": "7d076f061531f42c9ca42f1565b7ce59fc30b4d6",
      "parents": [
        "077cbc5864cd9188fa4c4e181e48ff58317e6400"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:43 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: make init_section_page_cgroup() static\n\nSparse output following warning.\n\nmm/page_cgroup.c:100:15: warning: symbol \u0027init_section_page_cgroup\u0027 was\nnot declared.  Should it be static?\n\ncleanup here.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "077cbc5864cd9188fa4c4e181e48ff58317e6400",
      "tree": "bcfcdecce7427801451fb8d6fcf5e7648bd2bfb3",
      "parents": [
        "b962716b459505a8d83aea313fea0abe76749f42"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:42 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "memcg: reclaim shouldn\u0027t change zone-\u003erecent_rotated statistics\n\nmemcg reclaim shouldn\u0027t change zone-\u003erecent_rotated statistics.  If\nmemcgroup reclaim changes zone statistics, global reclaim can get a bit\nconfused.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Balbir Singh \u003cbalbir@in.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": "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": "60371d971a3d01afd102f0bbf2681f32ecc31d78",
      "tree": "999cd75fbf80877f99b518e632c445ae849eeb4d",
      "parents": [
        "ac47b003d03c2a4f28aef1d505b66d24ad191c4f"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:40 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: add add_to_swap stub\n\nIf we add a failing stub for add_to_swap(), then we can remove the #ifdef\nCONFIG_SWAP from mm/vmscan.c.\n\nThis was intended as a source cleanup, but looking more closely, it turns\nout that the !CONFIG_SWAP case was going to keep_locked for an anonymous\npage, whereas now it goes to the more suitable activate_locked, like the\nCONFIG_SWAP nr_swap_pages 0 case.\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": "ac47b003d03c2a4f28aef1d505b66d24ad191c4f",
      "tree": "12c31491b756f4dc7a55a9e11b69b193743ff647",
      "parents": [
        "63d6c5ad7fc27455ce5cb4706884671fb7e0df08"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:39 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:04 2009 -0800"
      },
      "message": "mm: remove gfp_mask from add_to_swap\n\nRemove gfp_mask argument from add_to_swap(): it\u0027s misleading because its\nonly caller, shrink_page_list(), is not atomic at that point; and in due\ncourse (implementing discard) we\u0027ll sometimes want to allocate some memory\nwith GFP_NOIO (as is used in swap_writepage) when allocating swap.\n\nNo change to the gfp_mask passed down to add_to_swap_cache(): still use\n__GFP_HIGH without __GFP_WAIT (with nomemalloc and nowarn as before):\nthough it\u0027s not obvious if that\u0027s the best combination to ask for here.\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": "63d6c5ad7fc27455ce5cb4706884671fb7e0df08",
      "tree": "82cf04209a4825ab4daf2a94977fc44550d2c9b7",
      "parents": [
        "68bdc8d64742ccc5e340c5d122ebbab3f0cf2a74"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:38 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: remove try_to_munlock from vmscan\n\nAn unfortunate feature of the Unevictable LRU work was that reclaiming an\nanonymous page involved an extra scan through the anon_vma: to check that\nthe page is evictable before allocating swap, because the swap could not\nbe freed reliably soon afterwards.\n\nNow try_to_free_swap() has replaced remove_exclusive_swap_page(), that\u0027s\nnot an issue any more: remove try_to_munlock() call from\nshrink_page_list(), leaving it to try_to_munmap() to discover if the page\nis one to be culled to the unevictable list - in which case then\ntry_to_free_swap().\n\nUpdate unevictable-lru.txt to remove comments on the try_to_munlock() in\nshrink_page_list(), and shorten some lines over 80 columns.\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": "ab967d86015a19777955370deebc8262d50fed63",
      "tree": "be0807bef32c0d28ac6dbcf7c8b938840d2f2a3f",
      "parents": [
        "878b63ac889df706d01048f2c110e322ad2f996d"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:33 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: wp lock page before deciding cow\n\nAn application may rely on get_user_pages() to give it pages writable from\nuserspace and shared with a driver, GUP breaking COW if necessary.  It may\nmprotect() the pages\u0027 writability, off and on, from time to time.\n\nNormally this works fine (so long as the app does not fork); but just\noccasionally, under memory pressure, a readonly pte in a newly writable\narea is COWed unnecessarily, breaking the link with the driver: because\ndo_wp_page() does trylock_page, and falls back to COW whenever that fails.\n\nFor reliable behaviour in the unshared case, when the trylock_page fails,\nnow unlock pagetable, lock page and relock pagetable, before deciding\nwhether Copy-On-Write is really necessary.\n\nReported-by: Zhou Yingchao\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": "878b63ac889df706d01048f2c110e322ad2f996d",
      "tree": "e0bd69b890fda939fc190675d977dd0fd75e0427",
      "parents": [
        "2da02997e08d3efe8174c7a47696e6f7cbe69ba9"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:32 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: gup persist for write permission\n\ndo_wp_page()\u0027s VM_FAULT_WRITE return value tells __get_user_pages() that\nCOW has been done if necessary, though it may be leaving the pte without\nwrite permission - for the odd case of forced writing to a readonly vma\nfor ptrace.  At present GUP then retries the follow_page() without asking\nfor write permission, to escape an endless loop when forced.\n\nBut an application may be relying on GUP to guarantee a writable page\nwhich won\u0027t be COWed again when written from userspace, whereas a race\nhere might leave a readonly pte in place?  Change the VM_FAULT_WRITE\nhandling to ask follow_page() for write permission again, except in that\nodd case of forced writing to a readonly vma.\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": "2da02997e08d3efe8174c7a47696e6f7cbe69ba9",
      "tree": "2e52d9346c52dda83dc8cc9626cbe302e026ad9a",
      "parents": [
        "364aeb2849789b51bf4b9af2ddd02fee7285c54e"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:31 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:03 2009 -0800"
      },
      "message": "mm: add dirty_background_bytes and dirty_bytes sysctls\n\nThis change introduces two new sysctls to /proc/sys/vm:\ndirty_background_bytes and dirty_bytes.\n\ndirty_background_bytes is the counterpart to dirty_background_ratio and\ndirty_bytes is the counterpart to dirty_ratio.\n\nWith growing memory capacities of individual machines, it\u0027s no longer\nsufficient to specify dirty thresholds as a percentage of the amount of\ndirtyable memory over the entire system.\n\ndirty_background_bytes and dirty_bytes specify quantities of memory, in\nbytes, that represent the dirty limits for the entire system.  If either\nof these values is set, its value represents the amount of dirty memory\nthat is needed to commence either background or direct writeback.\n\nWhen a `bytes\u0027 or `ratio\u0027 file is written, its counterpart becomes a\nfunction of the written value.  For example, if dirty_bytes is written to\nbe 8096, 8K of memory is required to commence direct writeback.\ndirty_ratio is then functionally equivalent to 8K / the amount of\ndirtyable memory:\n\n\tdirtyable_memory \u003d free pages + mapped pages + file cache\n\n\tdirty_background_bytes \u003d dirty_background_ratio * dirtyable_memory\n\t\t-or-\n\tdirty_background_ratio \u003d dirty_background_bytes / dirtyable_memory\n\n\t\tAND\n\n\tdirty_bytes \u003d dirty_ratio * dirtyable_memory\n\t\t-or-\n\tdirty_ratio \u003d dirty_bytes / dirtyable_memory\n\nOnly one of dirty_background_bytes and dirty_background_ratio may be\nspecified at a time, and only one of dirty_bytes and dirty_ratio may be\nspecified.  When one sysctl is written, the other appears as 0 when read.\n\nThe `bytes\u0027 files operate on a page size granularity since dirty limits\nare compared with ZVC values, which are in page units.\n\nPrior to this change, the minimum dirty_ratio was 5 as implemented by\nget_dirty_limits() although /proc/sys/vm/dirty_ratio would show any user\nwritten value between 0 and 100.  This restriction is maintained, but\ndirty_bytes has a lower limit of only one page.\n\nAlso prior to this change, the dirty_background_ratio could not equal or\nexceed dirty_ratio.  This restriction is maintained in addition to\nrestricting dirty_background_bytes.  If either background threshold equals\nor exceeds that of the dirty threshold, it is implicitly set to half the\ndirty threshold.\n\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Andrea Righi \u003crighi.andrea@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": "364aeb2849789b51bf4b9af2ddd02fee7285c54e",
      "tree": "4a24ea43a2a76ae744571f3c7b5022aa1107599e",
      "parents": [
        "58a01a45721bf7bd3a41a86248c3cb02a6b0c501"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:29 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: change dirty limit type specifiers to unsigned long\n\nThe background dirty and dirty limits are better defined with type\nspecifiers of unsigned long since negative writeback thresholds are not\npossible.\n\nThese values, as returned by get_dirty_limits(), are normally compared\nwith ZVC values to determine whether writeback shall commence or be\nthrottled.  Such page counts cannot be negative, so declaring the page\nlimits as signed is unnecessary.\n\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nCc: Andrea Righi \u003crighi.andrea@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": "58a01a45721bf7bd3a41a86248c3cb02a6b0c501",
      "tree": "2f897de228d8879b981797fdb1ee7d46418e453a",
      "parents": [
        "cbf84b7add8103b92aaa84928e335df726bfc8da"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue Jan 06 14:39:28 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm/page_alloc.c: eliminate NULL test and memset after alloc_bootmem\n\nAs noted by Akinobu Mita in patch b1fceac2b9e04d278316b2faddf276015fc06e3b,\nalloc_bootmem and related functions never return NULL and always return a\nzeroed region of memory.  Thus a NULL test or memset after calls to these\nfunctions is unnecessary.\n\nThis was fixed using the following semantic patch.\n(http://www.emn.fr/x-info/coccinelle/)\n\n// \u003csmpl\u003e\n@@\nexpression E;\nstatement S;\n@@\n\nE \u003d \\(alloc_bootmem\\|alloc_bootmem_low\\|alloc_bootmem_pages\\|alloc_bootmem_low_pages\\|alloc_bootmem_node\\|alloc_bootmem_low_pages_node\\|alloc_bootmem_pages_node\\)(...)\n... when !\u003d E\n(\n- BUG_ON (E \u003d\u003d NULL);\n|\n- if (E \u003d\u003d NULL) S\n)\n\n@@\nexpression E,E1;\n@@\n\nE \u003d \\(alloc_bootmem\\|alloc_bootmem_low\\|alloc_bootmem_pages\\|alloc_bootmem_low_pages\\|alloc_bootmem_node\\|alloc_bootmem_low_pages_node\\|alloc_bootmem_pages_node\\)(...)\n... when !\u003d E\n- memset(E,0,E1);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cbf84b7add8103b92aaa84928e335df726bfc8da",
      "tree": "04e3ef2b3f70e5bf647f4f4c8c3ce50dd12e8474",
      "parents": [
        "2afd1c928f1132b8d0099866e75ce8ad713a1180"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:27 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: further cleanup page_add_new_anon_rmap\n\nMoving lru_cache_add_active_or_unevictable() into page_add_new_anon_rmap()\nwas good but stupid: we can and should SetPageSwapBacked() there too; and\nwe know for sure that this anonymous, swap-backed page is not file cache.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Lee Schermerhorn \u003clee.schermerhorn@hp.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2afd1c928f1132b8d0099866e75ce8ad713a1180",
      "tree": "e31d1cfd0b11df74e0241fe43e4be2c72a8946ff",
      "parents": [
        "b5934c531849ff4a51ce0f290141efe564290e40"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:26 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: make page_lock_anon_vma() static\n\npage_lock_anon_vma() and page_unlock_anon_vma() were made available to\nshow_page_path() in vmscan.c; but now that has been removed, make them\nstatic in rmap.c again, they\u0027re better kept private if possible.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b5934c531849ff4a51ce0f290141efe564290e40",
      "tree": "0c741a5bd6178db11f1147875f59e7a1a9d1754d",
      "parents": [
        "51726b1222863852c46ca21ed0115b85d1edfd89"
      ],
      "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: add_active_or_unevictable into rmap\n\nlru_cache_add_active_or_unevictable() and page_add_new_anon_rmap() always\nappear together.  Save some symbol table space and some jumping around by\nremoving lru_cache_add_active_or_unevictable(), folding its code into\npage_add_new_anon_rmap(): like how we add file pages to lru just after\nadding them to page cache.\n\nRemove the nearby \"TODO: is this safe?\" comments (yes, it is safe), and\nchange page_add_new_anon_rmap()\u0027s address BUG_ON to VM_BUG_ON as\noriginally intended.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Rik van Riel \u003criel@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\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": "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": "6d91add09f4bad5f4d4233b13faa392f0c4b16be",
      "tree": "26f77047b316dfc0879307fbfda84b15a199155f",
      "parents": [
        "3c1d43787b48c798f44dc32a6e6deb5ca2da3e68"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:02 2009 -0800"
      },
      "message": "mm: add Set,ClearPageSwapCache stubs\n\nIf we add NOOP stubs for SetPageSwapCache() and ClearPageSwapCache(), then\nwe can remove the #ifdef CONFIG_SWAPs from mm/migrate.c.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-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": "3c1d43787b48c798f44dc32a6e6deb5ca2da3e68",
      "tree": "587da6031de37a716839656cf4fe4245aba2afb4",
      "parents": [
        "e5991371ee0d1c0ce19e133c6f9075b49c5b4ae8"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:23 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm: remove GFP_HIGHUSER_PAGECACHE\n\nGFP_HIGHUSER_PAGECACHE is just an alias for GFP_HIGHUSER_MOVABLE, making\nthat harder to track down: remove it, and its out-of-work brothers\nGFP_NOFS_PAGECACHE and GFP_USER_PAGECACHE.\n\nSince we\u0027re making that improvement to hotremove_migrate_alloc(), I think\nwe can now also remove one of the \"o\"s from its comment.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nAcked-by: Mel Gorman \u003cmel@csn.ul.ie\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": "e5991371ee0d1c0ce19e133c6f9075b49c5b4ae8",
      "tree": "3e5c9c3293c025f537ff4416660a96d33c694b5f",
      "parents": [
        "39f0dee2d8abe902617622b71f8f6f73985ec71c"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:39:22 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm: remove cgroup_mm_owner_callbacks\n\ncgroup_mm_owner_callbacks() was brought in to support the memrlimit\ncontroller, but sneaked into mainline ahead of it.  That controller has\nnow been shelved, and the mm_owner_changed() args were inadequate for it\nanyway (they needed an mm pointer instead of a task pointer).\n\nRemove the dead code, and restore mm_update_next_owner() locking to how it\nwas before: taking mmap_sem there does nothing for memcontrol.c, now the\nonly user of mm-\u003eowner.\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Paul Menage \u003cmenage@google.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "39f0dee2d8abe902617622b71f8f6f73985ec71c",
      "tree": "95847d8fa625b1d23c9f04ddf2b2a430f63d4422",
      "parents": [
        "38e0edb15bd07c6a0caf0cfe39f8f90bd98601b2"
      ],
      "author": {
        "name": "Franck Bui-Huu",
        "email": "fbuihuu@gmail.com",
        "time": "Tue Jan 06 14:39:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "do_mpage_readpage(): remove useless clear_buffer_mapped() call\n\nIt is known that buffer_mapped() is false in this code path.\n\nSigned-off-by: Franck Bui-Huu \u003cfbuihuu@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": "38e0edb15bd07c6a0caf0cfe39f8f90bd98601b2",
      "tree": "1ba874020bb20412ba312abef199a8668c5b99a6",
      "parents": [
        "cd52858c73f9f7df859a08fb08496ca39b9b3d8d"
      ],
      "author": {
        "name": "Jeremy Fitzhardinge",
        "email": "jeremy@goop.org",
        "time": "Tue Jan 06 14:39:21 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm/apply_to_range: call pte function with lazy updates\n\nMake the pte-level function in apply_to_range be called in lazy mmu mode,\nso that any pagetable modifications can be batched.\n\nSigned-off-by: Jeremy Fitzhardinge \u003cjeremy.fitzhardinge@citrix.com\u003e\nCc: Johannes Weiner \u003channes@cmpxchg.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Venkatesh Pallipadi \u003cvenkatesh.pallipadi@intel.com\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cd52858c73f9f7df859a08fb08496ca39b9b3d8d",
      "tree": "c8c3d8e641484618f44dcf3b7d55ba4d42c90750",
      "parents": [
        "e97a630eb0f5b8b380fd67504de6cedebb489003"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:20 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm: vmalloc make lazy unmapping configurable\n\nLazy unmapping in the vmalloc code has now opened the possibility for use\nafter free bugs to go undetected.  We can catch those by forcing an unmap\nand flush (which is going to be slow, but that\u0027s what happens).\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": "e97a630eb0f5b8b380fd67504de6cedebb489003",
      "tree": "52e337eafeb386b97630e7ffe2697550e589afc3",
      "parents": [
        "848778483351e90f9a2c587bdbe0c78b17c1e30b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm: vmalloc use mutex for purge\n\nThe vmalloc purge lock can be a mutex so we can sleep while a purge is\ngoing on (purge involves a global kernel TLB invalidate, so it can take\nquite a while).\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": "848778483351e90f9a2c587bdbe0c78b17c1e30b",
      "tree": "9248871a3e40b68a709bf69efeaf5c52cb45cbd1",
      "parents": [
        "c1279c4ef37a06ba708e6b1f6fd98b45c52770f6"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@redhat.com",
        "time": "Tue Jan 06 14:39:19 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm: vmalloc improve vmallocinfo\n\nIf we do that, output of files like /proc/vmallocinfo will show things\nlike \"vmalloc_32\", \"vmalloc_user\", or whomever the caller was as the\ncaller.  This info is not as useful as the real caller of the allocation.\n\nSo, proposal is to call __vmalloc_node node directly, with matching\nparameters to save the caller information\n\nSigned-off-by: Glauber Costa \u003cglommer@redhat.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c1279c4ef37a06ba708e6b1f6fd98b45c52770f6",
      "tree": "75c54b8d7e2733d3de052eaab7700ff6fe9a9e74",
      "parents": [
        "4917e5d0499b5ae7b26b56fccaefddf9aec9369c"
      ],
      "author": {
        "name": "Glauber Costa",
        "email": "glommer@redhat.com",
        "time": "Tue Jan 06 14:39:18 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:01 2009 -0800"
      },
      "message": "mm: vmalloc tweak failure printk\n\nIf we can\u0027t service a vmalloc allocation, show size of the allocation that\nactually failed.  Useful for debugging.\n\nSigned-off-by: Glauber Costa \u003cglommer@redhat.com\u003e\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4917e5d0499b5ae7b26b56fccaefddf9aec9369c",
      "tree": "78f55c2d3019d1811b5447cae130c0f647916a37",
      "parents": [
        "64cdd548ffe26849d4cd113ac640f60606063b14"
      ],
      "author": {
        "name": "Johannes Weiner",
        "email": "hannes@cmpxchg.org",
        "time": "Tue Jan 06 14:39:17 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: more likely reclaim MADV_SEQUENTIAL mappings\n\nFile pages mapped only in sequentially read mappings are perfect reclaim\ncanditates.\n\nThis patch makes these mappings behave like weak references, their pages\nwill be reclaimed unless they have a strong reference from a normal\nmapping as well.\n\nIt changes the reclaim and the unmap path where they check if the page has\nbeen referenced.  In both cases, accesses through sequentially read\nmappings will be ignored.\n\nBenchmark results from KOSAKI Motohiro:\n\n    http://marc.info/?l\u003dlinux-mm\u0026m\u003d122485301925098\u0026w\u003d2\n\nSigned-off-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Rik van Riel \u003criel@redhat.com\u003e\nAcked-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: 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": "64cdd548ffe26849d4cd113ac640f60606063b14",
      "tree": "9a7a8af9022621d2da3648757b724fcd32b20168",
      "parents": [
        "1b0bd118862cd9fe9ac2872137a1b8107e83ff9d"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:16 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: cleanup: remove #ifdef CONFIG_MIGRATION\n\n#ifdef in *.c file decrease source readability a bit.  removing is better.\n\nThis patch doesn\u0027t have any functional change.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b0bd118862cd9fe9ac2872137a1b8107e83ff9d",
      "tree": "2bd59ee95762164d4e98bbafd251e3abd31c2af1",
      "parents": [
        "5594c8c813d9e907ff55da7080d42653478b73e8"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Tue Jan 06 14:39:15 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: get rid of pagevec_release_nonlru()\n\nspeculative page references patch (commit:\ne286781d5f2e9c846e012a39653a166e9d31777d) removed last\npagevec_release_nonlru() caller.\n\nSo this function can be removed now.\n\nThis patch doesn\u0027t have any functional change.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: 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": "5594c8c813d9e907ff55da7080d42653478b73e8",
      "tree": "c10347380fa5e1358d9354ee7e8f3f24b0d18535",
      "parents": [
        "c04fc586c1a480ba198f03ae7b6cbd7b57380b91"
      ],
      "author": {
        "name": "Yinghai Lu",
        "email": "yinghai@kernel.org",
        "time": "Tue Jan 06 14:39:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: print out memmap number only if it is not zero\n\nDon\u0027t print the size of the zone\u0027s memmap array if it does not have one.\n\nImpact: cleanup\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Mel Gorman \u003cmel@csn.ul.ie\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c04fc586c1a480ba198f03ae7b6cbd7b57380b91",
      "tree": "9d6544a3b62cc01dbcbb1e315b84378b45ba86d2",
      "parents": [
        "ee53a891f47444c53318b98dac947ede963db400"
      ],
      "author": {
        "name": "Gary Hade",
        "email": "garyhade@us.ibm.com",
        "time": "Tue Jan 06 14:39:14 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: show node to memory section relationship with symlinks in sysfs\n\nShow node to memory section relationship with symlinks in sysfs\n\nAdd /sys/devices/system/node/nodeX/memoryY symlinks for all\nthe memory sections located on nodeX.  For example:\n/sys/devices/system/node/node1/memory135 -\u003e ../../memory/memory135\nindicates that memory section 135 resides on node1.\n\nAlso revises documentation to cover this change as well as updating\nDocumentation/ABI/testing/sysfs-devices-memory to include descriptions\nof memory hotremove files \u0027phys_device\u0027, \u0027phys_index\u0027, and \u0027state\u0027\nthat were previously not described there.\n\nIn addition to it always being a good policy to provide users with\nthe maximum possible amount of physical location information for\nresources that can be hot-added and/or hot-removed, the following\nare some (but likely not all) of the user benefits provided by\nthis change.\nImmediate:\n  - Provides information needed to determine the specific node\n    on which a defective DIMM is located.  This will reduce system\n    downtime when the node or defective DIMM is swapped out.\n  - Prevents unintended onlining of a memory section that was\n    previously offlined due to a defective DIMM.  This could happen\n    during node hot-add when the user or node hot-add assist script\n    onlines _all_ offlined sections due to user or script inability\n    to identify the specific memory sections located on the hot-added\n    node.  The consequences of reintroducing the defective memory\n    could be ugly.\n  - Provides information needed to vary the amount and distribution\n    of memory on specific nodes for testing or debugging purposes.\nFuture:\n  - Will provide information needed to identify the memory\n    sections that need to be offlined prior to physical removal\n    of a specific node.\n\nSymlink creation during boot was tested on 2-node x86_64, 2-node\nppc64, and 2-node ia64 systems.  Symlink creation during physical\nmemory hot-add tested on a 2-node x86_64 system.\n\nSigned-off-by: Gary Hade \u003cgaryhade@us.ibm.com\u003e\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ee53a891f47444c53318b98dac947ede963db400",
      "tree": "57cec3b7aadb120b5a2857bd212159a693a379f2",
      "parents": [
        "82fd1a9a8ced9607312b54859572bcc6211e8919"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: do_sync_mapping_range integrity fix\n\nChris Mason notices do_sync_mapping_range didn\u0027t actually ask for data\nintegrity writeout.  Unfortunately, it is advertised as being usable for\ndata integrity operations.\n\nThis is a data integrity bug.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "82fd1a9a8ced9607312b54859572bcc6211e8919",
      "tree": "fc537a866c670a4c54895a7f75b5ccfbdeeb034c",
      "parents": [
        "d5482cdf8a0aacb1e6468a97d5544f5829c8d8c4"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Tue Jan 06 14:39:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: write_cache_pages more terminate quickly\n\nNow that we have the early-termination logic in place, it makes sense to\nbail out early in all other cases where done is set to 1.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d5482cdf8a0aacb1e6468a97d5544f5829c8d8c4",
      "tree": "3565702c805deecd51e32ed1458f567a0064815d",
      "parents": [
        "515f4a037fb9ab736f8bad733fcd2ffd350cf265"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:11 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:00 2009 -0800"
      },
      "message": "mm: write_cache_pages terminate quickly\n\nTerminate the write_cache_pages loop upon encountering the first page past\nend, without locking the page.  Pages cannot have their index change when\nwe have a reference on them (truncate, eg truncate_inode_pages_range\nperforms the same check without the page lock).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "515f4a037fb9ab736f8bad733fcd2ffd350cf265",
      "tree": "0862eee6405297ef23a5b3d8906cfef5783c0c77",
      "parents": [
        "5a3d5c9813db56a75934eb1015367fda23a8b0b4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:10 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "mm: write_cache_pages optimise page cleaning\n\nIn write_cache_pages, if we get stuck behind another process that is\ncleaning pages, we will be forced to wait for them to finish, then perform\nour own writeout (if it was redirtied during the long wait), then wait for\nthat.\n\nIf a page under writeout is still clean, we can skip waiting for it (if\nwe\u0027re part of a data integrity sync, we\u0027ll be waiting for all writeout\npages afterwards, so we\u0027ll still be waiting for the other guy\u0027s write\nthat\u0027s cleaned the page).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5a3d5c9813db56a75934eb1015367fda23a8b0b4",
      "tree": "656b43b3982a6513467e9a3191377429bb9f45f1",
      "parents": [
        "05fe478dd04e02fa230c305ab9b5616669821dd3"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:09 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "mm: write_cache_pages cleanups\n\nGet rid of some complex expressions from flow control statements, add a\ncomment, remove some duplicate code.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "05fe478dd04e02fa230c305ab9b5616669821dd3",
      "tree": "9b551aad196b66e5c773ed7619386a1bb5e14f41",
      "parents": [
        "00266770b8b3a6a77f896ca501a0613739086832"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:08 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "mm: write_cache_pages integrity fix\n\nIn write_cache_pages, nr_to_write is heeded even for data-integrity syncs,\nso the function will return success after writing out nr_to_write pages,\neven if that was not sufficient to guarantee data integrity.\n\nThe callers tend to set it to values that could break data interity\nsemantics easily in practice.  For example, nr_to_write can be set to\nmapping-\u003enr_pages * 2, however if a file has a single, dirty page, then\nfsync is called, subsequent pages might be concurrently added and dirtied,\nthen write_cache_pages might writeout two of these newly dirty pages,\nwhile not writing out the old page that should have been written out.\n\nFix this by ignoring nr_to_write if it is a data integrity sync.\n\nThis is a data integrity bug.\n\nThe reason this has been done in the past is to avoid stalling sync\noperations behind page dirtiers.\n\n \"If a file has one dirty page at offset 1000000000000000 then someone\n  does an fsync() and someone else gets in first and starts madly writing\n  pages at offset 0, we want to write that page at 1000000000000000.\n  Somehow.\"\n\nWhat we do today is return success after an arbitrary amount of pages are\nwritten, whether or not we have provided the data-integrity semantics that\nthe caller has asked for.  Even this doesn\u0027t actually fix all stall cases\ncompletely: in the above situation, if the file has a huge number of pages\nin pagecache (but not dirty), then mapping-\u003enrpages is going to be huge,\neven if pages are being dirtied.\n\nThis change does indeed make the possibility of long stalls lager, and\nthat\u0027s not a good thing, but lying about data integrity is even worse.  We\nhave to either perform the sync, or return -ELINUXISLAME so at least the\ncaller knows what has happened.\n\nThere are subsequent competing approaches in the works to solve the stall\nproblems properly, without compromising data integrity.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "00266770b8b3a6a77f896ca501a0613739086832",
      "tree": "e10b01330e928b6d3eaa1040560fe133ddba6654",
      "parents": [
        "bd19e012f6fd3b7309689165ea865cbb7bb88c1e"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "mm: write_cache_pages writepage error fix\n\nIn write_cache_pages, if ret signals a real error, but we still have some\npages left in the pagevec, done would be set to 1, but the remaining pages\nwould continue to be processed and ret will be overwritten in the process.\n\nIt could easily be overwritten with success, and thus success will be\nreturned even if there is an error.  Thus the caller is told all writes\nsucceeded, wheras in reality some did not.\n\nFix this by bailing immediately if there is an error, and retaining the\nfirst error code.\n\nThis is a data integrity bug.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bd19e012f6fd3b7309689165ea865cbb7bb88c1e",
      "tree": "66ca4f5bfc683d2935e7fc5cab2f57a7682ad65a",
      "parents": [
        "31a12666d8f0c22235297e1c1575f82061480029"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "mm: write_cache_pages early loop termination\n\nWe\u0027d like to break out of the loop early in many situations, however the\nexisting code has been setting mapping-\u003ewriteback_index past the final\npage in the pagevec lookup for cyclic writeback.  This is a problem if we\ndon\u0027t process all pages up to the final page.\n\nCurrently the code mostly keeps writeback_index reasonable and hacked\naround this by not breaking out of the loop or writing pages outside the\nrange in these cases.  Keep track of a real \"done index\" that enables us\nto terminate the loop in a much more flexible manner.\n\nNeeded by the subsequent patch to preserve writepage errors, and then\nfurther patches to break out of the loop early for other reasons.  However\nthere are no functional changes with this patch alone.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "31a12666d8f0c22235297e1c1575f82061480029",
      "tree": "89106848d2072278cc9338b091ad059db460420f",
      "parents": [
        "38c8e6180939e5619140b2e9e479cb26029ff8b1"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:39:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "mm: write_cache_pages cyclic fix\n\nIn write_cache_pages, scanned \u003d\u003d 1 is supposed to mean that cyclic\nwriteback has circled through zero, thus we should not circle again.\nHowever it gets set to 1 after the first successful pagevec lookup.  This\nleads to cases where not enough data gets written.\n\nCounterexample: file with first 10 pages dirty, writeback_index \u003d\u003d 5,\nnr_to_write \u003d\u003d 10.  Then the 5 last pages will be found, and scanned will\nbe set to 1, after writing those out, we will not cycle back to get the\nfirst 5.\n\nRework this logic, now we\u0027ll always cycle unless we started off from index\n0.  When cycling, only write out as far as 1 page before the start page\nfrom the first cycle (so we don\u0027t write parts of the file twice).\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "38c8e6180939e5619140b2e9e479cb26029ff8b1",
      "tree": "1980f3dadfa02ac6c1fc2ad7236205af54f7972a",
      "parents": [
        "75aa199410359dc5fbcf9025ff7af98a9d20f0d5"
      ],
      "author": {
        "name": "Miquel van Smoorenburg",
        "email": "mikevs@xs4all.net",
        "time": "Tue Jan 06 14:39:02 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "do_mpage_readpage(): don\u0027t submit lots of small bios on boundary\n\nWhile tracing I/O patterns with blktrace (a great tool) a few weeks ago I\nidentified a minor issue in fs/mpage.c\n\nAs the comment above mpage_readpages() says, a fs\u0027s get_block function\nwill set BH_Boundary when it maps a block just before a block for which\nextra I/O is required.\n\nSince get_block() can map a range of pages, for all these pages the\nBH_Boundary flag will be set.  But we only need to push what I/O we have\naccumulated at the last block of this range.\n\nThis makes do_mpage_readpage() send out the largest possible bio instead\nof a bunch of page-sized ones in the BH_Boundary case.\n\nSigned-off-by: Miquel van Smoorenburg \u003cmikevs@xs4all.net\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "75aa199410359dc5fbcf9025ff7af98a9d20f0d5",
      "tree": "569bffa181ccba56d884ec7e826ae61384297f56",
      "parents": [
        "c7d4caeb1d68d07f77cc09fc20b7759d6d7aa3b1"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:59 2009 -0800"
      },
      "message": "oom: print triggering task\u0027s cpuset and mems allowed\n\nWhen cpusets are enabled, it\u0027s necessary to print the triggering task\u0027s\nset of allowable nodes so the subsequently printed meminfo can be\ninterpreted correctly.\n\nWe also print the task\u0027s cpuset name for informational purposes.\n\n[rientjes@google.com: task lock current before dereferencing cpuset]\nCc: Paul Menage \u003cmenage@google.com\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": "c7d4caeb1d68d07f77cc09fc20b7759d6d7aa3b1",
      "tree": "5348580e30f4ce2e5a10376bb5951ff94b8fb616",
      "parents": [
        "1c0fe6e3bda0464728c23c8d84aa47567e8b716c"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Tue Jan 06 14:39:00 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "oom: fix zone_scan_mutex name\n\nzone_scan_mutex is actually a spinlock, so name it appropriately.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nReviewed-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1c0fe6e3bda0464728c23c8d84aa47567e8b716c",
      "tree": "64f7903ee7757b14464e8a06bf91f5c4d5a8ba56",
      "parents": [
        "5bd1455c239672081d0e7f086e899b8cbc7a9844"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:38:59 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: invoke oom-killer from page fault\n\nRather than have the pagefault handler kill a process directly if it gets\na VM_FAULT_OOM, have it call into the OOM killer.\n\nWith increasingly sophisticated oom behaviour (cpusets, memory cgroups,\noom killing throttling, oom priority adjustment or selective disabling,\npanic on oom, etc), it\u0027s silly to unconditionally kill the faulting\nprocess at page fault time.  Create a hook for pagefault oom path to call\ninto instead.\n\nOnly converted x86 and uml so far.\n\n[akpm@linux-foundation.org: make __out_of_memory() static]\n[akpm@linux-foundation.org: fix comment]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5bd1455c239672081d0e7f086e899b8cbc7a9844",
      "tree": "0ec4718a425c0bba91344f5be9810593ad4c6b3c",
      "parents": [
        "3140a2273009c01c27d316f35ab76a37e105fdd8"
      ],
      "author": {
        "name": "Brice Goglin",
        "email": "Brice.Goglin@inria.fr",
        "time": "Tue Jan 06 14:38:58 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: move_pages: no need to set pp-\u003epage to ZERO_PAGE(0) by default\n\npp-\u003epage is never used when not set to the right page, so there is no need\nto set it to ZERO_PAGE(0) by default.\n\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@inria.fr\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3140a2273009c01c27d316f35ab76a37e105fdd8",
      "tree": "25d4f805dbf72a9491bc146bb77418ef507d21bf",
      "parents": [
        "390722baa7fc447b0a4f0c3c3f537ed056dbc944"
      ],
      "author": {
        "name": "Brice Goglin",
        "email": "Brice.Goglin@inria.fr",
        "time": "Tue Jan 06 14:38:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: rework do_pages_move() to work on page_sized chunks\n\nRework do_pages_move() to work by page-sized chunks of struct page_to_node\nthat are passed to do_move_page_to_node_array().  We now only have to\nallocate a single page instead a possibly very large vmalloc area to store\nall page_to_node entries.\n\nAs a result, new_page_node() will now have a very small lookup, hidding\nmuch of the overall sys_move_pages() overhead.\n\nSigned-off-by: Brice Goglin \u003cBrice.Goglin@inria.fr\u003e\nSigned-off-by: Nathalie Furmento \u003cNathalie.Furmento@labri.fr\u003e\nAcked-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "390722baa7fc447b0a4f0c3c3f537ed056dbc944",
      "tree": "7cdcf1fb968691cf9eaa52ce13813cba6ca24ee2",
      "parents": [
        "bf3f3bc5e734706730c12a323f9b2068052aa1f0"
      ],
      "author": {
        "name": "Hugh Dickins",
        "email": "hugh@veritas.com",
        "time": "Tue Jan 06 14:38:57 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: don\u0027t mark_page_accessed in shmem_fault\n\nFollowing \"mm: don\u0027t mark_page_accessed in fault path\", which now\nplaces a mark_page_accessed() in zap_pte_range(), we should remove\nthe mark_page_accessed() from shmem_fault().\n\nSigned-off-by: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "bf3f3bc5e734706730c12a323f9b2068052aa1f0",
      "tree": "d93fb6beb0916cc10aeb5674578bfa3ac40371c9",
      "parents": [
        "3340289ddf29ca75c3acfb3a6b72f234b2f74d5c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jan 06 14:38:55 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: don\u0027t mark_page_accessed in fault path\n\nDoing a mark_page_accessed at fault-time, then doing SetPageReferenced at\nunmap-time if the pte is young has a number of problems.\n\nmark_page_accessed is supposed to be roughly the equivalent of a young pte\nfor unmapped references. Unfortunately it doesn\u0027t come with any context:\nafter being called, reclaim doesn\u0027t know who or why the page was touched.\n\nSo calling mark_page_accessed not only adds extra lru or PG_referenced\nmanipulations for pages that are already going to have pte_young ptes anyway,\nbut it also adds these references which are difficult to work with from the\ncontext of vma specific references (eg. MADV_SEQUENTIAL pte_young may not\nwish to contribute to the page being referenced).\n\nThen, simply doing SetPageReferenced when zapping a pte and finding it is\nyoung, is not a really good solution either. SetPageReferenced does not\ncorrectly promote the page to the active list for example. So after removing\nmark_page_accessed from the fault path, several mmap()+touch+munmap() would\nhave a very different result from several read(2) calls for example, which\nis not really desirable.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Johannes Weiner \u003channes@saeurebad.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3340289ddf29ca75c3acfb3a6b72f234b2f74d5c",
      "tree": "d5da94eb1cb0146160fcb0e7aa161bfa5b6ac807",
      "parents": [
        "08fba69986e20c1c9e5fe2e6064d146cc4f42480"
      ],
      "author": {
        "name": "Mel Gorman",
        "email": "mel@csn.ul.ie",
        "time": "Tue Jan 06 14:38:54 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:58:58 2009 -0800"
      },
      "message": "mm: report the MMU pagesize in /proc/pid/smaps\n\nThe KernelPageSize entry in /proc/pid/smaps is the pagesize used by the\nkernel to back a VMA.  This matches the size used by the MMU in the\nmajority of cases.  However, one counter-example occurs on PPC64 kernels\nwhereby a kernel using 64K as a base pagesize may still use 4K pages for\nthe MMU on older processor.  To distinguish, this patch reports\nMMUPageSize as the pagesize used by the MMU in /proc/pid/smaps.\n\nSigned-off-by: Mel Gorman \u003cmel@csn.ul.ie\u003e\nCc: \"KOSAKI Motohiro\" \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "08fba69986e20c1c9e5fe2e6064d146cc4f42480"
}
