)]}'
{
  "log": [
    {
      "commit": "c2c6ca417e2db7a519e6e92c82f4a933d940d076",
      "tree": "4b5f71682270b151e38e9649a40da30564dacfdd",
      "parents": [
        "facd07b07d2a7988f5ce849558838cc953847637"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sun May 23 11:00:55 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:56 2010 -0400"
      },
      "message": "direct-io: do not merge logically non-contiguous requests\n\nBtrfs cannot handle having logically non-contiguous requests submitted.  For\nexample if you have\n\nLogical:  [0-4095][HOLE][8192-12287]\nPhysical: [0-4095]      [4096-8191]\n\nNormally the DIO code would put these into the same BIO\u0027s.  The problem is we\nneed to know exactly what offset is associated with what BIO so we can do our\nchecksumming and unlocking properly, so putting them in the same BIO doesn\u0027t\nwork.  So add another check where we submit the current BIO if the physical\nblocks are not contigous OR the logical blocks are not contiguous.\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "facd07b07d2a7988f5ce849558838cc953847637",
      "tree": "269200329390f450d2bc7f0858a8ed114a418374",
      "parents": [
        "66f998f611897319b555364cefd5d6e88a205866"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sun May 23 11:00:55 2010 -0400"
      },
      "committer": {
        "name": "Chris Mason",
        "email": "chris.mason@oracle.com",
        "time": "Tue May 25 10:34:55 2010 -0400"
      },
      "message": "direct-io: add a hook for the fs to provide its own submit_bio function\n\nBecause BTRFS can do RAID and such, we need our own submit hook so we can setup\nthe bio\u0027s in the correct fashion, and handle checksum errors properly.  So there\nare a few changes here\n\n1) The submit_io hook.  This is straightforward, just call this instead of\nsubmit_bio.\n\n2) Allow the fs to return -ENOTBLK for reads.  Usually this has only worked for\nwrites, since writes can fallback onto buffered IO.  But BTRFS needs the option\nof falling back on buffered IO if it encounters a compressed extent, since we\nneed to read the entire extent in and decompress it.  So if we get -ENOTBLK back\nfrom get_block we\u0027ll return back and fallback on buffered just like the write\ncase.\n\nI\u0027ve tested these changes with fsx and everything seems to work.  Thanks,\n\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Chris Mason \u003cchris.mason@oracle.com\u003e\n"
    },
    {
      "commit": "06777d308f8f9ddb67798d34bf193101a4bdf06c",
      "tree": "defc74a60dc75d8fd2b860a3222de4a2e8ea4006",
      "parents": [
        "718deb6b61e34c200c1f2b706176d9aac334cb2d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 04:52:13 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 04:52:13 2009 -0500"
      },
      "message": "dio: fix use-after-free\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5fe878ae7f82fbf0830dbfaee4c5ca18f3aee442",
      "tree": "7e7ad290cfb30705948d8ebeb46b013afa913f42",
      "parents": [
        "23aee091d804efa8cc732a31c1ae5d625e1ec886"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Dec 15 16:47:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:13 2009 -0800"
      },
      "message": "direct-io: cleanup blockdev_direct_IO locking\n\nCurrently the locking in blockdev_direct_IO is a mess, we have three\ndifferent locking types and very confusing checks for some of them.  The\nmost complicated one is DIO_OWN_LOCKING for reads, which happens to not\nactually be used.\n\nThis patch gets rid of the DIO_OWN_LOCKING - as mentioned above the read\ncase is unused anyway, and the write side is almost identical to\nDIO_NO_LOCKING.  The difference is that DIO_NO_LOCKING always sets the\ncreate argument for the get_blocks callback to zero, but we can easily\nmove that to the actual get_blocks callbacks.  There are four users of the\nDIO_NO_LOCKING mode: gfs already ignores the create argument and thus is\nfine with the new version, ocfs2 only errors out if create were ever set,\nand we can remove this dead code now, the block device code only ever uses\ncreate for an error message if we are fully beyond the device which can\nnever happen, and last but not least XFS will need the new behavour for\nwrites.\n\nNow we can replace the lock_type variable with a flags one, where no flag\nmeans the DIO_NO_LOCKING behaviour and DIO_LOCKING is kept as the first\nflag.  Separate out the check for not allowing to fill holes into a\nseparate flag, although for now both flags always get set at the same\ntime.\n\nAlso revamp the documentation of the locking scheme to actually make\nsense.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nCc: Mark Fasheh \u003cmfasheh@suse.com\u003e\nCc: Joel Becker \u003cjoel.becker@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": "23aee091d804efa8cc732a31c1ae5d625e1ec886",
      "tree": "2ca3456dba4771600ba62822c81f85b61074088a",
      "parents": [
        "fac046ad0b1ee2c4244ebf43a26433ef0ea29ae4"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Tue Dec 15 16:47:49 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Dec 16 07:20:13 2009 -0800"
      },
      "message": "dio: don\u0027t zero out the pages array inside struct dio\n\nIntel reported a performance regression caused by the following commit:\n\ncommit 848c4dd5153c7a0de55470ce99a8e13a63b4703f\nAuthor: Zach Brown \u003czach.brown@oracle.com\u003e\nDate:   Mon Aug 20 17:12:01 2007 -0700\n\n    dio: zero struct dio with kzalloc instead of manually\n\n    This patch uses kzalloc to zero all of struct dio rather than\n    manually trying to track which fields we rely on being zero.  It\n    passed aio+dio stress testing and some bug regression testing on\n    ext3.\n\n    This patch was introduced by Linus in the conversation that lead up\n    to Badari\u0027s minimal fix to manually zero .map_bh.b_state in commit:\n\n      6a648fa72161d1f6468dabd96c5d3c0db04f598a\n\n    It makes the code a bit smaller.  Maybe a couple fewer cachelines to\n    load, if we\u0027re lucky:\n\n       text    data     bss     dec     hex filename\n    3285925  568506 1304616 5159047  4eb887 vmlinux\n    3285797  568506 1304616 5158919  4eb807 vmlinux.patched\n\n    I was unable to measure a stable difference in the number of cpu\n    cycles spent in blockdev_direct_IO() when pushing aio+dio 256K reads\n    at ~340MB/s.\n\n    So the resulting intent of the patch isn\u0027t a performance gain but to\n    avoid 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\n    code.\n\nZach surmised that zeroing out the page array was what caused most of\nthe problem, and suggested the approach taken in the attached patch for\nresolving the issue.  Intel re-tested with this patch and saw a 0.6%\nperformance gain (the original regression was 0.5%).\n\n[akpm@linux-foundation.org: add comment]\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nAcked-by: Zach Brown \u003czach.brown@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": "d9449ce35a1e8fb58dd2d419f9215562a14ecca0",
      "tree": "322f88901d3e494134354dcd5b7f63fa723145e8",
      "parents": [
        "c16632bab1a17e357cec66920ceb3f0630009360"
      ],
      "author": {
        "name": "Vivek Goyal",
        "email": "vgoyal@redhat.com",
        "time": "Thu Nov 26 09:45:40 2009 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Nov 26 09:46:46 2009 +0100"
      },
      "message": "Fix regression in direct writes performance due to WRITE_ODIRECT flag removal\n\nThere seems to be a regression in direct write path due to following\ncommit in for-2.6.33 branch of block tree.\n\ncommit 1af60fbd759d31f565552fea315c2033947cfbe6\nAuthor: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nDate:   Fri Oct 2 18:56:53 2009 -0400\n\n    block: get rid of the WRITE_ODIRECT flag\n\nMarking direct writes as WRITE_SYNC_PLUG instead of WRITE_ODIRECT, sets\nthe NOIDLE flag in bio and hence in request. This tells CFQ to not expect\nmore request from the queue and not idle on it (despite the fact that\nqueue\u0027s think time is less and it is not seeky).\n\nSo direct writers lose big time when competing with sequential readers.\n\nUsing fio, I have run one direct writer and two sequential readers and\nfollowing are the results with 2.6.32-rc7 kernel and with for-2.6.33\nbranch.\n\nTest\n\u003d\u003d\u003d\u003d\n1 direct writer and 2 sequential reader running simultaneously.\n\n[global]\ndirectory\u003d/mnt/sdc/fio/\nruntime\u003d10\n\n[seqwrite]\nrw\u003dwrite\nsize\u003d4G\ndirect\u003d1\n\n[seqread]\nrw\u003dread\nsize\u003d2G\nnumjobs\u003d2\n\n2.6.32-rc7\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\ndirect writes: aggrb\u003d2,968KB/s\nreaders\t     : aggrb\u003d101MB/s\n\nfor-2.6.33 branch\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\ndirect write: aggrb\u003d19KB/s\nreaders\t      aggrb\u003d137MB/s\n\nThis patch brings back the WRITE_ODIRECT flag, with the difference that we\ndon\u0027t set the BIO_RW_UNPLUG flag so that device is not unplugged after\nsubmission of request and an explicit unplug from submitter is required.\n\nThat way we fix the jeff\u0027s issue of not enough merging taking place in aio\npath as well as make sure direct writes get their fair share.\n\nAfter the fix\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nfor-2.6.33 + fix\n----------------\ndirect writes: aggrb\u003d2,728KB/s\nreads: aggrb\u003d103MB/s\n\nThanks\nVivek\n\nSigned-off-by: Vivek Goyal \u003cvgoyal@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cfb1e33eed48165763edc7a4a067cf5f74898d0b",
      "tree": "d0e0bdd0664615b1f7be6cf770476e16dbcad116",
      "parents": [
        "1af60fbd759d31f565552fea315c2033947cfbe6"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri Oct 02 18:57:36 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Oct 28 09:29:25 2009 +0100"
      },
      "message": "aio: implement request batching\n\nHi,\n\nSome workloads issue batches of small I/O, and the performance is poor\ndue to the call to blk_run_address_space for every single iocb.  Nathan\nRoberts pointed this out, and suggested that by deferring this call\nuntil all I/Os in the iocb array are submitted to the block layer, we\ncan realize some impressive performance gains (up to 30% for sequential\n4k reads in batches of 16).\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "1af60fbd759d31f565552fea315c2033947cfbe6",
      "tree": "e973002ee2496a9537526c8aef111f380071a1a0",
      "parents": [
        "1a1238a7dd48e48b3bba8f426a1d61c22c80d6d1"
      ],
      "author": {
        "name": "Jeff Moyer",
        "email": "jmoyer@redhat.com",
        "time": "Fri Oct 02 18:56:53 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Oct 28 09:29:25 2009 +0100"
      },
      "message": "block: get rid of the WRITE_ODIRECT flag\n\nHi,\n\nThe WRITE_ODIRECT flag is only used in one place, and that code path\nhappens to also call blk_run_address_space.  The introduction of this\nflag, then, could result in the device being unplugged twice for every\nI/O.\n\nFurther, with the batching changes in the next patch, we don\u0027t want an\nO_DIRECT write to imply a queue unplug.\n\nSigned-off-by: Jeff Moyer \u003cjmoyer@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1",
      "tree": "d60d15a082171c58ac811d547d51a9c3119f23e3",
      "parents": [
        "9bd7de51ee8537094656149eaf45338cadb7d7d4"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:49 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Do away with the notion of hardsect_size\n\nUntil now we have had a 1:1 mapping between storage device physical\nblock size and the logical block sized used when addressing the device.\nWith SATA 4KB drives coming out that will no longer be the case.  The\nsector size will be 4KB but the logical block size will remain\n512-bytes.  Hence we need to distinguish between the physical block size\nand the logical ditto.\n\nThis patch renames hardsect_size to logical_block_size.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "4d1f9fdb6177a9bdecf26976337dd39abcc8edbc",
      "tree": "55cf4b785995ea84635aa952bfbb6a8be3edacdc",
      "parents": [
        "15afd1cc7b624e1c94fdf824ec5af611050b150c"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Wed Apr 15 10:35:52 2009 +0530"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Wed Apr 15 12:10:13 2009 +0200"
      },
      "message": "dio: Remove code handling bio_alloc failure with __GFP_WAIT\n\nRemove code handling bio_alloc failure with __GFP_WAIT.\nGFP_KERNEL implies __GFP_WAIT.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "aeb6fafb8fa53266d70ca7474fcda2bdaf96524a",
      "tree": "ebe8e0c616a9dbfdfe5184b64d0150ea02d3d1b2",
      "parents": [
        "644b2d99b7a8677a56909a7b1fde31677eba4471"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Apr 06 14:48:07 2009 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 06 08:04:54 2009 -0700"
      },
      "message": "block: Add flag for telling the IO schedulers NOT to anticipate more IO\n\nBy default, CFQ will anticipate more IO from a given io context if the\npreviously completed IO was sync. This used to be fine, since the only\nsync IO was reads and O_DIRECT writes. But with more \"normal\" sync writes\nbeing used now, we don\u0027t want to anticipate for those.\n\nAdd a bio/request flag that informs the IO scheduler that this is a sync\nrequest that we should not idle for. Introduce WRITE_ODIRECT specifically\nfor O_DIRECT writes, and make sure that the other sync writes set this\nflag.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "0f64415d42760379753e6088787ce3fd3e069509",
      "tree": "85c9d3be88e56fb2d62558689744dbdd386cc745",
      "parents": [
        "09f445e7f5107c91be12ed386350de6cd055e0a4"
      ],
      "author": {
        "name": "Dmitri Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Tue Jan 06 14:40:04 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jan 06 15:59:06 2009 -0800"
      },
      "message": "fs: truncate blocks outside i_size after O_DIRECT write error\n\nIn case of error extending write may have instantiated a few blocks\noutside i_size.  We need to trim these blocks.  We have to do it\n*regardless* to blocksize.  At least ext2, ext3 and reiserfs interpret\n(i_size \u003c biggest block) condition as error.  Fsck will complain about\nwrong i_size.  Then fsck will fix the error by changing i_size according\nto the biggest block.  This is bad because this blocks contain garbage\nfrom previous write attempt.  And result in data corruption.\n\n####TESTCASE_BEGIN\n$touch /mnt/test/BIG_FILE\n## at this moment /mnt/test/BIG_FILE size and blocks equal to zero\nopen(\"/mnt/test/BIG_FILE\", O_WRONLY|O_CREAT|O_DIRECT, 0666) \u003d 3\nwrite(3, \"aaaaaaaaaaaa\"..., 104857600) \u003d -1 ENOSPC (No space left on device)\n## size and block sould\u0027t be changed because write op failed.\n$stat /mnt/test/BIG_FILE\nFile: `/mnt/test/BIG_FILE\u0027\nSize: 0 Blocks: 110896 IO Block: 1024 regular empty file\n\u003c\u003c\u003c\u003c\u003c\u003c\u003c\u003c^^^^^^^^^^^^^^^^^^^^^^^^^^^^^file size is less than biggest block idx\nDevice: fe07h/65031d Inode: 14 Links: 1\nAccess: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)\nAccess: 2007-01-24 20:03:38.000000000 +0300\nModify: 2007-01-24 20:03:38.000000000 +0300\nChange: 2007-01-24 20:03:39.000000000 +0300\n\n#fsck.ext3 -f /dev/VG/test\ne2fsck 1.39 (29-May-2006)\nPass 1: Checking inodes, blocks, and sizes\nInode 14, i_size is 0, should be 56556544. Fix\u003cy\u003e? yes\nPass 2: Checking directory structure\n....\n#####TESTCASE_ENDdiff --git a/fs/direct-io.c b/fs/direct-io.c\nindex af0558d..4e88bea 100644\n\n[akpm@linux-foundation.org: use i_size_read()]\nSigned-off-by: Dmitri Monakhov \u003cdmonakhov@openvz.org\u003e\nCc: Zach Brown \u003czach.brown@oracle.com\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: Badari Pulavarty \u003cpbadari@us.ibm.com\u003e\nCc: Chris Mason \u003cchris.mason@oracle.com\u003e\nCc: Dave Chinner \u003cdavid@fromorbit.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e1f8e87449147ffe5ea3de64a46af7de450ce279",
      "tree": "304e90a6747f5a7586a67305b7225ed4b4dbb53a",
      "parents": [
        "8033fe65a6d6c0e47ba9e3cb2e4e6902f9dfb8dd"
      ],
      "author": {
        "name": "Francois Cami",
        "email": "francois.cami@free.fr",
        "time": "Wed Oct 15 22:01:59 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 16 11:21:32 2008 -0700"
      },
      "message": "Remove Andrew Morton\u0027s old email accounts\n\nPeople can use the real name an an index into MAINTAINERS to find the\ncurrent email address.\n\nSigned-off-by: Francois Cami \u003cfrancois.cami@free.fr\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "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"
    }
  ]
}
