)]}'
{
  "log": [
    {
      "commit": "0643245f595dc175c14245fa1e1e9efda3e12f2a",
      "tree": "435ef9643091618f351f6e4931d7f8b38f15efaa",
      "parents": [
        "d0bcabcd72dda5f553322a1ca92ae31c15b408b6"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Fri Feb 29 22:03:15 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 03 10:47:14 2008 -0800"
      },
      "message": "docbook: fix kernel-api source files\n\nFix docbook problems in kernel-api.tmpl.\nThese cause the generated docbook to be incorrect.\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "62e1c55300f306e06478f460a7eefba085206e0b",
      "tree": "be15b2e4801c837c5e20d43b8f29a53c0ba1391c",
      "parents": [
        "7786fa9ac5366214fb942a9e62c6e46b4272c22c"
      ],
      "author": {
        "name": "Shaohua Li",
        "email": "shaohua.li@intel.com",
        "time": "Mon Feb 04 22:29:33 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "page migraton: handle orphaned pages\n\nOrphaned page might have fs-private metadata, the page is truncated.  As\nthe page hasn\u0027t mapping, page migration refuse to migrate the page.  It\nappears the page is only freed in page reclaim and if zone watermark is\nlow, the page is never freed, as a result migration always fail.  I thought\nwe could free the metadata so such page can be freed in migration and make\nmigration more reliable.\n\n[akpm@linux-foundation.org: go direct to try_to_free_buffers()]\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nAcked-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a2b345642f530054a92b8d2b5108436225a8093e",
      "tree": "9be466168baf0fb0c57504e9fe87aec07f09445a",
      "parents": [
        "ae1276b9349a2fd9c3afb4651e25a77ac03299d9"
      ],
      "author": {
        "name": "Bjorn Steinbrink",
        "email": "B.Steinbrink@gmx.de",
        "time": "Mon Feb 04 22:29:28 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:19 2008 -0800"
      },
      "message": "Fix dirty page accounting leak with ext3 data\u003djournal\n\nIn 46d2277c796f9f4937bfa668c40b2e3f43e93dd0 (\"Clean up and make\ntry_to_free_buffers() not race with dirty pages\"), try_to_free_buffers\nwas changed to bail out if the page was dirty.\n\nThat in turn caused truncate_complete_page to leak massive amounts of\nmemory, because the dirty bit was only cleared after the call to\ntry_to_free_buffers.\n\nSo the call to cancel_dirty_page was moved up to have the dirty bit\ncleared early in 3e67c0987d7567ad666641164a153dca9a43b11d (\"truncate:\nclear page dirtiness before running try_to_free_buffers()\").\n\nThe problem with that fix is, that the page can be redirtied after\ncancel_dirty_page was called, eg. like this:\n\ntruncate_complete_page()\n  cancel_dirty_page() // PG_dirty cleared, decr. dirty pages\n  do_invalidatepage()\n    ext3_invalidatepage()\n      journal_invalidatepage()\n        journal_unmap_buffer()\n          __dispose_buffer()\n            __journal_unfile_buffer()\n              __journal_temp_unlink_buffer()\n                mark_buffer_dirty(); // PG_dirty set, incr. dirty pages\n\nAnd then we end up with dirty pages being wrongly accounted.\n\nAs a result, in ecdfc9787fe527491baefc22dce8b2dbd5b2908d (\"Resurrect\n\u0027try_to_free_buffers()\u0027 VM hackery\") the changes to try_to_free_buffers\nwere reverted, so the original reason for the massive memory leak is\ngone, and we can also revert the move of the call to cancel_dirty_page\nfrom truncate_complete_page and get the accounting right again.\n\nI\u0027m not sure if it matters, but opposed to the final check in\n__remove_from_page_cache, this one also cares about the task io\naccounting, so maybe we want to use this instead, although it\u0027s not\nquite the clean fix either.\n\nSigned-off-by: Björn Steinbrink \u003cB.Steinbrink@gmx.de\u003e\nTested-by: Krzysztof Piotr Oledzki \u003cole@ans.pl\u003e\nCc: Jan Kara \u003cjack@ucw.cz\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Osterried \u003costerried@jesse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "eebd2aa355692afaf9906f62118620f1a1c19dbb",
      "tree": "207eead3a736963c3e50942038c463f2f611ccce",
      "parents": [
        "b98348bdd08dc4ec11828aa98a78edde15c53cfa"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Mon Feb 04 22:28:29 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 05 09:44:13 2008 -0800"
      },
      "message": "Pagecache zeroing: zero_user_segment, zero_user_segments and zero_user\n\nSimplify page cache zeroing of segments of pages through 3 functions\n\nzero_user_segments(page, start1, end1, start2, end2)\n\n        Zeros two segments of the page. It takes the position where to\n        start and end the zeroing which avoids length calculations and\n\tmakes code clearer.\n\nzero_user_segment(page, start, end)\n\n        Same for a single segment.\n\nzero_user(page, start, length)\n\n        Length variant for the case where we know the length.\n\nWe remove the zero_user_page macro. Issues:\n\n1. Its a macro. Inline functions are preferable.\n\n2. The KM_USER0 macro is only defined for HIGHMEM.\n\n   Having to treat this special case everywhere makes the\n   code needlessly complex. The parameter for zeroing is always\n   KM_USER0 except in one single case that we open code.\n\nAvoiding KM_USER0 makes a lot of code not having to be dealing\nwith the special casing for HIGHMEM anymore. Dealing with\nkmap is only necessary for HIGHMEM configurations. In those\nconfigurations we use KM_USER0 like we do for a series of other\nfunctions defined in highmem.h.\n\nSince KM_USER0 is depends on HIGHMEM the existing zero_user_page\nfunction could not be a macro. zero_user_* functions introduced\nhere can be be inline because that constant is not used when these\nfunctions are called.\n\nAlso extract the flushing of the caches to be outside of the kmap.\n\n[akpm@linux-foundation.org: fix nfs and ntfs build]\n[akpm@linux-foundation.org: fix ntfs build some more]\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nCc: \"J. Bruce Fields\" \u003cbfields@fieldses.org\u003e\nCc: Anton Altaparmakov \u003caia21@cantab.net\u003e\nCc: Mark Fasheh \u003cmark.fasheh@oracle.com\u003e\nCc: David Chinner \u003cdgc@sgi.com\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nCc: Steven French \u003csfrench@us.ibm.com\u003e\nCc: Steven Whitehouse \u003cswhiteho@redhat.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "28bc44d7d1d967b8251214dd7a130d523b5ba5ee",
      "tree": "74c972b9eac534644dfa5b944b718c3acd0532bc",
      "parents": [
        "3eb43f689cef73c7c62bcaf90d7dc75a6182d2bd"
      ],
      "author": {
        "name": "Fengguang Wu",
        "email": "wfg@mail.ustc.edu.cn",
        "time": "Sun Feb 03 18:04:10 2008 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Sun Feb 03 18:04:10 2008 +0200"
      },
      "message": "do_invalidatepage() comment typo fix\n\nFix a typo in the comment for do_invalidatepage().\n\nSigned-off-by: Fengguang Wu \u003cwfg@mail.ustc.edu.cn\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\n"
    },
    {
      "commit": "4af3c9cc4fad54c3627e9afebf905aafde5690ed",
      "tree": "655364e458b8734a86c632316f4b5a1518529c60",
      "parents": [
        "1a614f505193fcfc1b298643268a5db5b48e297f"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Tue Oct 16 23:29:23 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:55 2007 -0700"
      },
      "message": "Drop some headers from mm.h\n\nmm.h doesn\u0027t use directly anything from mutex.h and backing-dev.h, so\nremove them and add them back to files which need them.\n\nCross-compile tested on many configs and archs.\n\nSigned-off-by: 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"
    },
    {
      "commit": "c9e51e4180696aa67915ec5665e4ec74125565de",
      "tree": "d66e1427b16e56bc7da0dfb583a6d8edb55a2c3e",
      "parents": [
        "b2e8fb6efa209c82203c79b491b5bc952d44aa57"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue Oct 16 23:25:47 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:42:45 2007 -0700"
      },
      "message": "mm: count reclaimable pages per BDI\n\nCount per BDI reclaimable pages; nr_reclaimable \u003d nr_dirty + nr_unstable.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54cb8821de07f2ffcd28c380ce9b93d5784b40d7",
      "tree": "1de676534963d96af42863b20191bc9f80060dea",
      "parents": [
        "d00806b183152af6d24f46f0c33f14162ca1262a"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: merge populate and nopage into fault (fixes nonlinear)\n\nNonlinear mappings are (AFAIKS) simply a virtual memory concept that encodes\nthe virtual address -\u003e file offset differently from linear mappings.\n\n-\u003epopulate is a layering violation because the filesystem/pagecache code\nshould need to know anything about the virtual memory mapping.  The hitch here\nis that the -\u003enopage handler didn\u0027t pass down enough information (ie.  pgoff).\n But it is more logical to pass pgoff rather than have the -\u003enopage function\ncalculate it itself anyway (because that\u0027s a similar layering violation).\n\nHaving the populate handler install the pte itself is likewise a nasty thing\nto be doing.\n\nThis patch introduces a new fault handler that replaces -\u003enopage and\n-\u003epopulate and (later) -\u003enopfn.  Most of the old mechanism is still in place\nso there is a lot of duplication and nice cleanups that can be removed if\neveryone switches over.\n\nThe rationale for doing this in the first place is that nonlinear mappings are\nsubject to the pagefault vs invalidate/truncate race too, and it seemed stupid\nto duplicate the synchronisation logic rather than just consolidate the two.\n\nAfter this patch, MAP_NONBLOCK no longer sets up ptes for pages present in\npagecache.  Seems like a fringe functionality anyway.\n\nNOPAGE_REFAULT is removed.  This should be implemented with -\u003efault, and no\nusers have hit mainline yet.\n\n[akpm@linux-foundation.org: cleanup]\n[randy.dunlap@oracle.com: doc. fixes for readahead]\n[akpm@linux-foundation.org: build fix]\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Mark Fasheh \u003cmark.fasheh@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": "d00806b183152af6d24f46f0c33f14162ca1262a",
      "tree": "36f829cf13d5410374a3f00b56ec0b1f8dc3ce3c",
      "parents": [
        "589f1e81bde732dd0b1bc5d01b6bddd4bcb4527b"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Thu Jul 19 01:46:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:41 2007 -0700"
      },
      "message": "mm: fix fault vs invalidate race for linear mappings\n\nFix the race between invalidate_inode_pages and do_no_page.\n\nAndrea Arcangeli identified a subtle race between invalidation of pages from\npagecache with userspace mappings, and do_no_page.\n\nThe issue is that invalidation has to shoot down all mappings to the page,\nbefore it can be discarded from the pagecache.  Between shooting down ptes to\na particular page, and actually dropping the struct page from the pagecache,\ndo_no_page from any process might fault on that page and establish a new\nmapping to the page just before it gets discarded from the pagecache.\n\nThe most common case where such invalidation is used is in file truncation.\nThis case was catered for by doing a sort of open-coded seqlock between the\nfile\u0027s i_size, and its truncate_count.\n\nTruncation will decrease i_size, then increment truncate_count before\nunmapping userspace pages; do_no_page will read truncate_count, then find the\npage if it is within i_size, and then check truncate_count under the page\ntable lock and back out and retry if it had subsequently been changed (ptl\nwill serialise against unmapping, and ensure a potentially updated\ntruncate_count is actually visible).\n\nComplexity and documentation issues aside, the locking protocol fails in the\ncase where we would like to invalidate pagecache inside i_size.  do_no_page\ncan come in anytime and filemap_nopage is not aware of the invalidation in\nprogress (as it is when it is outside i_size).  The end result is that\ndangling (-\u003emapping \u003d\u003d NULL) pages that appear to be from a particular file\nmay be mapped into userspace with nonsense data.  Valid mappings to the same\nplace will see a different page.\n\nAndrea implemented two working fixes, one using a real seqlock, another using\na page-\u003eflags bit.  He also proposed using the page lock in do_no_page, but\nthat was initially considered too heavyweight.  However, it is not a global or\nper-file lock, and the page cacheline is modified in do_no_page to increment\n_count and _mapcount anyway, so a further modification should not be a large\nperformance hit.  Scalability is not an issue.\n\nThis patch implements this latter approach.  -\u003enopage implementations return\nwith the page locked if it is possible for their underlying file to be\ninvalidated (in that case, they must set a special vm_flags bit to indicate\nso).  do_no_page only unlocks the page after setting up the mapping\ncompletely.  invalidation is excluded because it holds the page lock during\ninvalidation of each page (and ensures that the page is not mapped while\nholding the lock).\n\nThis also allows significant simplifications in do_no_page, because we have\nthe page locked in the right place in the pagecache from the start.\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": "787d2214c19bcc9b6ac48af0ce098277a801eded",
      "tree": "a040604fdf9620a66dc83a0cde4f2140e2ec25b3",
      "parents": [
        "a1ed3dda0ad181532f1e0f0d548067fb9fdddac4"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Jul 17 04:03:34 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:02 2007 -0700"
      },
      "message": "fs: introduce some page/buffer invariants\n\nIt is a bug to set a page dirty if it is not uptodate unless it has\nbuffers.  If the page has buffers, then the page may be dirty (some buffers\ndirty) but not uptodate (some buffers not uptodate).  The exception to this\nrule is if the set_page_dirty caller is racing with truncate or invalidate.\n\nA buffer can not be set dirty if it is not uptodate.\n\nIf either of these situations occurs, it indicates there could be some data\nloss problem.  Some of these warnings could be a harmless one where the\npage or buffer is set uptodate immediately after it is dirtied, however we\nshould fix those up, and enforce this ordering.\n\nBring the order of operations for truncate into line with those of\ninvalidate.  This will prevent a page from being able to go !uptodate while\nwe\u0027re holding the tree_lock, which is probably a good thing anyway.\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": "fc9a07e7bf1a76e710f5df017abb07628db1781d",
      "tree": "bf2a288f97cbf9cfd82a4306a7d9c615abc7c887",
      "parents": [
        "45426812d6b601430d560cb6049757b5b0bc71c4"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Sun Jul 15 23:38:14 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:36 2007 -0700"
      },
      "message": "invalidate_mapping_pages(): add cond_resched\n\ninvalidate_mapping_pages() can sometimes take a long time (millions of pages\nto free).  Long enough for the softlockup detector to trigger.\n\nWe used to have a cond_resched() in there but I took it out because the\ndrop_caches code calls invalidate_mapping_pages() under inode_lock.\n\nThe patch adds a nasty flag and puts the cond_resched() back.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2706a1b89b1a3e7434a668d4a9d15f616da96685",
      "tree": "6b8d8b8d24811c7f8b4593e0b600533f9d5329f6",
      "parents": [
        "553948491c18413928b85a9025b92af80e7d61d6"
      ],
      "author": {
        "name": "Anderson Briglia",
        "email": "briglia.anderson@gmail.com",
        "time": "Sun Jul 15 23:38:09 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Jul 16 09:05:35 2007 -0700"
      },
      "message": "vmscan: fix comments related to shrink_list()\n\nFix the shrink_list name on some files under mm/ directory.\n\nSigned-off-by: Anderson Briglia \u003canderson.briglia@indt.org.br\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "01f2705daf5a36208e69d7cf95db9c330f843af6",
      "tree": "2d2c7a042c2466ed985f6e0950450c099f02725f",
      "parents": [
        "38a23e311b6cd389b9d8af2ea6c28c8cffbe581c"
      ],
      "author": {
        "name": "Nate Diller",
        "email": "nate.diller@gmail.com",
        "time": "Wed May 09 02:35:07 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:55 2007 -0700"
      },
      "message": "fs: convert core functions to zero_user_page\n\nIt\u0027s very common for file systems to need to zero part or all of a page,\nthe simplist way is just to use kmap_atomic() and memset().  There\u0027s\nactually a library function in include/linux/highmem.h that does exactly\nthat, but it\u0027s confusingly named memclear_highpage_flush(), which is\ndescriptive of *how* it does the work rather than what the *purpose* is.\nSo this patchset renames the function to zero_user_page(), and calls it\nfrom the various places that currently open code it.\n\nThis first patch introduces the new function call, and converts all the\ncore kernel callsites, both the open-coded ones and the old\nmemclear_highpage_flush() ones.  Following this patch is a series of\nconversions for each file system individually, per AKPM, and finally a\npatch deprecating the old call.  The diffstat below shows the entire\npatchset.\n\n[akpm@linux-foundation.org: fix a few things]\nSigned-off-by: Nate Diller \u003cnate.diller@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": "7b965e0884cee430ffe5dc81cdb117b9316b0549",
      "tree": "754dce6432258e0a8c3a758e13a34eb3a1d22ee1",
      "parents": [
        "5a39e8c6d655b4fe8305ef8cc2d9bbe782bfee5f"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Feb 28 20:13:55 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 14:53:39 2007 -0800"
      },
      "message": "[PATCH] VM: invalidate_inode_pages2_range() should not exit early\n\nFix invalidate_inode_pages2_range() so that it does not immediately exit\njust because a single page in the specified range could not be removed.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fc0ecff698165ae8e178efa086e0dd1f385206b1",
      "tree": "fc6274f0862bdd6749172201170b2f6a7ce4c4ff",
      "parents": [
        "54bc485522afdac33de5504da2ea8cdcc690674e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Feb 10 01:45:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:31 2007 -0800"
      },
      "message": "[PATCH] remove invalidate_inode_pages()\n\nConvert all calls to invalidate_inode_pages() into open-coded calls to\ninvalidate_mapping_pages().\n\nLeave the invalidate_inode_pages() wrapper in place for now, marked as\ndeprecated.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "54bc485522afdac33de5504da2ea8cdcc690674e",
      "tree": "9f979e7ff693eefaa1c7326c1a2422a699809a77",
      "parents": [
        "5449bc94152a6c4700f46786be600141234d8f0f"
      ],
      "author": {
        "name": "Anton Altaparmakov",
        "email": "aia21@cam.ac.uk",
        "time": "Sat Feb 10 01:45:38 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:30 2007 -0800"
      },
      "message": "[PATCH] Export invalidate_mapping_pages() to modules\n\nIt makes no sense to me to export invalidate_inode_pages() and not\ninvalidate_mapping_pages() and I actually need invalidate_mapping_pages()\nbecause of its range specification ability...\n\nakpm: also remove the export of invalidate_inode_pages() by making it an\ninlined wrapper.\n\nSigned-off-by: Anton Altaparmakov \u003caia21@cantab.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "569d3287c1f2c5d5e9264e89bd2c0f632e7b7dbb",
      "tree": "ed3090026929949a5d7e723e302ef7ecd8be272e",
      "parents": [
        "2a2275d630b982e5f90206f9bc497f6695a3ec5d"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Fri Jan 26 00:57:11 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:51:00 2007 -0800"
      },
      "message": "[PATCH] MM: Remove [PATCH] invalidate_inode_pages2_range() debug\n\nNFS can handle the case where invalidate_inode_pages2_range() fails, so the\npremise behind commit 8258d4a574d3a8c01f0ef68aa26b969398a0e140 is now gone.\n\nRemove the WARN_ON_ONCE() which is causing users grief as we can see from\nhttp://bugzilla.kernel.org/show_bug.cgi?id\u003d7826\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ecdfc9787fe527491baefc22dce8b2dbd5b2908d",
      "tree": "31e7ddac0339498095c40444f81c0b03751434ae",
      "parents": [
        "5ad0d383ddbf0d2fce43b8aac267a6c299fd2dff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 12:47:06 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 12:47:06 2007 -0800"
      },
      "message": "Resurrect \u0027try_to_free_buffers()\u0027 VM hackery\n\nIt\u0027s not pretty, but it appears that ext3 with data\u003djournal will clean\npages without ever actually telling the VM that they are clean.  This,\nin turn, will result in the VM (and balance_dirty_pages() in particular)\nto never realize that the pages got cleaned, and wait forever for an\nevent that already happened.\n\nTechnically, this seems to be a problem with ext3 itself, but it used to\nbe hidden by \u0027try_to_free_buffers()\u0027 noticing this situation on its own,\nand just working around the filesystem problem.\n\nThis commit re-instates that hack, in order to avoid a regression for\nthe 2.6.20 release. This fixes bugzilla 7844:\n\n\thttp://bugzilla.kernel.org/show_bug.cgi?id\u003d7844\n\nPeter Zijlstra points out that we should probably retain the debugging\ncode that this removes from cancel_dirty_page(), and I agree, but for\nthe imminent release we might as well just silence the warning too\n(since it\u0027s not a new bug: anything that triggers that warning has been\naround forever).\n\nAcked-by: Randy Dunlap \u003crdunlap@xenotime.net\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e3db7691e9f3dff3289f64e3d98583e28afe03db",
      "tree": "e05542d8d8bb545545c5b535381a8c1fcb369a03",
      "parents": [
        "07031e14c1127fc7e1a5b98dfcc59f434e025104"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Jan 10 23:15:39 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Jan 11 18:18:21 2007 -0800"
      },
      "message": "[PATCH] NFS: Fix race in nfs_release_page()\n\n    NFS: Fix race in nfs_release_page()\n\n    invalidate_inode_pages2() may find the dirty bit has been set on a page\n    owing to the fact that the page may still be mapped after it was locked.\n    Only after the call to unmap_mapping_range() are we sure that the page\n    can no longer be dirtied.\n    In order to fix this, NFS has hooked the releasepage() method and tries\n    to write the page out between the call to unmap_mapping_range() and the\n    call to remove_mapping(). This, however leads to deadlocks in the page\n    reclaim code, where the page may be locked without holding a reference\n    to the inode or dentry.\n\n    Fix is to add a new address_space_operation, launder_page(), which will\n    attempt to write out a dirty page without releasing the page lock.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\n\n    Also, the bare SetPageDirty() can skew all sort of accounting leading to\n    other nasties.\n\n[akpm@osdl.org: cleanup]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8368e328dfe1c534957051333a87b3210a12743b",
      "tree": "eaf180335e684a62c44e9aad42cbe2d07de045f3",
      "parents": [
        "18ed1c051317ac3a685120cead2adb192b802347"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 23 09:25:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 23 09:25:04 2006 -0800"
      },
      "message": "Clean up and export cancel_dirty_page() to modules\n\nMake cancel_dirty_page() act more like all the other dirty and writeback\naccounting functions: test for \"mapping\" being NULL, and do the\nNR_FILE_DIRY accounting purely based on mapping_cap_account_dirty()).\n\nAlso, add it to the exports, so that modular filesystems can use it.\n\nAcked-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5f2a105d5e33a038a717995d2738434f9c25aed2",
      "tree": "4d72272dfaa5eb00f96ff895ca72bdfd97fa4bdc",
      "parents": [
        "bb4067e34159648d394943d5e2a011f838bff22f"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Dec 22 01:04:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:45 2006 -0800"
      },
      "message": "[PATCH] truncate: dirty memory accounting fix\n\nOnly (un)account for IO and page-dirtying for devices which have real backing\nstore (ie: not tmpfs or ramdisks).\n\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3e67c0987d7567ad666641164a153dca9a43b11d",
      "tree": "e8bd583fc8fe6e9e2e8533319a30577c0081f70e",
      "parents": [
        "921320210bd2ec4f17053d283355b73048ac0e56"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Thu Dec 21 11:00:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 21 11:17:26 2006 -0800"
      },
      "message": "[PATCH] truncate: clear page dirtiness before running try_to_free_buffers()\n\ntruncate presently invalidates the dirty page\u0027s buffer_heads then shoots down\nthe page.  But try_to_free_buffers() will now bale out because the page is\ndirty.\n\nNet effect: the LRU gets filled with dirty pages which have invalidated\nbuffer_heads attached.  They have no -\u003emapping and hence cannot be cleaned.\nThe machine leaks memory at an enormous rate.\n\nFix this by cleaning the page before running try_to_free_buffers(), so\ntry_to_free_buffers() can do its work.\n\nAlso, remember to do dirty-page-acoounting in cancel_dirty_page() so the\nmachine won\u0027t wedge up trying to write non-existent dirty pages.\n\nProbably still wrong, but now less so.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fba2591bf4e418b6c3f9f8794c9dd8fe40ae7bd9",
      "tree": "d6909973e402b3171ee409f660b33df2fad029ba",
      "parents": [
        "46d2277c796f9f4937bfa668c40b2e3f43e93dd0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 20 13:46:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 21 09:19:57 2006 -0800"
      },
      "message": "VM: Remove \"clear_page_dirty()\" and \"test_clear_page_dirty()\" functions\n\nThey were horribly easy to mis-use because of their tempting naming, and\nthey also did way more than any users of them generally wanted them to\ndo.\n\nA dirty page can become clean under two circumstances:\n\n (a) when we write it out.  We have \"clear_page_dirty_for_io()\" for\n     this, and that function remains unchanged.\n\n     In the \"for IO\" case it is not sufficient to just clear the dirty\n     bit, you also have to mark the page as being under writeback etc.\n\n (b) when we actually remove a page due to it becoming inaccessible to\n     users, notably because it was truncate()\u0027d away or the file (or\n     metadata) no longer exists, and we thus want to cancel any\n     outstanding dirty state.\n\nFor the (b) case, we now introduce \"cancel_dirty_page()\", which only\ntouches the page state itself, and verifies that the page is not mapped\n(since cancelling writes on a mapped page would be actively wrong as it\nis still accessible to users).\n\nSome filesystems need to be fixed up for this: CIFS, FUSE, JFS,\nReiserFS, XFS all use the old confusing functions, and will be fixed\nseparately in subsequent commits (with some of them just removing the\noffending logic, and others using clear_page_dirty_for_io()).\n\nThis was confirmed by Martin Michlmayr to fix the apt database\ncorruption on ARM.\n\nCc: Martin Michlmayr \u003ctbm@cyrius.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Andrei Popa \u003candrei.popa@i-neo.ro\u003e\nCc: Andrew Morton \u003cakpm@osdl.org\u003e\nCc: Dave Kleikamp \u003cshaggy@linux.vnet.ibm.com\u003e\nCc: Gordon Farquharson \u003cgordonfarquharson@gmail.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e08748ce01e02f0ec154b141f392ccb9555333f4",
      "tree": "9fa9d9f8fb468997f7f6fbcb28e243724d1fdda6",
      "parents": [
        "55e829af06681e5d731c03ba04febbd1c76ca293"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] io-accounting: write-cancel accounting\n\nAccount for the number of byte writes which this process caused to not happen\nafter all.\n\nCc: Jay Lan \u003cjlan@sgi.com\u003e\nCc: Shailabh Nagar \u003cnagar@watson.ibm.com\u003e\nCc: Balbir Singh \u003cbalbir@in.ibm.com\u003e\nCc: Chris Sturtivant \u003ccsturtiv@sgi.com\u003e\nCc: Tony Ernst \u003ctee@sgi.com\u003e\nCc: Guillaume Thouvenin \u003cguillaume.thouvenin@bull.net\u003e\nCc: David Wright \u003cdaw@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a649fd9271773dd0f78e2b9f347bcceecb8827f9",
      "tree": "59b29ffef77a2c5cce233393848c13354f02c0f2",
      "parents": [
        "5eb30790d4ccd3409240a80eaf9ab76b4fb75fd8"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Tue Oct 17 00:09:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 17 08:18:43 2006 -0700"
      },
      "message": "[PATCH] invalidate: remove_mapping() fix\n\nIf remove_mapping() failed to remove the page from its mapping, don\u0027t go and\nmark it not uptodate!  Makes kernel go dead.\n\n(Actually, I don\u0027t think the ClearPageUptodate is needed there at all).\n\nSays Nick Piggin:\n\n   \"Right, it isn\u0027t needed because at this point the page is guaranteed\n    by remove_mapping to have no references (except us) and cannot pick\n    up any new ones because it is removed from pagecache.\n\n    We can delete it.\"\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "887ed2f3aecde2ff24e06666932dc5f144745044",
      "tree": "870280190c3825122dc8e30e7c2be66465b9f9f2",
      "parents": [
        "cd0810410beb86c570aeb3dcd3dc1fc5ab9e6077"
      ],
      "author": {
        "name": "Trond Myklebust",
        "email": "Trond.Myklebust@netapp.com",
        "time": "Wed Oct 11 01:21:58 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:22 2006 -0700"
      },
      "message": "[PATCH] VM: Fix the gfp_mask in invalidate_complete_page2\n\nIf try_to_release_page() is called with a zero gfp mask, then the\nfilesystem is effectively denied the possibility of sleeping while\nattempting to release the page.  There doesn\u0027t appear to be any valid\nreason why this should be banned, given that we\u0027re not calling this from a\nmemory allocation context.\n\nFor this reason, change the gfp_mask argument of the call to GFP_KERNEL.\n\nSigned-off-by: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Steve Dickson \u003cSteveD@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8258d4a574d3a8c01f0ef68aa26b969398a0e140",
      "tree": "b3b3e062f340f0bbddd166358a7adebe6099574a",
      "parents": [
        "beed33a816204cb402c69266475b6a60a2433ceb"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Oct 11 01:21:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:22 2006 -0700"
      },
      "message": "[PATCH] invalidate_inode_pages2_range() debug\n\nA failure in invalidate_inode_pages2_range() can result in unpleasant things\nhappening in NFS (at least).  Stick a WARN_ON_ONCE() in there so we can find\nout if it happens, and maybe why.\n\n(akpm: might be a -mm-only patch, we\u0027ll see..)\n\nCc: Chuck Lever \u003cchuck.lever@oracle.com\u003e\nCc: Trond Myklebust \u003cTrond.Myklebust@netapp.com\u003e\nCc: Steve Dickson \u003cSteveD@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "bd4c8ce41a2e2f0c5bf54343ab54e8e09faec021",
      "tree": "e8a7d3cfafbe6ee35672953718ba4223e450d938",
      "parents": [
        "d025c9db7f31fc0554ce7fb2dfc78d35a77f3487"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sat Sep 30 23:29:29 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 01 00:39:33 2006 -0700"
      },
      "message": "[PATCH] invalidate_inode_pages2(): ignore page refcounts\n\nThe recent fix to invalidate_inode_pages() (git commit 016eb4a) managed to\nunfix invalidate_inode_pages2().\n\nThe problem is that various bits of code in the kernel can take transient refs\non pages: the page scanner will do this when inspecting a batch of pages, and\nthe lru_cache_add() batching pagevecs also hold a ref.\n\nNet result is transient failures in invalidate_inode_pages2().  This affects\nNFS directory invalidation (observed) and presumably also block-backed\ndirect-io (not yet reported).\n\nFix it by reverting invalidate_inode_pages2() back to the old version which\nignores the page refcounts.\n\nWe may come up with something more clever later, but for now we need a 2.6.18\nfix for NFS.\n\nCc: Chuck Lever \u003ccel@citi.umich.edu\u003e\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9361401eb7619c033e2394e4f9f6d410d6719ac7",
      "tree": "04b94a71f2366988c17740d1c16cfbdec41d5d2e",
      "parents": [
        "d366e40a1cabd453be6e2609caa7e12f9ca17b1f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 30 20:45:40 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:31 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Make it possible to disable the block layer [try #6]\n\nMake it possible to disable the block layer.  Not all embedded devices require\nit, some can make do with just JFFS2, NFS, ramfs, etc - none of which require\nthe block layer to be present.\n\nThis patch does the following:\n\n (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev\n     support.\n\n (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls\n     an item that uses the block layer.  This includes:\n\n     (*) Block I/O tracing.\n\n     (*) Disk partition code.\n\n     (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.\n\n     (*) The SCSI layer.  As far as I can tell, even SCSI chardevs use the\n     \t block layer to do scheduling.  Some drivers that use SCSI facilities -\n     \t such as USB storage - end up disabled indirectly from this.\n\n     (*) Various block-based device drivers, such as IDE and the old CDROM\n     \t drivers.\n\n     (*) MTD blockdev handling and FTL.\n\n     (*) JFFS - which uses set_bdev_super(), something it could avoid doing by\n     \t taking a leaf out of JFFS2\u0027s book.\n\n (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and\n     linux/elevator.h contingent on CONFIG_BLOCK being set.  sector_div() is,\n     however, still used in places, and so is still available.\n\n (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and\n     parts of linux/fs.h.\n\n (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.\n\n (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.\n\n (*) set_page_dirty() doesn\u0027t call __set_page_dirty_buffers() if CONFIG_BLOCK\n     is not enabled.\n\n (*) fs/no-block.c is created to hold out-of-line stubs and things that are\n     required when CONFIG_BLOCK is not set:\n\n     (*) Default blockdev file operations (to give error ENODEV on opening).\n\n (*) Makes some /proc changes:\n\n     (*) /proc/devices does not list any blockdevs.\n\n     (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.\n\n (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.\n\n (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if\n     given command other than Q_SYNC or if a special device is specified.\n\n (*) In init/do_mounts.c, no reference is made to the blockdev routines if\n     CONFIG_BLOCK is not defined.  This does not prohibit NFS roots or JFFS2.\n\n (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return\n     error ENOSYS by way of cond_syscall if so).\n\n (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if\n     CONFIG_BLOCK is not set, since they can\u0027t then happen.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "cf9a2ae8d49948f861b56e5333530e491a9da190",
      "tree": "21f0b0d781b3e60cc60464d39b6d95681201b37e",
      "parents": [
        "4090959aee403817ff386415f9bc602c1a0882ef"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Tue Aug 29 19:05:54 2006 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:31:19 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Move functions out of buffer code [try #6]\n\nMove some functions out of the buffering code that aren\u0027t strictly buffering\nspecific.  This is a precursor to being able to disable the block layer.\n\n (*) Moved some stuff out of fs/buffer.c:\n\n     (*) The file sync and general sync stuff moved to fs/sync.c.\n\n     (*) The superblock sync stuff moved to fs/super.c.\n\n     (*) do_invalidatepage() moved to mm/truncate.c.\n\n     (*) try_to_release_page() moved to mm/filemap.c.\n\n (*) Moved some related declarations between header files:\n\n     (*) declarations for do_invalidatepage() and try_to_release_page() moved\n     \t to linux/mm.h.\n\n     (*) __set_page_dirty_buffers() moved to linux/buffer_head.h.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "0fd0e6b05aa096622f151cac2f81f2e6844fb1bb",
      "tree": "4fd336eaea48b320f69e970323eef5dc77c62f20",
      "parents": [
        "5b99cd0effaf846240a15441aec459a592577eaf"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Wed Sep 27 01:50:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 27 08:26:12 2006 -0700"
      },
      "message": "[PATCH] page invalidation cleanup\n\nClean up the invalidate code, and use a common function to safely remove\nthe page from pagecache.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "016eb4a0ed06a3677d67a584da901f0e9a63c666",
      "tree": "574ead6bd03d31ca7036ff2389cb0400f3fd63fc",
      "parents": [
        "3665d0e58fa44f50c744f85c7e8ad21d5b10e206"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Sep 08 09:48:38 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 08 10:22:50 2006 -0700"
      },
      "message": "[PATCH] invalidate_complete_page() race fix\n\nIf a CPU faults this page into pagetables after invalidate_mapping_pages()\nchecked page_mapped(), invalidate_complete_page() will still proceed to remove\nthe page from pagecache.  This leaves the page-faulting process with a\ndetached page.  If it was MAP_SHARED then file data loss will ensue.\n\nFix that up by checking the page\u0027s refcount after taking tree_lock.\n\nCc: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nCc: Hugh Dickins \u003chugh@veritas.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e0f23603fb2607315ce52432cc4225df410828cf",
      "tree": "7a32b42a64a64488aee0e91ab016d53c353f9482",
      "parents": [
        "57ae2508610d50893cb3e3bbb869ff70ff724a2a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jun 23 02:05:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jun 23 07:43:07 2006 -0700"
      },
      "message": "[PATCH] Remove semi-softlockup from invalidate_mapping_pages\n\nIf invalidate_mapping_pages is called to invalidate a very large mapping\n(e.g.  a very large block device) and if the only active page in that\ndevice is near the end (or at least, at a very large index), such as, say,\nthe superblock of an md array, and if that page happens to be locked when\ninvalidate_mapping_pages is called, then\n\n  pagevec_lookup will return this page and\n  as it is locked, \u0027next\u0027 will be incremented and pagevec_lookup\n  will be called again. and again. and again.\n  while we count from 0 upto a very large number.\n\nWe should really always set \u0027next\u0027 to \u0027page-\u003eindex+1\u0027 before going around\nthe loop again, not just if the page isn\u0027t locked.\n\nCc: \"Steinar H. Gunderson\" \u003csgunderson@bigfoot.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1b1dcc1b57a49136f118a0f16367256ff9994a69",
      "tree": "b0b36d4f41d28c9d6514fb309d33c1a084d6309b",
      "parents": [
        "794ee1baee1c26be40410233e6c20bceb2b03c08"
      ],
      "author": {
        "name": "Jes Sorensen",
        "email": "jes@sgi.com",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@hera.kernel.org",
        "time": "Mon Jan 09 15:59:24 2006 -0800"
      },
      "message": "[PATCH] mutex subsystem, semaphore to mutex: VFS, -\u003ei_sem\n\nThis patch converts the inode semaphore to a mutex. I have tested it on\nXFS and compiled as much as one can consider on an ia64. Anyway your\nluck with it might be different.\n\nModified-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n\n(finished the conversion)\n\nSigned-off-by: Jes Sorensen \u003cjes@sgi.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9d0243bca345d5ce25d3f4b74b7facb3a6df1232",
      "tree": "a3a0a763bf83a483282dc1c3caab587941a98fc2",
      "parents": [
        "bec6b0c89b234090681a4516e20ac5debe3e7c59"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Jan 08 01:00:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jan 08 20:12:40 2006 -0800"
      },
      "message": "[PATCH] drop-pagecache\n\nAdd /proc/sys/vm/drop_caches.  When written to, this will cause the kernel to\ndiscard as much pagecache and/or reclaimable slab objects as it can.  THis\noperation requires root permissions.\n\nIt won\u0027t drop dirty data, so the user should run `sync\u0027 first.\n\nCaveats:\n\na) Holds inode_lock for exorbitant amounts of time.\n\nb) Needs to be taught about NUMA nodes: propagate these all the way through\n   so the discarding can be controlled on a per-node basis.\n\nThis is a debugging feature: useful for getting consistent results between\nfilesystem benchmarks.  We could possibly put it under a config option, but\nit\u0027s less than 300 bytes.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d7339071f6a8b50101d7ba327926b770f22d5d8b",
      "tree": "051234ada89be22abb9ebbe4a541b16ade3bc2ff",
      "parents": [
        "900b2b463dc6e65ec474d6880412c63c25b3aea9"
      ],
      "author": {
        "name": "Hans Reiser",
        "email": "reiser@namesys.com",
        "time": "Fri Jan 06 00:10:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:33:22 2006 -0800"
      },
      "message": "[PATCH] reiser4: vfs: add truncate_inode_pages_range()\n\nThis patch makes truncate_inode_pages_range from truncate_inode_pages.\ntruncate_inode_pages became a one-liner call to truncate_inode_pages_range.\n\nReiser4 needs truncate_inode_pages_ranges because it tries to keep\ncorrespondence between existences of metadata pointing to data pages and pages\nto which those metadata point to.  So, when metadata of certain part of file\nis removed from filesystem tree, only pages of corresponding range are to be\ntruncated.\n\n(Needed by the madvise(MADV_REMOVE) patch)\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "479ef592f3664dd629417098c8599261c0f689ab",
      "tree": "616270b5c79cc3ef5f1fba683f1913f4bea74f47",
      "parents": [
        "02b7068221eed702a37527fa2da4d63a27b3126a"
      ],
      "author": {
        "name": "Oleg Drokin",
        "email": "green@linuxhacker.ru",
        "time": "Wed Nov 23 13:37:47 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 23 16:08:39 2005 -0800"
      },
      "message": "[PATCH] 32bit integer overflow in invalidate_inode_pages2()\n\nFix a 32 bit integer overflow in invalidate_inode_pages2_range.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "aaa4059bc2dca7fa816624a28db1958c3a22df9b",
      "tree": "8ae1d5458e2f68f96b033f10dae216847c32d4d2",
      "parents": [
        "e812cb5226af32aec91bcbaa8365bd7f921b6ebb"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Sun Oct 30 15:00:16 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Oct 30 17:37:17 2005 -0800"
      },
      "message": "[PATCH] ext3: Fix unmapped buffers in transaction\u0027s lists\n\nFix the problem (BUG 4964) with unmapped buffers in transaction\u0027s\nt_sync_data list.  The problem is we need to call filesystem\u0027s own\ninvalidatepage() from block_write_full_page().\n\nblock_write_full_page() must call filesystem\u0027s invalidatepage().  Otherwise\nfollowing nasty race can happen:\n\n   proc 1                                        proc 2\n   ------                                        ------\n- write some new data to \u0027offset\u0027\n  \u003d\u003e bh gets to the transactions data list\n                                              - starts truncate\n                                                \u003d\u003e i_size set to new size\n- mpage_writepages()\n  - ext3_ordered_writepage() to \u0027offset\u0027\n    - block_write_full_page()\n      - page-\u003eindex \u003e end_index+1\n        - block_invalidatepage()\n          - discard_buffer()\n            - clear_buffer_mapped()\n\n- commit triggers and finds unmapped buffer - BOOM!\n\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "67be2dd1bace0ec7ce2dbc1bba3f8df3d7be597e",
      "tree": "317d114a0288d3b19ef9902f94b536a5a8731dbd",
      "parents": [
        "6013d5445f9a6d0b28090027868f455c5012d1cc"
      ],
      "author": {
        "name": "Martin Waitz",
        "email": "tali@admingilde.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sun May 01 08:59:26 2005 -0700"
      },
      "message": "[PATCH] DocBook: fix some descriptions\n\nSome KernelDoc descriptions are updated to match the current code.\nNo code changes.\n\nSigned-off-by: Martin Waitz \u003ctali@admingilde.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
