)]}'
{
  "log": [
    {
      "commit": "f5dd33c494a427b1d1a3b574de5c9e511c888864",
      "tree": "fc6f61ffe488fe044f9e167b31b1c4ecd5f3f54c",
      "parents": [
        "8174c430e445a93016ef18f717fe570214fa38bf"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Fri Jul 25 19:45:25 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:06 2008 -0700"
      },
      "message": "dio: use get_user_pages_fast\n\nUse get_user_pages_fast in the common/generic block and fs direct IO paths.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Dave Kleikamp \u003cshaggy@austin.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nReviewed-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "557ed1fa2620dc119adb86b34c614e152a629a80",
      "tree": "d00b31a7f197583c2bd8fffa1fd135fbbb5d6abc",
      "parents": [
        "aadb4bc4a1f9108c1d0fbd121827c936c2ed4217"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Tue Oct 16 01:24:40 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 16 09:42:53 2007 -0700"
      },
      "message": "remove ZERO_PAGE\n\nThe commit b5810039a54e5babf428e9a1e89fc1940fabff11 contains the note\n\n  A last caveat: the ZERO_PAGE is now refcounted and managed with rmap\n  (and thus mapcounted and count towards shared rss).  These writes to\n  the struct page could cause excessive cacheline bouncing on big\n  systems.  There are a number of ways this could be addressed if it is\n  an issue.\n\nAnd indeed this cacheline bouncing has shown up on large SGI systems.\nThere was a situation where an Altix system was essentially livelocked\ntearing down ZERO_PAGE pagetables when an HPC app aborted during startup.\nThis situation can be avoided in userspace, but it does highlight the\npotential scalability problem with refcounting ZERO_PAGE, and corner\ncases where it can really hurt (we don\u0027t want the system to livelock!).\n\nThere are several broad ways to fix this problem:\n1. add back some special casing to avoid refcounting ZERO_PAGE\n2. per-node or per-cpu ZERO_PAGES\n3. remove the ZERO_PAGE completely\n\nI will argue for 3. The others should also fix the problem, but they\nresult in more complex code than does 3, with little or no real benefit\nthat I can see.\n\nWhy? Inserting a ZERO_PAGE for anonymous read faults appears to be a\nfalse optimisation: if an application is performance critical, it would\nnot be doing many read faults of new memory, or at least it could be\nexpected to write to that memory soon afterwards. If cache or memory use\nis critical, it should not be working with a significant number of\nZERO_PAGEs anyway (a more compact representation of zeroes should be\nused).\n\nAs a sanity check -- mesuring on my desktop system, there are never many\nmappings to the ZERO_PAGE (eg. 2 or 3), thus memory usage here should not\nincrease much without it.\n\nWhen running a make -j4 kernel compile on my dual core system, there are\nabout 1,000 mappings to the ZERO_PAGE created per second, but about 1,000\nZERO_PAGE COW faults per second (less than 1 ZERO_PAGE mapping per second\nis torn down without being COWed). So removing ZERO_PAGE will save 1,000\npage faults per second when running kbuild, while keeping it only saves\nless than 1 page clearing operation per second. 1 page clear is cheaper\nthan a thousand faults, presumably, so there isn\u0027t an obvious loss.\n\nNeither the logical argument nor these basic tests give a guarantee of no\nregressions. However, this is a reasonable opportunity to try to remove\nthe ZERO_PAGE from the pagefault path. If it is found to cause regressions,\nwe can reintroduce it and just avoid refcounting it.\n\nThe /dev/zero ZERO_PAGE usage and TLB tricks also get nuked.  I don\u0027t see\nmuch use to them except on benchmarks.  All other users of ZERO_PAGE are\nconverted just to use ZERO_PAGE(0) for simplicity. We can look at\nreplacing them all and maybe ripping out ZERO_PAGE completely when we are\nmore satisfied with this solution.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus \"snif\" Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6712ecf8f648118c3363c142196418f89a510b90",
      "tree": "347d39a7d5a7ed96d3b1afecd28de2a0f98b98c9",
      "parents": [
        "5bb23a688b2de23d7765a1dd439d89c038378978"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Sep 27 12:47:43 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@carl.home.kernel.dk",
        "time": "Wed Oct 10 09:25:57 2007 +0200"
      },
      "message": "Drop \u0027size\u0027 argument from bio_endio and bi_end_io\n\nAs bi_end_io is only called once when the reqeust is complete,\nthe \u0027size\u0027 argument is now redundant.  Remove it.\n\nNow there is no need for bio_endio to subtract the size completed\nfrom bi_size.  So don\u0027t do that either.\n\nWhile we are at it, change bi_end_io to return void.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "848c4dd5153c7a0de55470ce99a8e13a63b4703f",
      "tree": "4defb21d98037a96a3a90e83eaf85a10b46f0571",
      "parents": [
        "38f061c5714265fa8481cc0b7795aa8fe81b45be"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Mon Aug 20 17:12:01 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Aug 20 22:50:25 2007 -0700"
      },
      "message": "dio: zero struct dio with kzalloc instead of manually\n\nThis patch uses kzalloc to zero all of struct dio rather than manually\ntrying to track which fields we rely on being zero.  It passed aio+dio\nstress testing and some bug regression testing on ext3.\n\nThis patch was introduced by Linus in the conversation that lead up to\nBadari\u0027s minimal fix to manually zero .map_bh.b_state in commit:\n\n  6a648fa72161d1f6468dabd96c5d3c0db04f598a\n\nIt makes the code a bit smaller.  Maybe a couple fewer cachelines to\nload, if we\u0027re lucky:\n\n   text    data     bss     dec     hex filename\n3285925  568506 1304616 5159047  4eb887 vmlinux\n3285797  568506 1304616 5158919  4eb807 vmlinux.patched\n\nI was unable to measure a stable difference in the number of cpu cycles\nspent in blockdev_direct_IO() when pushing aio+dio 256K reads at\n~340MB/s.\n\nSo the resulting intent of the patch isn\u0027t a performance gain but to\navoid exposing ourselves to the risk of finding another field like\n.map_bh.b_state where we rely on zeroing but don\u0027t enforce it in the\ncode.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6a648fa72161d1f6468dabd96c5d3c0db04f598a",
      "tree": "b39d233a05c5373240c31b38ac23802438a7486b",
      "parents": [
        "b291aa7a6564e859af144e1bd14ffa463519b198"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Fri Aug 10 13:00:44 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sat Aug 11 15:47:40 2007 -0700"
      },
      "message": "direct-io: fix error-path crashes\n\nNeed to initialize map_bh.b_state to zero.  Otherwise, in case of a faulty\nuser-buffer its possible to go into dio_zero_block() and submit a page by\nmistake - since it checks for buffer_new().\n\nhttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d118551339032528\u0026w\u003d2\n\nakpm: Linus had a (better) patch to just do a kzalloc() in there, but it got\nlost.  Probably this version is better for -stable anwyay.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nAcked-by: Joe Jin \u003cjoe.jin@oracle.com\u003e\nAcked-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: gurudas pai \u003cgurudas.pai@oracle.com\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "fcb82f8835c1d71b4fe5de1d9894f45370f80dab",
      "tree": "cdb5f78ff1d41d511b01a04f3f20f7ea248adb20",
      "parents": [
        "5dcccd8d7eae870d85c3f175fd0823d3da07d0e3"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Tue Jul 03 15:28:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 03 18:23:23 2007 -0700"
      },
      "message": "dio: remove bogus refcounting BUG_ON\n\nBadari Pulavarty reported a case of this BUG_ON is triggering during\ntesting.  It\u0027s completely bogus and should be removed.\n\nIt\u0027s trying to notice if we left references to the dio hanging around in\nthe sync case.  They should have been dropped as IO completed while this\npath was in dio_await_completion().  This condition will also be\nchecked, via some twisty logic, by the BUG_ON(ret !\u003d -EIOCBQUEUED) a few\nlines lower.  So to start this BUG_ON() is redundant.\n\nMore fatally, it\u0027s dereferencing dio-\u003e after having dropped its\nreference.  It\u0027s only safe to dereference the dio after releasing the\nlock if the final reference was just dropped.  Another CPU might free\nthe dio in bio completion and reuse the memory after this path drops the\ndio lock but before the BUG_ON() is evaluated.\n\nThis patch passed aio+dio regression unit tests and aio-stress on ext3.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9a9136e270af14da506f66bcafcc506b86a86498",
      "tree": "b4d0a6877d92635134b7a944d0032fbc43227fd2",
      "parents": [
        "3960208f9ca0cf6bdb31c21c59ac0526303f8b34",
        "7bb2acb76e8168ca5d0bde5a5a56585a11b3525a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:54:17 2007 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (25 commits)\n  sound: convert \"sound\" subdirectory to UTF-8\n  MAINTAINERS: Add cxacru website/mailing list\n  include files: convert \"include\" subdirectory to UTF-8\n  general: convert \"kernel\" subdirectory to UTF-8\n  documentation: convert the Documentation directory to UTF-8\n  Convert the toplevel files CREDITS and MAINTAINERS to UTF-8.\n  remove broken URLs from net drivers\u0027 output\n  Magic number prefix consistency change to Documentation/magic-number.txt\n  trivial: s/i_sem /i_mutex/\n  fix file specification in comments\n  drivers/base/platform.c: fix small typo in doc\n  misc doc and kconfig typos\n  Remove obsolete fat_cvf help text\n  Fix occurrences of \"the the \"\n  Fix minor typoes in kernel/module.c\n  Kconfig: Remove reference to external mqueue library\n  Kconfig: A couple of grammatical fixes in arch/i386/Kconfig\n  Correct comments in genrtc.c to refer to correct /proc file.\n  Fix more \"deprecated\" spellos.\n  Fix \"deprecated\" typoes.\n  ...\n\nFix trivial comment conflict in kernel/relay.c.\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": "beb7dd86a101263bf63a78c7c6d4da3849b35bd6",
      "tree": "9afe81ca9e92ab8aacc999ae118b27d547721f11",
      "parents": [
        "3dde6ad8fc3939d345a3768464ecff43c91d511a"
      ],
      "author": {
        "name": "Robert P. J. Day",
        "email": "rpjday@mindspring.com",
        "time": "Wed May 09 07:14:03 2007 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed May 09 07:14:03 2007 +0200"
      },
      "message": "Fix misspellings collected by members of KJ list.\n\nFix the misspellings of \"propogate\", \"writting\" and (oh, the shame\n:-) \"kenrel\" in the source tree.\n\nSigned-off-by: Robert P. J. Day \u003crpjday@mindspring.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "5eb6c7a2ab413dea1ee6c08dd58263a1c2c2efa3",
      "tree": "f1e2f7994321290f4e6e641894cc21176c16767b",
      "parents": [
        "8459d86aff04fa53c2ab6a6b9f355b3063cc8014"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Dec 10 02:21:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] dio: lock refcount operations\n\nThe wait_for_more_bios() function name was poorly chosen.  While looking to\nclean it up it I noticed that the dio struct refcounting between the bio\ncompletion and dio submission paths was racey.\n\nThe bio submission path was simply freeing the dio struct if\natomic_dec_and_test() indicated that it dropped the final reference.\n\nThe aio bio completion path was dereferencing its dio struct pointer *after\ndropping its reference* based on the remaining number of references.\n\nThese two paths could race and result in the aio bio completion path\ndereferencing a freed dio, though this was not observed in the wild.\n\nThis moves the refcount under the bio lock so that bio completion can drop\nits reference and decide to wake all in one atomic step.\n\nOnce testing and waking is locked dio_await_one() can test its sleeping\ncondition and mark itself uninterruptible under the lock.  It gets simpler\nand wait_for_more_bios() disappears.\n\nThe addition of the interrupt masking spin lock acquiry in dio_bio_submit()\nlooks alarming.  This lock acquiry existed in that path before the recent\ndio completion patch set.  We shouldn\u0027t expect significant performance\nregression from returning to the behaviour that existed before the\ncompletion clean up work.\n\nThis passed 4k block ext3 O_DIRECT fsx and aio-stress on an SMP machine.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: \u003cxfs-masters@oss.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8459d86aff04fa53c2ab6a6b9f355b3063cc8014",
      "tree": "c0584c4907f0d63a18998b7cbffdf7900609606b",
      "parents": [
        "20258b2b397031649e4a41922fe803d57017df84"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Dec 10 02:21:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] dio: only call aio_complete() after returning -EIOCBQUEUED\n\nThe only time it is safe to call aio_complete() is when the -\u003eki_retry\nfunction returns -EIOCBQUEUED to the AIO core.  direct_io_worker() has\nhistorically done this by relying on its caller to translate positive return\ncodes into -EIOCBQUEUED for the aio case.  It did this by trying to keep\nconditionals in sync.  direct_io_worker() knew when finished_one_bio() was\ngoing to call aio_complete().  It would reverse the test and wait and free the\ndio in the cases it thought that finished_one_bio() wasn\u0027t going to.\n\nNot surprisingly, it ended up getting it wrong.  \u0027ret\u0027 could be a negative\nerrno from the submission path but it failed to communicate this to\nfinished_one_bio().  direct_io_worker() would return \u003c 0, it\u0027s callers\nwouldn\u0027t raise -EIOCBQUEUED, and aio_complete() would be called.  In the\nfuture finished_one_bio()\u0027s tests wouldn\u0027t reflect this and aio_complete()\nwould be called for a second time which can manifest as an oops.\n\nThe previous cleanups have whittled the sync and async completion paths down\nto the point where we can collapse them and clearly reassert the invariant\nthat we must only call aio_complete() after returning -EIOCBQUEUED.\ndirect_io_worker() will only return -EIOCBQUEUED when it is not the last to\ndrop the dio refcount and the aio bio completion path will only call\naio_complete() when it is the last to drop the dio refcount.\ndirect_io_worker() can ensure that it is the last to drop the reference count\nby waiting for bios to drain.  It does this for sync ops, of course, and for\npartial dio writes that must fall back to buffered and for aio ops that saw\nerrors during submission.\n\nThis means that operations that end up waiting, even if they were issued as\naio ops, will not call aio_complete() from dio.  Instead we return the return\ncode of the operation and let the aio core call aio_complete().  This is\npurposely done to fix a bug where AIO DIO file extensions would call\naio_complete() before their callers have a chance to update i_size.\n\nNow that direct_io_worker() is explicitly returning -EIOCBQUEUED its callers\nno longer have to translate for it.  XFS needs to be careful not to free\nresources that will be used during AIO completion if -EIOCBQUEUED is returned.\n We maintain the previous behaviour of trying to write fs metadata for O_SYNC\naio+dio writes.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: \u003cxfs-masters@oss.sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "20258b2b397031649e4a41922fe803d57017df84",
      "tree": "9c5fc96367b4938474cee2789d3c98c5e37586bf",
      "parents": [
        "0273201e693fd62381f6b1e85b15ffc117d8a46e"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Dec 10 02:21:01 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] dio: remove duplicate bio wait code\n\nNow that we have a single refcount and waiting path we can reuse it in the\nasync \u0027should_wait\u0027 path.  It continues to rely on the fragile link between\nthe conditional in dio_complete_aio() which decides to complete the AIO and\nthe conditional in direct_io_worker() which decides to wait and free.\n\nBy waiting before dropping the reference we stop dio_bio_end_aio() from\ncalling dio_complete_aio() which used to wake up the waiter after seeing the\nreference count drop to 0.  We hoist this wake up into dio_bio_end_aio() which\nnow notices when it\u0027s left a single remaining reference that is held by the\nwaiter.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0273201e693fd62381f6b1e85b15ffc117d8a46e",
      "tree": "2dff76f33cbcaf7b7d88187da122d7aa98268b11",
      "parents": [
        "17a7b1d74b1207f8f1af40b5d184989076d08f8b"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Dec 10 02:20:59 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] dio: formalize bio counters as a dio reference count\n\nPreviously we had two confusing counts of bio progress.  \u0027bio_count\u0027 was\ndecremented as bios were processed and freed by the dio core.  It was used to\nindicate final completion of the dio operation.  \u0027bios_in_flight\u0027 reflected\nhow many bios were between submit_bio() and bio-\u003eend_io.  It was used by the\nsync path to decide when to wake up and finish completing bios and was ignored\nby the async path.\n\nThis patch collapses the two notions into one notion of a dio reference count.\n bios hold a dio reference when they\u0027re between submit_bio and bio-\u003eend_io.\n\nSince bios_in_flight was only used in the sync path it is now equivalent to\ndio-\u003erefcount - 1 which accounts for direct_io_worker() holding a reference\nfor the duration of the operation.\n\ndio_bio_complete() -\u003e finished_one_bio() was called from the sync path after\nfinding bios on the list that the bio-\u003eend_io function had deposited.\nfinished_one_bio() can not drop the dio reference on behalf of these bios now\nbecause bio-\u003eend_io already has.  The is_async test in finished_one_bio()\nmeant that it never actually did anything other than drop the bio_count for\nsync callers.  So we remove its refcount decrement, don\u0027t call it from\ndio_bio_complete(), and hoist its call up into the async dio_bio_complete()\ncaller after an explicit refcount decrement.  It is renamed dio_complete_aio()\nto reflect the remaining work it actually does.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "17a7b1d74b1207f8f1af40b5d184989076d08f8b",
      "tree": "18dceaf00a1ae275fb770c83cec0eae81662352a",
      "parents": [
        "6d544bb4d9019c3a0d7ee4af1e4bbbd61a6e16dc"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Dec 10 02:20:56 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] dio: call blk_run_address_space() once per op\n\nWe only need to call blk_run_address_space() once after all the bios for the\ndirect IO op have been submitted.  This removes the chance of calling\nblk_run_address_space() after spurious wake ups as the sync path waits for\nbios to drain.  It\u0027s also one less difference betwen the sync and async paths.\n\nIn the process we remove a redundant dio_bio_submit() that its caller had\nalready performed.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6d544bb4d9019c3a0d7ee4af1e4bbbd61a6e16dc",
      "tree": "cbf528f4270b60527961633c839ef62cfa69ebdf",
      "parents": [
        "1757128438d41670ded8bc3bc735325cc07dc8f9"
      ],
      "author": {
        "name": "Zach Brown",
        "email": "zach.brown@oracle.com",
        "time": "Sun Dec 10 02:20:54 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] dio: centralize completion in dio_complete()\n\nThere have been a lot of bugs recently due to the way direct_io_worker() tries\nto decide how to finish direct IO operations.  In the worst examples it has\nfailed to call aio_complete() at all (hang) or called it too many times\n(oops).\n\nThis set of patches cleans up the completion phase with the goal of removing\nthe complexity that lead to these bugs.  We end up with one path that\ncalculates the result of the operation after all off the bios have completed.\nWe decide when to generate a result of the operation using that path based on\nthe final release of a refcount on the dio structure.\n\nI tried to progress towards the final state in steps that were relatively easy\nto understand.  Each step should compile but I only tested the final result of\nhaving all the patches applied.\n\nI\u0027ve tested these on low end PC drives with aio-stress, the direct IO tests I\ncould manage to get running in LTP, orasim, and some home-brew functional\ntests.\n\nIn http://lkml.org/lkml/2006/9/21/103 IBM reports success with ext2 and ext3\nrunning DIO LTP tests.  They found that XFS bug which has since been addressed\nin the patch series.\n\nThis patch:\n\nThe mechanics which decide the result of a direct IO operation were duplicated\nin the sync and async paths.\n\nThe async path didn\u0027t check page_errors which can manifest as silently\nreturning success when the final pointer in an operation faults and its\nmatching file region is filled with zeros.\n\nThe sync path and async path differed in whether they passed errors to the\ncaller\u0027s dio-\u003eend_io operation.  The async path was passing errors to it which\ntrips an assertion in XFS, though it is apparently harmless.\n\nThis centralizes the completion phase of dio ops in one place.  AIO will now\nreturn EFAULT consistently and all paths fall back to the previously sync\nbehaviour of passing the number of bytes \u0027transferred\u0027 to the dio-\u003eend_io\ncallback, regardless of errors.\n\ndio_await_completion() doesn\u0027t have to propogate EIO from non-uptodate bios\nnow that it\u0027s being propogated through dio_complete() via dio-\u003eio_error.  This\nlets it return void which simplifies its sole caller.\n\nSigned-off-by: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nAcked-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "98c4d57decf97bf8ddfe948a3266aa56b38b1a51",
      "tree": "5cf91db0f18654655bfcfba555a7e58ec2f550c2",
      "parents": [
        "6f88cc2e9c29c181557b477ee396375906acbc90"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Sun Dec 10 02:19:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:55:41 2006 -0800"
      },
      "message": "[PATCH] io-accounting: direct-io\n\nAccount for direct-io.\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": "d8aa905b429700e8b6b6b301a8ac2d4a24f2c19b",
      "tree": "7ba82a5ae7bb63fe45f404424a470c126e59e6da",
      "parents": [
        "2b105ff9cccea5533ad518bb37dc9b43a322f7b1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:02 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:06 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate direct io\n\nTeach special (rwsem-in-irq) locking code to the lock validator.  Has no\neffect on non-lockdep kernels.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nCc: Russell King \u003crmk@arm.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b31dc66a54ad986b6b73bdc49c8efc17cbad1833",
      "tree": "5591383c1cbffe11512da889c971f899333f1a44",
      "parents": [
        "271f18f102c789f59644bb6c53a69da1df72b2f4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@suse.de",
        "time": "Tue Jun 13 08:26:10 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Fri Jun 23 17:10:39 2006 +0200"
      },
      "message": "[PATCH] Kill PF_SYNCWRITE flag\n\nA process flag to indicate whether we are doing sync io is incredibly\nugly. It also causes performance problems when one does a lot of async\nio and then proceeds to sync it. Part of the io will go out as async,\nand the other part as sync. This causes a disconnect between the\npreviously submitted io and the synced io. For io schedulers such as CFQ,\nthis will cause us lost merges and suboptimal behaviour in scheduling.\n\nRemove PF_SYNCWRITE completely from the fsync/msync paths, and let\nthe O_DIRECT path just directly indicate that the writes are sync\nby using WRITE_SYNC instead.\n\nSigned-off-by: Jens Axboe \u003caxboe@suse.de\u003e\n"
    },
    {
      "commit": "d4569d2e6949a63851032b40c811913d4a6f85f5",
      "tree": "d2a5c38c2fbf7167d742bde9ccb6fca0cb12c686",
      "parents": [
        "9e77c485f7037e4817bb53c78d15d5403981ae8b"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sat Apr 01 01:10:13 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sat Apr 01 01:10:13 2006 +0200"
      },
      "message": "BUG_ON() Conversion in fs/direct-io.c\n\nthis changes if() BUG(); constructs to BUG_ON() which is\ncleaner and can better optimized away\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "3c674e74238cb2484169e3f84f687c66887086b6",
      "tree": "07964918e0948a42bf787b37fc970c4b137fce53",
      "parents": [
        "e0edd5962bd83d319aaa50b39580dc30299a7fe3"
      ],
      "author": {
        "name": "Nathan Scott",
        "email": "nathans@sgi.com",
        "time": "Wed Mar 29 09:26:15 2006 +1000"
      },
      "committer": {
        "name": "Nathan Scott",
        "email": "nathans@sgi.com",
        "time": "Wed Mar 29 09:26:15 2006 +1000"
      },
      "message": "Fixes a regression from the recent \"remove -\u003eget_blocks() support\"\nchange.  inode-\u003ei_blkbits should be used when making a get_block_t\nrequest of a filesystem instead of dio-\u003eblkbits, as that does not\nindicate the filesystem block size all the time (depends on request\nalignment - see start of __blockdev_direct_IO).\n\nSigned-off-by: Nathan Scott \u003cnathans@sgi.com\u003e\nAcked-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\n"
    },
    {
      "commit": "1d8fa7a2b9a39d18727acc5c468e870df606c852",
      "tree": "41537fe9ea5478f3243e3301184dc13980f8201f",
      "parents": [
        "fa30bd058b746c0e2318a77ff8b4977faa924c2c"
      ],
      "author": {
        "name": "Badari Pulavarty",
        "email": "pbadari@us.ibm.com",
        "time": "Sun Mar 26 01:38:02 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Mar 26 08:57:01 2006 -0800"
      },
      "message": "[PATCH] remove -\u003eget_blocks() support\n\nNow that get_block() can handle mapping multiple disk blocks, no need to have\n-\u003eget_blocks().  This patch removes fs specific -\u003eget_blocks() added for DIO\nand makes it users use get_block() instead.\n\nSigned-off-by: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "174e27c607cfa3ebb92934d28c0fdfcf5ce6c3af",
      "tree": "1bc8f1804dc0917f1a86b2d32c701883932d81fe",
      "parents": [
        "0e6b3e5e97e2e8a25bcfc528dad94edf5220dfeb"
      ],
      "author": {
        "name": "Chen, Kenneth W",
        "email": "kenneth.w.chen@intel.com",
        "time": "Sat Mar 25 03:08:16 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Mar 25 08:23:00 2006 -0800"
      },
      "message": "[PATCH] direct-io: bug fix in dio handling write error\n\nThere is a bug in direct-io on propagating write error up to the higher I/O\nlayer.  When performing an async ODIRECT write to a block device, if a\ndevice error occurred (like media error or disk is pulled), the error code\nis only propagated from device driver to the DIO layer.  The error code\nstops at finished_one_bio().  The aysnc write, however, is supposedly have\na corresponding AIO event with appropriate return code (in this case -EIO).\n Application which waits on the async write event, will hang forever since\nsuch AIO event is lost forever (if such app did not use the timeout option\nin io_getevents call.  Regardless, an AIO event is lost).\n\nThe discovery of above bug leads to another discovery of potential race\nwindow with dio-\u003eresult.  The fundamental problem is that dio-\u003eresult is\noverloaded with dual use: an indicator of fall back path for partial dio\nwrite, and an error indicator used in the I/O completion path.  In the\nevent of device error, the setting of -EIO to dio-\u003eresult clashes with\nvalue used to track partial write that activates the fall back path.\n\nIt was also pointed out that it is impossible to use dio-\u003eresult to track\npartial write and at the same time to track error returned from device\ndriver.  Because direct_io_work can only determines whether it is a partial\nwrite at the end of io submission and in mid stream of those io submission,\na return code could be coming back from the driver.  Thus messing up all\nthe subsequent logic.\n\nProposed fix is to separating out error code returned by the IO completion\npath from partial IO submit tracking.  A new variable is added to dio\nstructure specifically to track io error returned in the completion path.\n\nSigned-off-by: Ken Chen \u003ckenneth.w.chen@intel.com\u003e\nAcked-by: Zach Brown \u003czach.brown@oracle.com\u003e\nAcked-by: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3fb962bde48c413bfa419ec4413037e87955dcb6",
      "tree": "ccce49b3fbdd8a3f38bbfd07a397092a3ae483b5",
      "parents": [
        "3759fa9c55923f719ae944a3f8fbb029b36f759d"
      ],
      "author": {
        "name": "Nathan Scott",
        "email": "nathans@bruce",
        "time": "Wed Mar 15 15:14:45 2006 +1100"
      },
      "committer": {
        "name": "Nathan Scott",
        "email": "nathans@bruce",
        "time": "Wed Mar 15 15:14:45 2006 +1100"
      },
      "message": "Fix a direct I/O locking issue revealed by the new mutex code.\nAffects only XFS (i.e. DIO_OWN_LOCKING case) - currently it is\nnot possible to get i_mutex locking correct when using DIO_OWN\ndirect I/O locking in a filesystem due to indeterminism in the\npossible return code/lock/unlock combinations.  This can cause\na direct read to attempt a double i_mutex unlock inside XFS.\n\nWe\u0027re now ensuring __blockdev_direct_IO always exits with the\ninode i_mutex (still) held for a direct reader.\n\nTested with the three different locking modes (via direct block\ndevice access, ext3 and XFS) - both reading and writing; cannot\nfind any regressions resulting from this change, and it clearly\nfixes the mutex_unlock warning originally reported here:\nhttp://marc.theaimsgroup.com/?l\u003dlinux-kernel\u0026m\u003d114189068126253\u0026w\u003d2\n\nSigned-off-by: Nathan Scott \u003cnathans@sgi.com\u003e\nAcked-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "35dc8161d0a6fa5e654bcb3d6240acc9ecb0a259",
      "tree": "0c688ffc3adc127f5cf9f35ff93e6072e1f42438",
      "parents": [
        "835417967c10b6dfaffdffddba59196196e5d431"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri Feb 03 03:04:27 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 03 08:32:07 2006 -0800"
      },
      "message": "[PATCH] fix O_DIRECT read of last block in a sparse file\n\nCurrently, if you open a file O_DIRECT, truncate it to a size that is not a\nmultiple of the disk block size, and then try to read the last block in the\nfile, the read will return 0.  The problem is in do_direct_IO, here:\n\n        /* Handle holes */\n        if (!buffer_mapped(map_bh)) {\n                char *kaddr;\n\n\t\t...\n\n                if (dio-\u003eblock_in_file \u003e\u003d\n                        i_size_read(dio-\u003einode)\u003e\u003eblkbits) {\n                        /* We hit eof */\n                        page_cache_release(page);\n                        goto out;\n                }\n\nWe shift off any remaining bytes in the final block of the I/O, resulting\nin a 0-sized read.  I\u0027ve attached a patch that fixes this.  I\u0027m not happy\nabout how ugly the math is getting, so suggestions are more than welcome.\n\nI\u0027ve tested this with a simple program that performs the steps outlined for\nreproducing the problem above.  Without the patch, we get a 0-sized result\nfrom read.  With the patch, we get the correct return value from the short\nread.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Suparna Bhattacharya \u003csuparna@in.ibm.com\u003e\nCc: Mingming Cao \u003ccmm@us.ibm.com\u003e\nCc: Joel Becker \u003cJoel.Becker@oracle.com\u003e\nCc: \"Chen, Kenneth W\" \u003ckenneth.w.chen@intel.com\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": "b5810039a54e5babf428e9a1e89fc1940fabff11",
      "tree": "835836cb527ec9bd525f93eb7e016f3dfb8c8ae2",
      "parents": [
        "f9c98d0287de42221c624482fd4f8d485c98ab22"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "nickpiggin@yahoo.com.au",
        "time": "Sat Oct 29 18:16:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Oct 29 21:40:39 2005 -0700"
      },
      "message": "[PATCH] core remove PageReserved\n\nRemove PageReserved() calls from core code by tightening VM_RESERVED\nhandling in mm/ to cover PageReserved functionality.\n\nPageReserved special casing is removed from get_page and put_page.\n\nAll setting and clearing of PageReserved is retained, and it is now flagged\nin the page_alloc checks to help ensure we don\u0027t introduce any refcount\nbased freeing of Reserved pages.\n\nMAP_PRIVATE, PROT_WRITE of VM_RESERVED regions is tentatively being\ndeprecated.  We never completely handled it correctly anyway, and is be\nreintroduced in future if required (Hugh has a proof of concept).\n\nOnce PageReserved() calls are removed from kernel/power/swsusp.c, and all\narch/ and driver code, the Set and Clear calls, and the PG_reserved bit can\nbe trivially removed.\n\nLast real user of PageReserved is swsusp, which uses PageReserved to\ndetermine whether a struct page points to valid memory or not.  This still\nneeds to be addressed (a generic page_is_ram() should work).\n\nA last caveat: the ZERO_PAGE is now refcounted and managed with rmap (and\nthus mapcounted and count towards shared rss).  These writes to the struct\npage could cause excessive cacheline bouncing on big systems.  There are a\nnumber of ways this could be addressed if it is an issue.\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\n\nRefcount bug fix for filemap_xip.c\n\nSigned-off-by: Carsten Otte \u003ccotte@de.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "92198f7eaa5df3479341dd8fa20c2c81aa3b1e25",
      "tree": "b2b7f8c73b94b4179d5002eaaa30f683b6dc5132",
      "parents": [
        "16c29b67fb3bbacfc2a71f9e5f7d85728ef45efa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Thu Jun 23 22:00:59 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Fri Jun 24 00:05:19 2005 -0700"
      },
      "message": "[PATCH] pass iocb to dio_iodone_t\n\nXFS will have to look at iocb-\u003eprivate to fix aio+dio.  No other filesystem\nis using the blockdev_direct_IO* end_io callback.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "29504ff3be784372c4e2f7e31681a3e0292c4d9a",
      "tree": "449f6598e10a1930d113fd7bbe3aa6ca37341d10",
      "parents": [
        "1f08ad02379530e1c970d3d104343b9907b4d1b4"
      ],
      "author": {
        "name": "Daniel McNeil",
        "email": "daniel@osdl.org",
        "time": "Sat Apr 16 15:25:50 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:25:50 2005 -0700"
      },
      "message": "[PATCH] Direct IO async short read fix\n\nThe direct I/O code is mapping the read request to the file system block.  If\nthe file size was not on a block boundary, the result would show the the read\nreading past EOF.  This was only happening for the AIO case.  The non-AIO case\ntruncates the result to match file size (in direct_io_worker).  This patch\ndoes the same thing for the AIO case, it truncates the result to match the\nfile size if the read reads past EOF.\n\nWhen I/O completes the result can be truncated to match the file size\nwithout using i_size_read(), thus the aio result now matches the number of\nbytes read to the end of file.\n\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"
    }
  ]
}
