)]}'
{
  "log": [
    {
      "commit": "6ed3003c19a96fe18edf8179c4be6fe14abbebbc",
      "tree": "dba37b52eb4c68fedc9e842a69e2c0c3b4a5aa31",
      "parents": [
        "73c34431c7119d0bc7d3436abfad75fe47b2c51f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:40:00 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:19 2008 -0800"
      },
      "message": "md: fix an occasional deadlock in raid5\n\nraid5\u0027s \u0027make_request\u0027 function calls generic_make_request on underlying\ndevices and if we run out of stripe heads, it could end up waiting for one of\nthose requests to complete.  This is bad as recursive calls to\ngeneric_make_request go on a queue and are not even attempted until\nmake_request completes.\n\nSo: don\u0027t make any generic_make_request calls in raid5 make_request until all\nwaiting has been done.  We do this by simply setting STRIPE_HANDLE instead of\ncalling handle_stripe().\n\nIf we need more stripe_heads, raid5d will get called to process the pending\nstripe_heads which will call generic_make_request from a\n\nThis change by itself causes a performance hit.  So add a change so that\nraid5_activate_delayed is only called at unplug time, never in raid5.  This\nseems to bring back the performance numbers.  Calling it in raid5d was\nsometimes too soon...\n\nNeil said:\n\n  How about we queue it for 2.6.25-rc1 and then about when -rc2 comes out,\n  we queue it for 2.6.24.y?\n\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nTested-by: dean gaudet \u003cdean@arctic.org\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": "d089c6af10c2be5988f03667d6d22fe6085fbe5e",
      "tree": "815eb0596bd7c908f30c268da6b5c5eff0e0bc21",
      "parents": [
        "29ac4aa3fc68a86279aca50f20df4d614de2e204"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:19 2008 -0800"
      },
      "message": "md: change ITERATE_RDEV to rdev_for_each\n\nAs this is more in line with common practice in the kernel.  Also swap the\nargs around to be more like list_for_each.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c620727779f7cc8ea96efb71f0651a26349e59c1",
      "tree": "777abdad9c9ef10cb4df5c0efc736e6c64851ed8",
      "parents": [
        "c303da6d713b87b7b3f999f5acce8ecc76ff1adb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:18 2008 -0800"
      },
      "message": "md: allow a maximum extent to be set for resyncing\n\nThis allows userspace to control resync/reshape progress and synchronise it\nwith other activities, such as shared access in a SAN, or backing up critical\nsections during a tricky reshape.\n\nWriting a number of sectors (which must be a multiple of the chunk size if\nsuch is meaningful) causes a resync to pause when it gets to that point.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b47490c9bc73d0b34e4c194db40de183e592e446",
      "tree": "8334581aff7aa0b199df04c6f9d707c1902ad14f",
      "parents": [
        "66c811e99322767bad5db4368de93aac604f02a2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:50 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:18 2008 -0800"
      },
      "message": "md: Update md bitmap during resync.\n\nCurrently an md array with a write-intent bitmap does not updated that bitmap\nto reflect successful partial resync.  Rather the entire bitmap is updated\nwhen the resync completes.\n\nThis is because there is no guarentee that resync requests will complete in\norder, and tracking each request individually is unnecessarily burdensome.\n\nHowever there is value in regularly updating the bitmap, so add code to\nperiodically pause while all pending sync requests complete, then update the\nbitmap.  Doing this only every few seconds (the same as the bitmap update\ntime) does not notciably affect resync performance.\n\n[snitzer@gmail.com: export bitmap_cond_end_sync]\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"Mike Snitzer\" \u003csnitzer@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": "0f94e87cdeaaac9f0f9a28a5dd2a5070b87cd3e8",
      "tree": "6c35efe23f565d27bec046d8eed3c5901e1d0090",
      "parents": [
        "5b7741b3325d0d94c88b2ad46657a536890aaa2f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 08 15:32:53 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jan 08 16:10:35 2008 -0800"
      },
      "message": "md: fix data corruption when a degraded raid5 array is reshaped\n\nWe currently do not wait for the block from the missing device to be\ncomputed from parity before copying data to the new stripe layout.\n\nThe change in the raid6 code is not techincally needed as we don\u0027t delay\ndata block recovery in the same way for raid6 yet.  But making the change\nnow is safer long-term.\n\nThis bug exists in 2.6.23 and 2.6.24-rc\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6c55be8b962f1bdc592d579e81fc27b11ea53dfc",
      "tree": "3413cc2c8e26afdbc498cbdbd96bc2fa9733b2a6",
      "parents": [
        "5b23dbe8173c212d6a326e35347b038705603d39"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Nov 14 16:59:35 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Nov 14 18:45:39 2007 -0800"
      },
      "message": "raid5: fix unending write sequence\n\n\u003cdebug output from Joel\u0027s system\u003e\nhandling stripe 7629696, state\u003d0x14 cnt\u003d1, pd_idx\u003d2 ops\u003d0:0:0\ncheck 5: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800ffcffcc0 written 0000000000000000\ncheck 4: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800fdd4e360 written 0000000000000000\ncheck 3: state 0x1 toread 0000000000000000 read 0000000000000000 write 0000000000000000 written 0000000000000000\ncheck 2: state 0x1 toread 0000000000000000 read 0000000000000000 write 0000000000000000 written 0000000000000000\ncheck 1: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800ff517e40 written 0000000000000000\ncheck 0: state 0x6 toread 0000000000000000 read 0000000000000000 write fffff800fd4cae60 written 0000000000000000\nlocked\u003d4 uptodate\u003d2 to_read\u003d0 to_write\u003d4 failed\u003d0 failed_num\u003d0\nfor sector 7629696, rmw\u003d0 rcw\u003d0\n\u003c/debug\u003e\n\nThese blocks were prepared to be written out, but were never handled in\nops_run_biodrain(), so they remain locked forever.  The operations flags\nare all clear which means handle_stripe() thinks nothing else needs to be\ndone.\n\nThis state suggests that the STRIPE_OP_PREXOR bit was sampled \u0027set\u0027 when it\nshould not have been.  This patch cleans up cases where the code looks at\nsh-\u003eops.pending when it should be looking at the consistent stack-based\nsnapshot of the operations flags.\n\nReport from Joel:\n\tResync done. Patch fix this bug.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nTested-by: Joel Bertrand \u003cjoel.bertrand@systella.fr\u003e\nCc: \u003cstable@kernel.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2ad8b1ef11c98c5603580878aebf9f1bc74129e4",
      "tree": "f7bdc2484513f6ffd174b1385bb216dcf97d2c78",
      "parents": [
        "d85532ed284e63b5c56eaf2418f262822af60be4"
      ],
      "author": {
        "name": "Alan D. Brunelle",
        "email": "Alan.Brunelle@hp.com",
        "time": "Wed Nov 07 14:26:56 2007 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Nov 09 13:41:32 2007 +0100"
      },
      "message": "Add UNPLUG traces to all appropriate places\n\nAdded blk_unplug interface, allowing all invocations of unplugs to result\nin a generated blktrace UNPLUG.\n\nSigned-off-by: Alan D. Brunelle \u003cAlan.Brunelle@hp.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "def6ae26a9e69c3e6d0f0054524c76fd32420ecd",
      "tree": "3688a3d5d8507835e0f55fb3e3d83b52cfa049a7",
      "parents": [
        "139b82984af5a98e4b03fd01616d79fc4970128a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Mon Nov 05 14:51:02 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Nov 05 15:12:32 2007 -0800"
      },
      "message": "md: fix misapplied patch in raid5.c\n\ncommit 4ae3f847e49e3787eca91bced31f8fd328d50496 (\"md: raid5: fix\nclearing of biofill operations\") did not get applied correctly,\npresumably due to substantial similarities between handle_stripe5 and\nhandle_stripe6.\n\nThis patch moves the chunk of new code from handle_stripe6 (where it isn\u0027t\nneeded (yet)) to handle_stripe5.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"Dan Williams\" \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ae3f847e49e3787eca91bced31f8fd328d50496",
      "tree": "9fab60c4898e49cf1cf04e360dc63ae1d0ef5bd2",
      "parents": [
        "85bfb4da8cad483a4e550ec89060d05a4daf895b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Oct 22 20:45:11 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Oct 23 08:32:06 2007 -0700"
      },
      "message": "md: raid5: fix clearing of biofill operations\n\nops_complete_biofill() runs outside of spin_lock(\u0026sh-\u003elock) and clears the\n\u0027pending\u0027 and \u0027ack\u0027 bits.  Since the test_and_ack_op() macro only checks\nagainst \u0027complete\u0027 it can get an inconsistent snapshot of pending work.\n\nMove the clearing of these bits to handle_stripe5(), under the lock.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nTested-by: Joel Bertrand \u003cjoel.bertrand@systella.fr\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Stable \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": "fd5d806266935179deda1502101624832eacd01f",
      "tree": "b0d01c2ed7d754f2a6daef6c77d108a81d8a470e",
      "parents": [
        "bf2de6f5a4faf0197268f18d08969b003b87b6e8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:05:02 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Oct 16 11:05:02 2007 +0200"
      },
      "message": "block: convert blkdev_issue_flush() to use empty barriers\n\nThen we can get rid of -\u003eissue_flush_fn() and all the driver private\nimplementations of that.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\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": "e4d84909dd48b5e5806a5d18b881e1ca1610ba9b",
      "tree": "85aa712ebc034a31b9a2a5db2f0e7ce4951cb440",
      "parents": [
        "6247cdc2cd334dad0ea5428245a7d8f4b075f21e"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Sep 24 10:06:13 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Sep 24 13:23:35 2007 -0700"
      },
      "message": "raid5: fix 2 bugs in ops_complete_biofill\n\n1/ ops_complete_biofill tried to avoid calling handle_stripe since all the\nstate necessary to return read completions is available.  However the\nprocess of determining whether more read requests are pending requires\nlocking the stripe (to block add_stripe_bio from updating dev-\u003etoead).\nops_complete_biofill can run in tasklet context, so rather than upgrading\nall the stripe locks from spin_lock to spin_lock_bh this patch just\nunconditionally reschedules handle_stripe after completing the read\nrequest.\n\n2/ ops_complete_biofill needlessly qualified processing R5_Wantfill with\ndev-\u003etoread.  The result being that the \u0027biofill\u0027 pending bit is cleared\nbefore handling the pending read-completions on dev-\u003eread.  R5_Wantfill can\nbe unconditionally handled because the \u0027biofill\u0027 pending bit prevents new\nR5_Wantfill requests from being seen by ops_run_biofill and\nops_complete_biofill.\n\nFound-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\n[neilb@suse.de: simpler fix for bug 1 than moving code]\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "a2e0855182e2be26b252745b2bb7558705cb0dd2",
      "tree": "d7a1457b1785cff5c018b37587ce2dbef159e83d",
      "parents": [
        "b70ae1d9f69ba52767af89f90fd79587669bc7ff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Sep 11 15:23:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Sep 11 17:21:19 2007 -0700"
      },
      "message": "md: fix some bugs with growing raid5/raid6 arrays.\n\nThe recent changed to raid5 to allow offload of parity calculation etc\nintroduced some bugs in the code for growing (i.e.  adding a disk to) raid5\nand raid6.  This fixes them\n\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "165125e1e480f9510a5ffcfbfee4e3ee38c05f23",
      "tree": "8009c8a5ff09e26dc2418d42f66ecafb055c52a2",
      "parents": [
        "f695baf2df9e0413d3521661070103711545207a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "message": "[BLOCK] Get rid of request_queue_t typedef\n\nSome of the code has been gradually transitioned to using the proper\nstruct request_queue, but there\u0027s lots left. So do a full sweet of\nthe kernel and get rid of this typedef and replace its uses with\nthe proper type.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "eb0645a8b1f14da300f40bb9f424640cd1181fbf",
      "tree": "462789626fcd1775bec80d74d19bcd68797589c8",
      "parents": [
        "7c6129c68fe90a61166800b40217a850b8faee98"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 20 00:31:46 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jul 20 08:44:19 2007 -0700"
      },
      "message": "async_tx: fix kmap_atomic usage in async_memcpy\n\nAndrew Morton:\n\t[async_memcpy] is very wrong if both ASYNC_TX_KMAP_DST and\n\tASYNC_TX_KMAP_SRC can ever be set.  We\u0027ll end up using the same kmap\n\tslot for both src add dest and we get either corrupted data or a BUG.\n\nEvgeniy Polyakov:\n\tBtw, shouldn\u0027t it always be kmap_atomic() even if flag is not set.\n\tThat pages are usual one returned by alloc_page().\n\nSo fix the usage of kmap_atomic and kill the ASYNC_TX_KMAP_DST and\nASYNC_TX_KMAP_SRC flags.\n\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Evgeniy Polyakov \u003cjohnpol@2ka.mipt.ru\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "20c2df83d25c6a95affe6157a4c9cac4cf5ffaac",
      "tree": "415c4453d2b17a50abe7a3e515177e1fa337bd67",
      "parents": [
        "64fb98fc40738ae1a98bcea9ca3145b89fb71524"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "committer": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Fri Jul 20 10:11:58 2007 +0900"
      },
      "message": "mm: Remove slab destructors from kmem_cache_create().\n\nSlab destructors were no longer supported after Christoph\u0027s\nc59def9f222d44bb7e2f0a559f2906191a0862d7 change. They\u0027ve been\nBUGs for both slab and slub, and slob never supported them\neither.\n\nThis rips out support for the dtor pointer from kmem_cache_create()\ncompletely and fixes up every single callsite in the kernel (there were\nabout 224, not including the slab allocator definitions themselves,\nor the documentation references).\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "f6dff381af01006ffae3c23cd2e07e30584de0ec",
      "tree": "257502c7a1a1392ffa91687d10331b08e21d2012",
      "parents": [
        "830ea01673a397798d1281d2022615559f5001bb"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:31 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:18 2007 -0700"
      },
      "message": "md: remove raid5 compute_block and compute_parity5\n\nreplaced by raid5_run_ops\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "830ea01673a397798d1281d2022615559f5001bb",
      "tree": "33413032374605648a1e47f059b93ffc39e33717",
      "parents": [
        "f0a50d3754c7f1b7f05f45b1c0b35d20445316b5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:31 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:17 2007 -0700"
      },
      "message": "md: handle_stripe5 - request io processing in raid5_run_ops\n\nI/O submission requests were already handled outside of the stripe lock in\nhandle_stripe.  Now that handle_stripe is only tasked with finding work,\nthis logic belongs in raid5_run_ops.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f0a50d3754c7f1b7f05f45b1c0b35d20445316b5",
      "tree": "c54b572ad4c4c9b48f887a9ecc28ec7b6166d552",
      "parents": [
        "b5e98d65d34a1c11a2135ea8a9b2619dbc7216c8"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:31 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:17 2007 -0700"
      },
      "message": "md: handle_stripe5 - add request/completion logic for async expand ops\n\nWhen a stripe is being expanded bulk copying takes place to move the data\nfrom the old stripe to the new.  Since raid5_run_ops only operates on one\nstripe at a time these bulk copies are handled in-line under the stripe\nlock.  In the dma offload case we poll for the completion of the operation.\n\nAfter the data has been copied into the new stripe the parity needs to be\nrecalculated across the new disks.  We reuse the existing postxor\nfunctionality to carry out this calculation.  By setting STRIPE_OP_POSTXOR\nwithout setting STRIPE_OP_BIODRAIN the completion path in handle stripe\ncan differentiate expand operations from normal write operations.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5e98d65d34a1c11a2135ea8a9b2619dbc7216c8",
      "tree": "bf88aad375bb0cbf6c346ec912c06c2607850b21",
      "parents": [
        "e89f89629b5de76e504d1be75c82c4a6b2419583"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:31 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:17 2007 -0700"
      },
      "message": "md: handle_stripe5 - add request/completion logic for async read ops\n\nWhen a read bio is attached to the stripe and the corresponding block is\nmarked R5_UPTODATE, then a read (biofill) operation is scheduled to copy\nthe data from the stripe cache to the bio buffer.  handle_stripe flags the\nblocks to be operated on with the R5_Wantfill flag.  If new read requests\narrive while raid5_run_ops is running they will not be handled until\nhandle_stripe is scheduled to run again.\n\nChangelog:\n* cleanup to_read and to_fill accounting\n* do not fail reads that have reached the cache\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e89f89629b5de76e504d1be75c82c4a6b2419583",
      "tree": "96f54c576f51207e4f4a75f4770e9cf2707fc948",
      "parents": [
        "f38e12199a94ca458e4f03c5a2c984fb80adadc5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:31 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:17 2007 -0700"
      },
      "message": "md: handle_stripe5 - add request/completion logic for async check ops\n\nCheck operations are scheduled when the array is being resynced or an\nexplicit \u0027check/repair\u0027 command was sent to the array.  Previously check\noperations would destroy the parity block in the cache such that even if\nparity turned out to be correct the parity block would be marked\n!R5_UPTODATE at the completion of the check.  When the operation can be\ncarried out by a dma engine the assumption is that it can check parity as a\nread-only operation.  If raid5_run_ops notices that the check was handled\nby hardware it will preserve the R5_UPTODATE status of the parity disk.\n\nWhen a check operation determines that the parity needs to be repaired we\nreuse the existing compute block infrastructure to carry out the operation.\nRepair operations imply an immediate write back of the data, so to\ndifferentiate a repair from a normal compute operation the\nSTRIPE_OP_MOD_REPAIR_PD flag is added.\n\nChangelog:\n* remove test_and_set/test_and_clear BUG_ONs, Neil Brown\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f38e12199a94ca458e4f03c5a2c984fb80adadc5",
      "tree": "706f54c46d4a4c839dd43c1403854dde860c6be5",
      "parents": [
        "e33129d84130459dbb764a1a52a4bfceab3da978"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:30 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:17 2007 -0700"
      },
      "message": "md: handle_stripe5 - add request/completion logic for async compute ops\n\nhandle_stripe will compute a block when a backing disk has failed, or when\nit determines it can save a disk read by computing the block from all the\nother up-to-date blocks.\n\nPreviously a block would be computed under the lock and subsequent logic in\nhandle_stripe could use the newly up-to-date block.  With the raid5_run_ops\nimplementation the compute operation is carried out a later time outside\nthe lock.  To preserve the old functionality we take advantage of the\ndependency chain feature of async_tx to flag the block as R5_Wantcompute\nand then let other parts of handle_stripe operate on the block as if it\nwere up-to-date.  raid5_run_ops guarantees that the block will be ready\nbefore it is used in another operation.\n\nHowever, this only works in cases where the compute and the dependent\noperation are scheduled at the same time.  If a previous call to\nhandle_stripe sets the R5_Wantcompute flag there is no facility to pass the\nasync_tx dependency chain across successive calls to raid5_run_ops.  The\nreq_compute variable protects against this case.\n\nChangelog:\n* remove the req_compute BUG_ON\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e33129d84130459dbb764a1a52a4bfceab3da978",
      "tree": "c3f2742dac468a1c62e14ec1f2ec0cb5a37ee966",
      "parents": [
        "d84e0f10d38393f617227f0c831a99c69294651f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:30 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:16 2007 -0700"
      },
      "message": "md: handle_stripe5 - add request/completion logic for async write ops\n\nAfter handle_stripe5 decides whether it wants to perform a\nread-modify-write, or a reconstruct write it calls\nhandle_write_operations5.  A read-modify-write operation will perform an\nxor subtraction of the blocks marked with the R5_Wantprexor flag, copy the\nnew data into the stripe (biodrain) and perform a postxor operation across\nall up-to-date blocks to generate the new parity.  A reconstruct write is run\nwhen all blocks are already up-to-date in the cache so all that is needed\nis a biodrain and postxor.\n\nOn the completion path STRIPE_OP_PREXOR will be set if the operation was a\nread-modify-write.  The STRIPE_OP_BIODRAIN flag is used in the completion\npath to differentiate write-initiated postxor operations versus\nexpansion-initiated postxor operations.  Completion of a write triggers i/o\nto the drives.\n\nChangelog:\n* make the \u0027rcw\u0027 parameter to handle_write_operations5 a simple flag, Neil Brown\n* remove test_and_set/test_and_clear BUG_ONs, Neil Brown\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d84e0f10d38393f617227f0c831a99c69294651f",
      "tree": "5d0836f024f1f13ac6f1b2b2d3004244cb0fa649",
      "parents": [
        "91c00924846a0034020451c280c76baa4299f9dc"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:30 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:16 2007 -0700"
      },
      "message": "md: common infrastructure for running operations with raid5_run_ops\n\nAll the handle_stripe operations that are to be transitioned to use\nraid5_run_ops need a method to coherently gather work under the stripe-lock\nand hand that work off to raid5_run_ops.  The \u0027get_stripe_work\u0027 routine\nruns under the lock to read all the bits in sh-\u003eops.pending that do not\nhave the corresponding bit set in sh-\u003eops.ack.  This modified \u0027pending\u0027\nbitmap is then passed to raid5_run_ops for processing.\n\nThe transition from \u0027ack\u0027 to \u0027completion\u0027 does not need similar protection\nas the existing release_stripe infrastructure will guarantee that\nhandle_stripe will run again after a completion bit is set, and\nhandle_stripe can tolerate a sh-\u003eops.completed bit being set while the lock\nis held.\n\nA call to async_tx_issue_pending_all() is added to raid5d to kick the\noffload engines once all pending stripe operations work has been submitted.\nThis enables batching of the submission and completion of operations.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "91c00924846a0034020451c280c76baa4299f9dc",
      "tree": "7124ed6706937b793a10c37a861c5fc0f2e5b348",
      "parents": [
        "45b4233caac05da0118b608a9fc2a40a9fc580cd"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 13:52:30 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:15 2007 -0700"
      },
      "message": "md: raid5_run_ops - run stripe operations outside sh-\u003elock\n\nWhen the raid acceleration work was proposed, Neil laid out the following\nattack plan:\n\n1/ move the xor and copy operations outside spin_lock(\u0026sh-\u003elock)\n2/ find/implement an asynchronous offload api\n\nThe raid5_run_ops routine uses the asynchronous offload api (async_tx) and\nthe stripe_operations member of a stripe_head to carry out xor+copy\noperations asynchronously, outside the lock.\n\nTo perform operations outside the lock a new set of state flags is needed\nto track new requests, in-flight requests, and completed requests.  In this\nnew model handle_stripe is tasked with scanning the stripe_head for work,\nupdating the stripe_operations structure, and finally dropping the lock and\ncalling raid5_run_ops for processing.  The following flags outline the\nrequests that handle_stripe can make of raid5_run_ops:\n\nSTRIPE_OP_BIOFILL\n - copy data into request buffers to satisfy a read request\nSTRIPE_OP_COMPUTE_BLK\n - generate a missing block in the cache from the other blocks\nSTRIPE_OP_PREXOR\n - subtract existing data as part of the read-modify-write process\nSTRIPE_OP_BIODRAIN\n - copy data out of request buffers to satisfy a write request\nSTRIPE_OP_POSTXOR\n - recalculate parity for new data that has entered the cache\nSTRIPE_OP_CHECK\n - verify that the parity is correct\nSTRIPE_OP_IO\n - submit i/o to the member disks (note this was already performed outside\n   the stripe lock, but it made sense to add it as an operation type\n\nThe flow is:\n1/ handle_stripe sets STRIPE_OP_* in sh-\u003eops.pending\n2/ raid5_run_ops reads sh-\u003eops.pending, sets sh-\u003eops.ack, and submits the\n   operation to the async_tx api\n3/ async_tx triggers the completion callback routine to set\n   sh-\u003eops.complete and release the stripe\n4/ handle_stripe runs again to finish the operation and optionally submit\n   new operations that were previously blocked\n\nNote this patch just defines raid5_run_ops, subsequent commits (one per\nmajor operation type) modify handle_stripe to take advantage of this\nroutine.\n\nChangelog:\n* removed ops_complete_biodrain in favor of ops_complete_postxor and\n  ops_complete_write.\n* removed the raid5_run_ops workqueue\n* call bi_end_io for reads in ops_complete_biofill, saves a call to\n  handle_stripe\n* explicitly handle the 2-disk raid5 case (xor becomes memcpy), Neil Brown\n* fix race between async engines and bi_end_io call for reads, Neil Brown\n* remove unnecessary spin_lock from ops_complete_biofill\n* remove test_and_set/test_and_clear BUG_ONs, Neil Brown\n* remove explicit interrupt handling for channel switching, this feature\n  was absorbed (i.e. it is now implicit) by the async_tx api\n* use return_io in ops_complete_biofill\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "45b4233caac05da0118b608a9fc2a40a9fc580cd",
      "tree": "ebc65304c088b6f2162c5ba4e04382bd49736040",
      "parents": [
        "a445685647e825c713175d180ffc8dd54d90589b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 09 11:56:43 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:15 2007 -0700"
      },
      "message": "raid5: replace custom debug PRINTKs with standard pr_debug\n\nReplaces PRINTK with pr_debug, and kills the RAID5_DEBUG definition in\nfavor of the global DEBUG definition.  To get local debug messages just add\n\u0027#define DEBUG\u0027 to the top of the file.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a445685647e825c713175d180ffc8dd54d90589b",
      "tree": "d2db5674e51d33162e1e5993b6e6680ec534e2df",
      "parents": [
        "9bc89cd82d6f88fb0ca39b30445c329a430fd66b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 09 11:56:43 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:15 2007 -0700"
      },
      "message": "raid5: refactor handle_stripe5 and handle_stripe6 (v3)\n\nhandle_stripe5 and handle_stripe6 have very deep logic paths handling the\nvarious states of a stripe_head.  By introducing the \u0027stripe_head_state\u0027\nand \u0027r6_state\u0027 objects, large portions of the logic can be moved to\nsub-routines.\n\n\u0027struct stripe_head_state\u0027 consumes all of the automatic variables that previously\nstood alone in handle_stripe5,6.  \u0027struct r6_state\u0027 contains the handle_stripe6\nspecific variables like p_failed and q_failed.\n\nOne of the nice side effects of the \u0027stripe_head_state\u0027 change is that it\nallows for further reductions in code duplication between raid5 and raid6.\nThe following new routines are shared between raid5 and raid6:\n\n\thandle_completed_write_requests\n\thandle_requests_to_failed_array\n\thandle_stripe_expansion\n\nChanges:\n* v2: fixed \u0027conf-\u003eraid_disk-1\u0027 for the raid6 \u0027handle_stripe_expansion\u0027 path\n* v3: removed the unused \u0027dirty\u0027 field from struct stripe_head_state\n* v3: coalesced open coded bi_end_io routines into return_io()\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9bc89cd82d6f88fb0ca39b30445c329a430fd66b",
      "tree": "7bd0e856abd359f84edea1bacfd1dd32edd93fbb",
      "parents": [
        "685784aaf3cd0e3ff5e36c7ecf6f441cdbf57f73"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jan 02 11:10:44 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:14 2007 -0700"
      },
      "message": "async_tx: add the async_tx api\n\nThe async_tx api provides methods for describing a chain of asynchronous\nbulk memory transfers/transforms with support for inter-transactional\ndependencies.  It is implemented as a dmaengine client that smooths over\nthe details of different hardware offload engine implementations.  Code\nthat is written to the api can optimize for asynchronous operation and the\napi will fit the chain of operations to the available offload resources. \n \n\tI imagine that any piece of ADMA hardware would register with the\n\t\u0027async_*\u0027 subsystem, and a call to async_X would be routed as\n\tappropriate, or be run in-line. - Neil Brown\n\nasync_tx exploits the capabilities of struct dma_async_tx_descriptor to\nprovide an api of the following general format:\n\nstruct dma_async_tx_descriptor *\nasync_\u003coperation\u003e(..., struct dma_async_tx_descriptor *depend_tx,\n\t\t\tdma_async_tx_callback cb_fn, void *cb_param)\n{\n\tstruct dma_chan *chan \u003d async_tx_find_channel(depend_tx, \u003coperation\u003e);\n\tstruct dma_device *device \u003d chan ? chan-\u003edevice : NULL;\n\tint int_en \u003d cb_fn ? 1 : 0;\n\tstruct dma_async_tx_descriptor *tx \u003d device ?\n\t\tdevice-\u003edevice_prep_dma_\u003coperation\u003e(chan, len, int_en) : NULL;\n\n\tif (tx) { /* run \u003coperation\u003e asynchronously */\n\t\t...\n\t\ttx-\u003etx_set_dest(addr, tx, index);\n\t\t...\n\t\ttx-\u003etx_set_src(addr, tx, index);\n\t\t...\n\t\tasync_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param);\n\t} else { /* run \u003coperation\u003e synchronously */\n\t\t...\n\t\t\u003coperation\u003e\n\t\t...\n\t\tasync_tx_sync_epilog(flags, depend_tx, cb_fn, cb_param);\n\t}\n\n\treturn tx;\n}\n\nasync_tx_find_channel() returns a capable channel from its pool.  The\nchannel pool is organized as a per-cpu array of channel pointers.  The\nasync_tx_rebalance() routine is tasked with managing these arrays.  In the\nuniprocessor case async_tx_rebalance() tries to spread responsibility\nevenly over channels of similar capabilities.  For example if there are two\ncopy+xor channels, one will handle copy operations and the other will\nhandle xor.  In the SMP case async_tx_rebalance() attempts to spread the\noperations evenly over the cpus, e.g. cpu0 gets copy channel0 and xor\nchannel0 while cpu1 gets copy channel 1 and xor channel 1.  When a\ndependency is specified async_tx_find_channel defaults to keeping the\noperation on the same channel.  A xor-\u003ecopy-\u003exor chain will stay on one\nchannel if it supports both operation types, otherwise the transaction will\ntransition between a copy and a xor resource.\n\nCurrently the raid5 implementation in the MD raid456 driver has been\nconverted to the async_tx api.  A driver for the offload engines on the\nIntel Xscale series of I/O processors, iop-adma, is provided in a later\ncommit.  With the iop-adma driver and async_tx, raid456 is able to offload\ncopy, xor, and xor-zero-sum operations to hardware engines.\n \nOn iop342 tiobench showed higher throughput for sequential writes (20 - 30%\nimprovement) and sequential reads to a degraded array (40 - 55%\nimprovement).  For the other cases performance was roughly equal, +/- a few\npercentage points.  On a x86-smp platform the performance of the async_tx\nimplementation (in synchronous mode) was also +/- a few percentage points\nof the original implementation.  According to \u0027top\u0027 on iop342 CPU\nutilization drops from ~50% to ~15% during a \u0027resync\u0027 while the speed\naccording to /proc/mdstat doubles from ~25 MB/s to ~50 MB/s.\n \nThe tiobench command line used for testing was: tiobench --size 2048\n--block 4096 --block 131072 --dir /mnt/raid --numruns 5\n* iop342 had 1GB of memory available\n\nDetails:\n* if CONFIG_DMA_ENGINE\u003dn the asynchronous path is compiled away by making\n  async_tx_find_channel a static inline routine that always returns NULL\n* when a callback is specified for a given transaction an interrupt will\n  fire at operation completion time and the callback will occur in a\n  tasklet.  if the the channel does not support interrupts then a live\n  polling wait will be performed\n* the api is written as a dmaengine client that requests all available\n  channels\n* In support of dependencies the api implicitly schedules channel-switch\n  interrupts.  The interrupt triggers the cleanup tasklet which causes\n  pending operations to be scheduled on the next channel\n* Xor engines treat an xor destination address differently than a software\n  xor routine.  To the software routine the destination address is an implied\n  source, whereas engines treat it as a write-only destination.  This patch\n  modifies the xor_blocks routine to take a an explicit destination address\n  to mirror the hardware.\n\nChangelog:\n* fixed a leftover debug print\n* don\u0027t allow callbacks in async_interrupt_cond\n* fixed xor_block changes\n* fixed usage of ASYNC_TX_XOR_DROP_DEST\n* drop dma mapping methods, suggested by Chris Leech\n* printk warning fixups from Andrew Morton\n* don\u0027t use inline in C files, Adrian Bunk\n* select the API when MD is enabled\n* BUG_ON xor source counts \u003c\u003d 1\n* implicitly handle hardware concerns like channel switching and\n  interrupts, Neil Brown\n* remove the per operation type list, and distribute operation capabilities\n  evenly amongst the available channels\n* simplify async_tx_find_channel to optimize the fast path\n* introduce the channel_table_initialized flag to prevent early calls to\n  the api\n* reorganize the code to mimic crypto\n* include mm.h as not all archs include it in dma-mapping.h\n* make the Kconfig options non-user visible, Adrian Bunk\n* move async_tx under crypto since it is meant as \u0027core\u0027 functionality, and\n  the two may share algorithms in the future\n* move large inline functions into c files\n* checkpatch.pl fixes\n* gpl v2 only correction\n\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nAcked-By: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "685784aaf3cd0e3ff5e36c7ecf6f441cdbf57f73",
      "tree": "10f99829f7d877b87614fe69be77e363c026a8d7",
      "parents": [
        "d379b01e9087a582d58f4b678208a4f8d8376fe7"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 09 11:56:42 2007 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 13 08:06:14 2007 -0700"
      },
      "message": "xor: make \u0027xor_blocks\u0027 a library routine for use with async_tx\n\nThe async_tx api tries to use a dma engine for an operation, but will fall\nback to an optimized software routine otherwise.  Xor support is\nimplemented using the raid5 xor routines.  For organizational purposes this\nroutine is moved to a common area.\n\nThe following fixes are also made:\n* rename xor_block \u003d\u003e xor_blocks, suggested by Adrian Bunk\n* ensure that xor.o initializes before md.o in the built-in case\n* checkpatch.pl fixes\n* mark calibrate_xor_blocks __init, Adrian Bunk\n\nCc: Adrian Bunk \u003cbunk@stusta.de\u003e\nCc: NeilBrown \u003cneilb@suse.de\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "44ce6294d07555c3d313757105fd44b78208407f",
      "tree": "29659bee16a4d7111124c6f41289bc9c11669e70",
      "parents": [
        "497f050c42e46a4b1f6a9bcd8827fa5d97fe1feb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 18:51:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 18:51:36 2007 -0700"
      },
      "message": "Revert \"md: improve partition detection in md array\"\n\nThis reverts commit 5b479c91da90eef605f851508744bfe8269591a0.\n\nQuoth Neil Brown:\n\n  \"It causes an oops when auto-detecting raid arrays, and it doesn\u0027t\n   seem easy to fix.\n\n   The array may not be \u0027open\u0027 when do_md_run is called, so\n   bdev-\u003ebd_disk might be NULL, so bd_set_size can oops.\n\n   This whole approach of opening an md device before it has been\n   assembled just seems to get more and more painful.  I think I\u0027m going\n   to have to come up with something clever to provide both backward\n   comparability with usage expectation, and sane integration into the\n   rest of the kernel.\"\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b479c91da90eef605f851508744bfe8269591a0",
      "tree": "d7c2844926d96d794d66b974b300eba2d047465e",
      "parents": [
        "08a02ecd28bad35a47357e611044dcbeab06e3d7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: improve partition detection in md array\n\nmd currently uses -\u003emedia_changed to make sure rescan_partitions\nis call on md array after they are assembled.\n\nHowever that doesn\u0027t happen until the array is opened, which is later\nthan some people would like.\n\nSo use blkdev_ioctl to do the rescan immediately that the\narray has been assembled.\n\nThis means we can remove all the -\u003echange infrastructure as it was only used\nto trigger a partition rescan.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "42b9bebe3fea3d3ce381bc6735a3fb50e6613f06",
      "tree": "e99aec5ccb154e2f09a89a9b16f9e174b40b2863",
      "parents": [
        "4d167f09375bd6c18447d3fcc18baaf3acd15fbc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:37 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: remove the slash from the name of a kmem_cache used by raid5\n\nSLUB doesn\u0027t like slashes as it wants to use the cache name as the name of a\ndirectory (or symlink) in sysfs.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5e55e2f5fc95b355d8aa649f346cff69904c8ade",
      "tree": "6722b3f116bbeacb500ed6900219cfe54eaefa11",
      "parents": [
        "041ae52e265fc432ea5525b1c66720385c2d11f0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 26 21:32:14 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 27 09:05:15 2007 -0700"
      },
      "message": "[PATCH] md: convert compile time warnings into runtime warnings\n\n...  still not sure why we need this ....\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "041ae52e265fc432ea5525b1c66720385c2d11f0",
      "tree": "b7bab39615cb591c7df82d70e3f5ad5dba200e3d",
      "parents": [
        "3d37890baa4ca962f8a6b77525b8f3d0698eee09"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 26 21:32:14 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 27 09:05:14 2007 -0700"
      },
      "message": "[PATCH] md: clear the congested_fn when stopping a raid5\n\nIf this mddev and queue got reused for another array that doesn\u0027t register a\ncongested_fn, this function would get called incorretly.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3d37890baa4ca962f8a6b77525b8f3d0698eee09",
      "tree": "12e58ec8d5369ba270affe1eb8406e3603b33575",
      "parents": [
        "79f6523a16b2010969418f8df25fe61498dec66b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 26 21:32:13 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 27 09:05:14 2007 -0700"
      },
      "message": "[PATCH] md: allow raid4 arrays to be reshaped\n\nAll that is missing the the function pointers in raid4_pers.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6d3baf2eb8bd680b2d4f509bc3dbf4dcd6e27a40",
      "tree": "bb76dd97b16812efa78f546e08d11bd7ed6eefc7",
      "parents": [
        "c6b36e9a3c57b73c7a6bdf787baa55f21195bba9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 05 00:30:44 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Mar 05 07:57:53 2007 -0800"
      },
      "message": "[PATCH] md: fix for raid6 reshape\n\nRecent patch for raid6 reshape had a change missing that showed up in\nsubsequent review.\n\nMany places in the raid5 code used \"conf-\u003eraid_disks-1\" to mean \"number of\ndata disks\".  With raid6 that had to be changed to \"conf-\u003eraid_disk -\nconf-\u003emax_degraded\" or similar.  One place was missed.\n\nThis bug means that if a raid6 reshape were aborted in the middle the\nrecorded position would be wrong.  On restart it would either fail (as the\nposition wasn\u0027t on an appropriate boundary) or would leave a section of the\narray unreshaped, causing data corruption.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f416885ef4950501dd3858d1afa1137a0c2905c5",
      "tree": "77003957b071e5728fefedd905bf6f8c348fb4b3",
      "parents": [
        "b4c4c7b8095298ff4ce20b40bf180ada070812d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 28 20:11:53 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 14:53:36 2007 -0800"
      },
      "message": "[PATCH] md: add support for reshape of a raid6\n\ni.e. one or more drives can be added and the array will re-stripe\nwhile on-line.\n\nMost of the interesting work was already done for raid5.  This just extends it\nto raid6.\n\nmdadm newer than 2.6 is needed for complete safety, however any version of\nmdadm which support raid5 reshape will do a good enough job in almost all\ncases (an \u0027echo repair \u003e /sys/block/mdX/md/sync_action\u0027 is recommended after a\nreshape that was aborted and had to be restarted with an such a version of\nmdadm).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b4c4c7b8095298ff4ce20b40bf180ada070812d0",
      "tree": "2c51fe8ef220be17c791f8aca1218cadcae22b7f",
      "parents": [
        "d1b5380c7f794da16e815c34e54ee7641db8a288"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 28 20:11:48 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 14:53:36 2007 -0800"
      },
      "message": "[PATCH] md: restart a (raid5) reshape that has been aborted due to a read/write error\n\nAn error always aborts any resync/recovery/reshape on the understanding that\nit will immediately be restarted if that still makes sense.  However a reshape\ncurrently doesn\u0027t get restarted.  With this patch it does.\n\nTo avoid restarting when it is not possible to do work, we call into the\npersonality to check that a reshape is ok, and strengthen raid5_check_reshape\nto fail if there are too many failed devices.\n\nWe also break some code out into a separate function: remove_and_add_spares as\nthe indent level for that code was getting crazy.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "387bb17374c5fa057462d00d4ba941d49f45de4d",
      "tree": "85c68bbd2f077724563cfb26a3357d6679f12104",
      "parents": [
        "6649a3863232eb2e2f15ea6c622bd8ceacf96d76"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Thu Feb 08 14:20:29 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Feb 09 09:25:46 2007 -0800"
      },
      "message": "[PATCH] md: fix various bugs with aligned reads in RAID5\n\nIt is possible for raid5 to be sent a bio that is too big for an underlying\ndevice.  So if it is a READ that we pass stright down to a device, it will\nfail and confuse RAID5.\n\nSo in \u0027chunk_aligned_read\u0027 we check that the bio fits within the parameters\nfor the target device and if it doesn\u0027t fit, fall back on reading through\nthe stripe cache and making lots of one-page requests.\n\nNote that this is the earliest time we can check against the device because\nearlier we don\u0027t have a lock on the device, so it could change underneath\nus.\n\nAlso, the code for handling a retry through the cache when a read fails has\nnot been tested and was badly broken.  This patch fixes that code.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"Kai\" \u003cepimetreus@fastmail.fm\u003e\nCc: \u003cstable@suse.de\u003e\nCc: \u003corg@suse.de\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c20086de9319ac406f1e96ad459763c9f9965b18",
      "tree": "281e7863e9702b16520b5cb2b109e234355254f8",
      "parents": [
        "fe33f6f1525113ab0bae416966209438e7a31987"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 26 00:57:14 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:51:00 2007 -0800"
      },
      "message": "[PATCH] md: remove unnecessary printk when raid5 gets an unaligned read.\n\nraid5_mergeable_bvec tries to ensure that raid5 never sees a read request\nthat does not fit within just one chunk.  However as we must always accept\na single-page read, that is not always possible.\n\nSo when \"in_chunk_boundary\" fails, it might be unusual, but it is not a\nproblem and printing a message every time is a bad idea.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "2a2275d630b982e5f90206f9bc497f6695a3ec5d",
      "tree": "88cddee709b2107b74e5424810d4ffb6e3772382",
      "parents": [
        "a0ad13ef643a5829d63c456ab6143bbda60b44a9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 26 00:57:11 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Jan 26 13:51:00 2007 -0800"
      },
      "message": "[PATCH] md: fix potential memalloc deadlock in md\n\nIf a GFP_KERNEL allocation is attempted in md while the mddev_lock is held,\nit is possible for a deadlock to eventuate.\n\nThis happens if the array was marked \u0027clean\u0027, and the memalloc triggers a\nwrite-out to the md device.\n\nFor the writeout to succeed, the array must be marked \u0027dirty\u0027, and that\nrequires getting the mddev_lock.\n\nSo, before attempting a GFP_KERNEL allocation while holding the lock, make\nsure the array is marked \u0027dirty\u0027 (unless it is currently read-only).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "802ba064c49f655d20fed563f2a4924c8256ea10",
      "tree": "f705b597b2da6583239e9f028fa0d6f6ec319682",
      "parents": [
        "011e3a9ad4891ba1b27e281e085228189c56b137"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 13 00:34:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:48 2006 -0800"
      },
      "message": "[PATCH] md: Don\u0027t assume that READ\u003d\u003d0 and WRITE\u003d\u003d1 - use the names explicitly\n\nThanks Jens for alerting me to this.\n\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: \u003craziebe@gmail.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c2b00852fbae4f8c45c2651530ded3bd01bde814",
      "tree": "697a2087ffb1e5d3d81af628e818f9d943c4267f",
      "parents": [
        "b8c6b645563d641df91fdcfd84a9c73c91d75b61"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Dec 10 02:20:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] md: return a non-zero error to bi_end_io as appropriate in raid5\n\nCurrently raid5 depends on clearing the BIO_UPTODATE flag to signal an error\nto higher levels.  While this should be sufficient, it is safer to explicitly\nset the error code as well - less room for confusion.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b8c6b645563d641df91fdcfd84a9c73c91d75b61",
      "tree": "434f057ef1523fa84d8e669661c06db569a2f030",
      "parents": [
        "fdee8ae4498c48b44c0eac592f9c6ed24c4517c1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Dec 10 02:20:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] md: remove some old ifdefed-out code from raid5.c\n\nThere are some vestiges of old code that was used for bypassing the stripe\ncache on reads in raid5.c.  This was never updated after the change from\nbuffer_heads to bios, but was left as a reminder.\n\nThat functionality has nowe been implemented in a completely different way, so\nthe old code can go.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b875e531fc82db592d6093594593d5cafde0a1cd",
      "tree": "4bf23fcee1a1d1675339ea7e5d671dde6dd8641f",
      "parents": [
        "5248861511d6aae4997a5aa7152824d87587b0b6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Dec 10 02:20:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:21 2006 -0800"
      },
      "message": "[PATCH] md: fix innocuous bug in raid6 stripe_to_pdidx\n\nstripe_to_pdidx finds the index of the parity disk for a given stripe.  It\nassumes raid5 in that it uses \"disks-1\" to determine the number of data disks.\n\nThis is incorrect for raid6 but fortunately the two usages cancel each other\nout.  The only way that \u0027data_disks\u0027 affects the calculation of pd_idx in\nraid5_compute_sector is when it is divided into the sector number.  But as\nthat sector number is calculated by multiplying in the wrong value of\n\u0027data_disks\u0027 the division produces the right value.\n\nSo it is innocuous but needs to be fixed.\n\nAlso change the calculation of raid_disks in compute_blocknr to make it\nmore obviously correct (it seems at first to always use disks-1 too).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5248861511d6aae4997a5aa7152824d87587b0b6",
      "tree": "a853392a6ca8fdb10a308e46b90e4ed63e66bf04",
      "parents": [
        "46031f9a38a9773021f1872abc713d62467ac22e"
      ],
      "author": {
        "name": "Raz Ben-Jehuda(caro)",
        "email": "raziebe@gmail.com",
        "time": "Sun Dec 10 02:20:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:20 2006 -0800"
      },
      "message": "[PATCH] md: enable bypassing cache for reads\n\nCall the chunk_aligned_read where appropriate.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "46031f9a38a9773021f1872abc713d62467ac22e",
      "tree": "fe91f661fe0aad5f149447797c5d31544453ca38",
      "parents": [
        "f679623f50545bc0577caf2d0f8675b61162f059"
      ],
      "author": {
        "name": "Raz Ben-Jehuda(caro)",
        "email": "raziebe@gmail.com",
        "time": "Sun Dec 10 02:20:47 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:20 2006 -0800"
      },
      "message": "[PATCH] md: allow reads that have bypassed the cache to be retried on failure\n\nIf a bypass-the-cache read fails, we simply try again through the cache.  If\nit fails again it will trigger normal recovery precedures.\n\nupdate 1:\n\nFrom: NeilBrown \u003cneilb@suse.de\u003e\n\n1/\n  chunk_aligned_read and retry_aligned_read assume that\n      data_disks \u003d\u003d raid_disks - 1\n  which is not true for raid6.\n  So when an aligned read request bypasses the cache, we can get the wrong data.\n\n2/ The cloned bio is being used-after-free in raid5_align_endio\n   (to test BIO_UPTODATE).\n\n3/ We forgot to add rdev-\u003edata_offset when submitting\n   a bio for aligned-read\n\n4/ clone_bio calls blk_recount_segments and then we change bi_bdev,\n   so we need to invalidate the segment counts.\n\n5/ We don\u0027t de-reference the rdev when the read completes.\n   This means we need to record the rdev to so it is still\n   available in the end_io routine.  Fortunately\n   bi_next in the original bio is unused at this point so\n   we can stuff it in there.\n\n6/ We leak a cloned bio if the target rdev is not usable.\n\nFrom: NeilBrown \u003cneilb@suse.de\u003e\n\nupdate 2:\n\n1/ When aligned requests fail (read error) they need to be retried\n   via the normal method (stripe cache).  As we cannot be sure that\n   we can process a single read in one go (we may not be able to\n   allocate all the stripes needed) we store a bio-being-retried\n   and a list of bioes-that-still-need-to-be-retried.\n   When find a bio that needs to be retried, we should add it to\n   the list, not to single-bio...\n\n2/ We were never incrementing \u0027scnt\u0027 when resubmitting failed\n   aligned requests.\n\n[akpm@osdl.org: build fix]\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f679623f50545bc0577caf2d0f8675b61162f059",
      "tree": "7253c48db142ec63e6f22df12dfa2babb3e6129c",
      "parents": [
        "23032a0eb97c8eaae8ac9d17373b53b19d0f5413"
      ],
      "author": {
        "name": "Raz Ben-Jehuda(caro)",
        "email": "raziebe@gmail.com",
        "time": "Sun Dec 10 02:20:46 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:20 2006 -0800"
      },
      "message": "[PATCH] md: handle bypassing the read cache (assuming nothing fails)\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "23032a0eb97c8eaae8ac9d17373b53b19d0f5413",
      "tree": "7021309ed7a591c6ae93f7347fb23482cea85163",
      "parents": [
        "0d4ca600fcf5c5f3a0c195ccf37e989b83451dd4"
      ],
      "author": {
        "name": "Raz Ben-Jehuda(caro)",
        "email": "raziebe@gmail.com",
        "time": "Sun Dec 10 02:20:45 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sun Dec 10 09:57:20 2006 -0800"
      },
      "message": "[PATCH] md: define raid5_mergeable_bvec\n\nThis will encourage read request to be on only one device, so we will often be\nable to bypass the cache for read requests.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e18b890bb0881bbab6f4f1a6cd20d9c60d66b003",
      "tree": "4828be07e1c24781c264b42c5a75bcd968223c3f",
      "parents": [
        "441e143e95f5aa1e04026cb0aa71c801ba53982f"
      ],
      "author": {
        "name": "Christoph Lameter",
        "email": "clameter@sgi.com",
        "time": "Wed Dec 06 20:33:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:25 2006 -0800"
      },
      "message": "[PATCH] slab: remove kmem_cache_t\n\nReplace all uses of kmem_cache_t with struct kmem_cache.\n\nThe patch was generated using the following script:\n\n\t#!/bin/sh\n\t#\n\t# Replace one string by another in all the kernel sources.\n\t#\n\n\tset -e\n\n\tfor file in `find * -name \"*.c\" -o -name \"*.h\"|xargs grep -l $1`; do\n\t\tquilt add $file\n\t\tsed -e \"1,\\$s/$1/$2/g\" $file \u003e/tmp/$$\n\t\tmv /tmp/$$ $file\n\t\tquilt refresh\n\tdone\n\nThe script was run like this\n\n\tsh replace kmem_cache_t \"struct kmem_cache\"\n\nSigned-off-by: Christoph Lameter \u003cclameter@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0692c6b1cf5537b190f90fb5903f1af89a41b0a8",
      "tree": "4686d65a3020e41501feda573350f5e2d43629d5",
      "parents": [
        "2f4713036114dd13d1f4fe433b7f236250b65f5a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Nov 08 17:44:48 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 08 18:29:24 2006 -0800"
      },
      "message": "[PATCH] md: fix sizing problem with raid5-reshape and CONFIG_LBD\u003dn\n\nI forgot to has the size-in-blocks to (loff_t) before shifting up to a\nsize-in-bytes.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "52e5f9d1cf0b10b24317037dcd1c9be38ca7011c",
      "tree": "a0646ee04b91d5d195075dc4ad8d38cf603179d8",
      "parents": [
        "70d63ccc71fe1a413ce82b88aa175b1dcf28654e"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Tue Oct 03 23:33:23 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Tue Oct 03 23:33:23 2006 +0200"
      },
      "message": "BUG_ON cleanup for drivers/md/\n\nThis changes two if() BUG(); usages to BUG_ON(); so people\ncan disable it safely.\n\nSigned-off-by: Eric Sesterhenn \u003csnakebyte@gmx.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "f022b2fddd97795bc9333ffb6862eacfa95c6a95",
      "tree": "93615a8cbc489a1adb3cca7a3bf7c0e67625e4be",
      "parents": [
        "0d12922823408b26f83b15cae4a4feff4bd22f28"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:56 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:18 2006 -0700"
      },
      "message": "[PATCH] md: add a -\u003econgested_fn function for raid5/6\n\nThis is very different from other raid levels and all requests go through a\n\u0027stripe cache\u0027, and it has congestion management already.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c04be0aa82ff535e3676ab3e573957bdeef41879",
      "tree": "8481ab270218bed246eb02b3ba04a4b84d4e90d0",
      "parents": [
        "11ce99e625fe2718ad2682bfdd99070b337e6252"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:53 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:18 2006 -0700"
      },
      "message": "[PATCH] md: Improve locking around error handling\n\nThe error handling routines don\u0027t use proper locking, and so two concurrent\nerrors could trigger a problem.\n\nSo:\n  - use test-and-set and test-and-clear to synchonise\n    the In_sync bits with the -\u003edegraded count\n  - use the spinlock to protect updates to the\n    degraded count (could use an atomic_t but that\n    would be a bigger change in code, and isn\u0027t\n    really justified)\n  - remove un-necessary locking in raid5\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2d2063ceae73660d5142f4754d50a75b655fd1f9",
      "tree": "fc0e810ec5e7fa01ab53fca93043d68813d9de7f",
      "parents": [
        "9b1d1dac181d8c1b9492e05cee660a985d035a06"
      ],
      "author": {
        "name": "Coywolf Qi Hunt",
        "email": "qiyong@freeforge.net",
        "time": "Tue Oct 03 01:15:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:17 2006 -0700"
      },
      "message": "[PATCH] md: remove unnecessary variable x in stripe_to_pdidx()\n\nSigned-off-by: Coywolf Qi Hunt \u003cqiyong@freeforge.net\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "02c2de8cc835885bdff51a8bfd6c0b659b969f50",
      "tree": "3c3b3adf01e4ec4139888d681eca5becb3374fda",
      "parents": [
        "850b2b420cd5b363ed4cf48a8816d656c8b5251b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:47 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:17 2006 -0700"
      },
      "message": "[PATCH] md: remove the working_disks and failed_disks from raid5 state data.\n\nThey are not needed.  conf-\u003efailed_disks is the same as mddev-\u003edegraded and\nconf-\u003eworking_disks is conf-\u003eraid_disks - mddev-\u003edegraded.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "850b2b420cd5b363ed4cf48a8816d656c8b5251b",
      "tree": "b63aa37b3fb7dfb7a0b674d5a2ebe9da13cc7405",
      "parents": [
        "6814d5368d68341ec6b5e4ecd10ea5947130775a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:17 2006 -0700"
      },
      "message": "[PATCH] md: replace magic numbers in sb_dirty with well defined bit flags\n\nInstead of magic numbers (0,1,2,3) in sb_dirty, we have\nsome flags instead:\nMD_CHANGE_DEVS\n   Some device state has changed requiring superblock update\n   on all devices.\nMD_CHANGE_CLEAN\n   The array has transitions from \u0027clean\u0027 to \u0027dirty\u0027 or back,\n   requiring a superblock update on active devices, but possibly\n   not on spares\nMD_CHANGE_PENDING\n   A superblock update is underway.\n\nWe wait for an update to complete by waiting for all flags to be clear.  A\nflag can be set at any time, even during an update, without risk that the\nchange will be lost.\n\nStop exporting md_update_sb - isn\u0027t needed.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d69504325978c461b51b03cca49626026970307b",
      "tree": "73ea1d68d5d3cca777cb6ea9828c5757b4cd6df8",
      "parents": [
        "67463acb646904d76a8e237cc31eaa87872f30cc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 10 04:44:20 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:17 2006 -0700"
      },
      "message": "[PATCH] md: include sector number in messages about corrected read errors\n\nThis is generally useful, but particularly helps see if it is the same sector\nthat always needs correcting, or different ones.\n\n[akpm@osdl.org: fix printk warnings]\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ae3c20ccf84c88d45616f12122f781a900118f09",
      "tree": "19d2f11d8a4766182402316632d32bd66d518c55",
      "parents": [
        "7c785b7a18dc30572a49c6b75efd384269735d14"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 10 04:44:17 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:17 2006 -0700"
      },
      "message": "[PATCH] md: fix some small races in bitmap plugging in raid5\n\nThe comment gives more details, but I didn\u0027t quite have the sequencing write,\nso there was room for races to leave bits unset in the on-disk bitmap for\nshort periods of time.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7c785b7a18dc30572a49c6b75efd384269735d14",
      "tree": "de115f4692b1be55ae3ad93a2719edc5b5688a37",
      "parents": [
        "ff4e8d9a9f46e3a7f89d14ade52fe5d53a82c022"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 10 04:44:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:16 2006 -0700"
      },
      "message": "[PATCH] md: fix a plug/unplug race in raid5\n\nWhen a device is unplugged, requests are moved from one or two (depending on\nwhether a bitmap is in use) queues to the main request queue.\n\nSo whenever requests are put on either of those queues, we should make sure\nthe raid5 array is \u0027plugged\u0027.  However we don\u0027t.  We currently plug the raid5\nqueue just before putting requests on queues, so there is room for a race.  If\nsomething unplugs the queue at just the wrong time, requests will be left on\nthe queue and nothing will want to unplug them.  Normally something else will\nplug and unplug the queue fairly soon, but there is a risk that nothing will.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ff4e8d9a9f46e3a7f89d14ade52fe5d53a82c022",
      "tree": "e15fc4d8af0045a3947e3a25844773c6ee50289a",
      "parents": [
        "0b8c9de05c2a860fe6b02fedcb48763bcee648b3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 10 04:44:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:16 2006 -0700"
      },
      "message": "[PATCH] md: fix resync speed calculation for restarted resyncs\n\nWe introduced \u0027io_sectors\u0027 recently so we could count the sectors that causes\nio during resync separate from sectors which didn\u0027t cause IO - there can be a\ndifference if a bitmap is being used to accelerate resync.\n\nHowever when a speed is reported, we find the number of sectors processed\nrecently by subtracting an oldish io_sectors count from a current\n\u0027curr_resync\u0027 count.  This is wrong because curr_resync counts all sectors,\nnot just io sectors.\n\nSo, add a field to mddev to store the curren io_sectors separately from\ncurr_resync, and use that in the calculations.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0b8c9de05c2a860fe6b02fedcb48763bcee648b3",
      "tree": "893228041dfcc44a216a6887e75c2424e0a8bca9",
      "parents": [
        "31b65a0d3894566191b91fbadd122c354a363b5d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 10 04:44:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:16 2006 -0700"
      },
      "message": "[PATCH] md: delay starting md threads until array is completely setup\n\nWhen an array is started we start one or two threads (two if there is a\nreshape or recovery that needs to be completed).\n\nWe currently start these *before* the array is completely set up and in\nparticular before queue-\u003equeuedata is set.  If the thread actually starts\nvery quickly on another CPU, we can end up dereferencing queue-\u003equeuedata\nand oops.\n\nThis patch also makes sure we don\u0027t try to start a recovery if a reshape is\nbeing restarted.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f4370781d83cd2e52eb515e4663155e8091e4d4e",
      "tree": "bb10a0abec68746204cac32dc4839c1b41df3d41",
      "parents": [
        "894673ee6122a3ce1958e1fe096901ba5356a96b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 10 04:44:14 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:16 2006 -0700"
      },
      "message": "[PATCH] md: possible fix for unplug problem\n\nI have reports of a problem with raid5 which turns out to be because the raid5\ndevice gets stuck in a \u0027plugged\u0027 state.  This shouldn\u0027t be able to happen as\n3msec after it gets plugged it should get unplugged.  However it happens\nnone-the-less.  This patch fixes the problem and is a reasonable thing to do,\nthough it might hurt performance slightly in some cases.\n\nUntil I can find the real problem, we should probably have this workaround in\nplace.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ab3d5624e172c553004ecc862bfeac16d9d68b7",
      "tree": "6d98881fe91fd9583c109208d5c27131b93fa248",
      "parents": [
        "e02169b682bc448ccdc819dc8639ed34a23cedd8"
      ],
      "author": {
        "name": "Jörn Engel",
        "email": "joern@wohnheim.fh-wedel.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Fri Jun 30 19:25:36 2006 +0200"
      },
      "message": "Remove obsolete #include \u003clinux/config.h\u003e\n\nSigned-off-by: Jörn Engel \u003cjoern@wohnheim.fh-wedel.de\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\n"
    },
    {
      "commit": "cfb9e32f2ff32ef5265c1c80fe68dd1a7f03a604",
      "tree": "b5b2ea1f75a87cd7837d645faf661206785e12e4",
      "parents": [
        "d81931d9a2ec3e2e2cd8238b72f20c5fe44ccc7b"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Thu Jun 29 02:24:34 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Thu Jun 29 10:26:21 2006 -0700"
      },
      "message": "[PATCH] drivers/md/raid5.c: remove an unused variable\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3285edf152cefff482f95ceb90b1bd46ac169df1",
      "tree": "88dd6e57f6405d71c621f136d236e1dde599e5a7",
      "parents": [
        "b3cc9ec76ba44d010f4c820c4608b91aaf28a0b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:55 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:39 2006 -0700"
      },
      "message": "[PATCH] md: Fix bug that stops raid5 resync from happening\n\nAs data_disks is *less* than raid_disks, the current test here is obviously\nwrong.  And as the difference is already available in conf-\u003emax_degraded, it\nmakes much more sense to use that.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "52c03291a832d86c093996d0491a326de4a6b79b",
      "tree": "c1ec4c49e9265911cd3be0b9145491431291bce9",
      "parents": [
        "5e56341d029f0c2cf31e78dc01d4c861ba4d6a5e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:37 2006 -0700"
      },
      "message": "[PATCH] md: split reshape portion of raid5 sync_request into a separate function\n\n... as raid5 sync_request is WAY too big.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5fd6c1dce06ec24ef3de20fe0c7ecf2ba9fe5ef9",
      "tree": "bd7cc8c22615e8622d3d63b7fc68dcc3ac1964de",
      "parents": [
        "a8a55c387da28d67d98f56e4f5021462cb61f7a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:37 2006 -0700"
      },
      "message": "[PATCH] md: allow checkpoint of recovery with version-1 superblock\n\nFor a while we have had checkpointing of resync.  The version-1 superblock\nallows recovery to be checkpointed as well, and this patch implements that.\n\nDue to early carelessness we need to add a feature flag to signal that the\nrecovery_offset field is in use, otherwise older kernels would assume that a\npartially recovered array is in fact fully recovered.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "16a53ecc35f2a80dc285be2e769768847d89ca37",
      "tree": "19d005f19af68e9b98efaf16885bb60498f540c1",
      "parents": [
        "16f17b39f385212b73278a76d482cdcaaebe6c02"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:38 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:37 2006 -0700"
      },
      "message": "[PATCH] md: merge raid5 and raid6 code\n\nThere is a lot of commonality between raid5.c and raid6main.c.  This patches\nmerges both into one module called raid456.  This saves a lot of code, and\npaves the way for online raid5-\u003eraid6 migrations.\n\nThere is still duplication, e.g.  between handle_stripe5 and handle_stripe6.\nThis will probably be cleaned up later.\n\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8932c2e0dcae52e73430878fd8a7a7800176eada",
      "tree": "3b734ccaa0fb210f1fd76ff9bb6fb9700d1c4095",
      "parents": [
        "c70810b327a247d12805554d0aa4605e257effb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] md: remove arbitrary limit on chunk size\n\nThe largest chunk size the code can support without substantial surgery is\n2^30 bytes, so make that the limit instead of an arbitrary 4Meg.  Some day,\nthe \u0027chunksize\u0027 should change to a sector-shift instead of a byte-count.  Then\nno limit would be needed.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "78bafebd461049a419df2f4b1f25efbee73c2439",
      "tree": "a458eebf57913d015a33ac0e081494058ccf5ebd",
      "parents": [
        "733f896927c955a114bf265993c1535c4b057a0f"
      ],
      "author": {
        "name": "Eric Sesterhenn",
        "email": "snakebyte@gmx.de",
        "time": "Sun Apr 02 13:31:42 2006 +0200"
      },
      "committer": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Sun Apr 02 13:31:42 2006 +0200"
      },
      "message": "BUG_ON() Conversion in md/raid5.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": "f6344757a92e5466bf8c23a74ee8f972ff35cb05",
      "tree": "df390903800e7ea8dcf117d9b5a376e34fb1c741",
      "parents": [
        "b3b46be38aef5c46a4e144f1bcb8d0cc6bf3ff97"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:17 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:03 2006 -0800"
      },
      "message": "[PATCH] md: Remove bi_end_io call out from under a spinlock\n\nraid5 overloads bi_phys_segments to count the number of blocks that the\nrequest was broken in to so that it knows when the bio is completely handled.\n\nAccessing this must always be done under a spinlock.  In one case we also call\nbi_end_io under that spinlock, which probably isn\u0027t ideal as bi_end_io could\nbe expensive (even though it isn\u0027t allowed to sleep).\n\nSo we reducde the range of the spinlock to just accessing bi_phys_segments.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b3b46be38aef5c46a4e144f1bcb8d0cc6bf3ff97",
      "tree": "b564622beb5f3f586be8bc5f1f4125b4afda4198",
      "parents": [
        "df8e7f7639bab3b2cc536a1d30d5593d65251778"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:16 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:02 2006 -0800"
      },
      "message": "[PATCH] md: Remove some stray semi-colons after functions called in macro..\n\nwait_event_lock_irq puts a \u0027;\u0027 after its usage of the 4th arg, so we don\u0027t\nneed to.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "df8e7f7639bab3b2cc536a1d30d5593d65251778",
      "tree": "93eb1e93e5f6e0f27f85b8b5d925c2dad2929c2e",
      "parents": [
        "e464eafdb4400c6d6576ba3840d8bd40340f8a96"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:15 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:02 2006 -0800"
      },
      "message": "[PATCH] md: Improve comments about locking situation in raid5 make_request\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e464eafdb4400c6d6576ba3840d8bd40340f8a96",
      "tree": "0c3f4003c883264ee08300c02007f06e4d1ebb91",
      "parents": [
        "16484bf59634e25d1299761e5ed8bacf22bc6368"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:02 2006 -0800"
      },
      "message": "[PATCH] md: Support suspending of IO to regions of an md array\n\nThis allows user-space to access data safely.  This is needed for raid5\nreshape as user-space needs to take a backup of the first few stripes before\nallowing reshape to commence.\n\nIt will also be useful in cluster-aware raid1 configurations so that all\ncluster members can leave a section of the array untouched while a\nresync/recovery happens.\n\nA \u0027start\u0027 and \u0027end\u0027 of the suspended range are written to 2 sysfs attributes.\nNote that only one range can be suspended at a time.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "63c70c4f3a30e77e6f445bd16eff7934a031ebd3",
      "tree": "12d2cd6cec5cd304bdf514ec8999a44c26f058ae",
      "parents": [
        "b578d55fdd80140f657130abd85aebeb345755fb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:02 2006 -0800"
      },
      "message": "[PATCH] md: Split reshape handler in check_reshape and start_reshape\n\ncheck_reshape checks validity and does things that can be done instantly -\nlike adding devices to raid1.  start_reshape initiates a restriping process to\nconvert the whole array.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b578d55fdd80140f657130abd85aebeb345755fb",
      "tree": "3737b88a25b3fb1e3347cd1c4c274336aee6a462",
      "parents": [
        "f67055780caac6a99f43834795c43acf99eba6a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:12 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:02 2006 -0800"
      },
      "message": "[PATCH] md: Only checkpoint expansion progress occasionally\n\nInstead of checkpointing at each stripe, only checkpoint when a new write\nwould overwrite uncheckpointed data.  Block any write to the uncheckpointed\narea.  Arbitrarily checkpoint at least every 3Meg.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f67055780caac6a99f43834795c43acf99eba6a6",
      "tree": "6b80e7b4cb300edb0910dbad1d840ff8e2f36ae5",
      "parents": [
        "292695531ae4019bb15deedc121b218d1908b648"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Checkpoint and allow restart of raid5 reshape\n\nWe allow the superblock to record an \u0027old\u0027 and a \u0027new\u0027 geometry, and a\nposition where any conversion is up to.  The geometry allows for changing\nchunksize, layout and level as well as number of devices.\n\nWhen using verion-0.90 superblock, we convert the version to 0.91 while the\nconversion is happening so that an old kernel will refuse the assemble the\narray.  For version-1, we use a feature bit for the same effect.\n\nWhen starting an array we check for an incomplete reshape and restart the\nreshape process if needed.  If the reshape stopped at an awkward time (like\nwhen updating the first stripe) we refuse to assemble the array, and let\nuser-space worry about it.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "292695531ae4019bb15deedc121b218d1908b648",
      "tree": "fb205eae13c3f3410f6ea44557b1c96b075a4d44",
      "parents": [
        "ccfcc3c10b2a5cb8fd3c918199a4ff904fc6fb3e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:10 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Final stages of raid5 expand code\n\nThis patch adds raid5_reshape and end_reshape which will start and finish the\nreshape processes.\n\nraid5_reshape is only enabled in CONFIG_MD_RAID5_RESHAPE is set, to discourage\naccidental use.\n\nRead the \u0027help\u0027 for the CONFIG_MD_RAID5_RESHAPE entry.\n\nand Make sure that you have backups, just in case.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ccfcc3c10b2a5cb8fd3c918199a4ff904fc6fb3e",
      "tree": "0c86fe6ba0f0bafd76f86f81b7425d6d497664aa",
      "parents": [
        "7ecaa1e6a1ad69862e9980b6c777e11f26c4782d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Core of raid5 resize process\n\nThis patch provides the core of the resize/expand process.\n\nsync_request notices if a \u0027reshape\u0027 is happening and acts accordingly.\n\nIt allocated new stripe_heads for the next chunk-wide-stripe in the target\ngeometry, marking them STRIPE_EXPANDING.\n\nThen it finds which stripe heads in the old geometry can provide data needed\nby these and marks them STRIPE_EXPAND_SOURCE.  This causes stripe_handle to\nread all blocks on those stripes.\n\nOnce all blocks on a STRIPE_EXPAND_SOURCE stripe_head are read, any that are\nneeded are copied into the corresponding STRIPE_EXPANDING stripe_head.  Once a\nSTRIPE_EXPANDING stripe_head is full, it is marks STRIPE_EXPAND_READY and then\nis written out and released.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7ecaa1e6a1ad69862e9980b6c777e11f26c4782d",
      "tree": "3cbd64ebc2a45f6b5ac45b0305fd3cf2c6916070",
      "parents": [
        "ad01c9e3752f4ba4f3d99c89b7370fa4983a25b5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:08 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Infrastructure to allow normal IO to continue while array is expanding\n\nWe need to allow that different stripes are of different effective sizes, and\nuse the appropriate size.  Also, when a stripe is being expanded, we must\nblock any IO attempts until the stripe is stable again.\n\nKey elements in this change are:\n - each stripe_head gets a \u0027disk\u0027 field which is part of the key,\n   thus there can sometimes be two stripe heads of the same area of\n   the array, but covering different numbers of devices.  One of these\n   will be marked STRIPE_EXPANDING and so won\u0027t accept new requests.\n - conf-\u003eexpand_progress tracks how the expansion is progressing and\n   is used to determine whether the target part of the array has been\n   expanded yet or not.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ad01c9e3752f4ba4f3d99c89b7370fa4983a25b5",
      "tree": "856868aa97332d6d15d4cad412e0ebe3576bb571",
      "parents": [
        "b55e6bfcd23cb2f7249095050c649f7aea813f9f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:07 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Allow stripes to be expanded in preparation for expanding an array\n\nBefore a RAID-5 can be expanded, we need to be able to expand the stripe-cache\ndata structure.\n\nThis requires allocating new stripes in a new kmem_cache.  If this succeeds,\nwe copy cache pages over and release the old stripes and kmem_cache.\n\nWe then allocate new pages.  If that fails, we leave the stripe cache at it\u0027s\nnew size.  It isn\u0027t worth the effort to shrink it back again.\n\nUnfortuanately this means we need two kmem_cache names as we, for a short\nperiod of time, we have two kmem_caches.  So they are raid5/%s and\nraid5/%s-alt\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b55e6bfcd23cb2f7249095050c649f7aea813f9f",
      "tree": "78c854c1eeb85d48bf0956309cc7ccfa14e9805a",
      "parents": [
        "4588b42e9d0d0904a745c96cead66506c75bae21"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:06 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Split disks array out of raid5 conf structure so it is easier to grow\n\nThe remainder of this batch implements raid5 reshaping.  Currently the only\nshape change that is supported is added a device, but it is envisioned that\nchanging the chunksize and layout will also be supported, as well as changing\nthe level (e.g.  1-\u003e5, 5-\u003e6).\n\nThe reshape process naturally has to move all of the data in the array, and so\nshould be used with caution.  It is believed to work, and some testing does\nsupport this, but wider testing would be great for increasing my confidence.\n\nYou will need a version of mdadm newer than 2.3.1 to make use of raid5 growth.\n This is because mdadm need to take a copy of a \u0027critical section\u0027 at the\nstart of the array incase there is a crash at an awkward moment.  On restart,\nmdadm will restore the critical section and allow reshape to continue.\n\nI hope to release a 2.4-pre by early next week - it still needs a little more\npolishing.\n\nThis patch:\n\nPreviously the array of disk information was included in the raid5 \u0027conf\u0027\nstructure which was allocated to an appropriate size.  This makes it awkward\nto change the size of that array.  So we split it off into a separate\nkmalloced array which will require a little extra indexing, but is much easier\nto grow.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "29fc7e3e70a05e9eea28afb6707a39c1a53e2f66",
      "tree": "4e8bc28c717116ade3cd723a921f3260656327aa",
      "parents": [
        "284ae7cab0f7335c9e0aa8992b28415ef1a54c7c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Feb 03 03:03:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Feb 03 08:32:00 2006 -0800"
      },
      "message": "[PATCH] md: Assorted little md fixes\n\n- version-1 superblock\n  + The default_bitmap_offset is in sectors, not bytes.\n  + the \u0027size\u0027 field in the superblock is in sectors, not KB\n- raid0_run should return a negative number on error, not \u00271\u0027\n- raid10_read_balance should not return a valid \u0027disk\u0027 number if\n     -\u003erdev turned out to be NULL\n- kmem_cache_destroy doesn\u0027t like being passed a NULL.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "858119e159384308a5dde67776691a2ebf70df0f",
      "tree": "f360768f999d51edc0863917ce0bf79e88c0ec4c",
      "parents": [
        "b0a9499c3dd50d333e2aedb7e894873c58da3785"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Sat Jan 14 13:20:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sat Jan 14 18:27:06 2006 -0800"
      },
      "message": "[PATCH] Unlinline a bunch of other functions\n\nRemove the \"inline\" keyword from a bunch of big functions in the kernel with\nthe goal of shrinking it by 30kb to 40kb\n\nSigned-off-by: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jeff Garzik \u003cjgarzik@pobox.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4dbcdc751cb25ffca3a8374cbc5ab6de961cc545",
      "tree": "61d1eb6e35c0eec66e5a8610c1f57b1e6eec135c",
      "parents": [
        "d9d166c2a9d5d01af34396793950aa695883eed4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:52 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:09 2006 -0800"
      },
      "message": "[PATCH] md: count corrected read errors per drive\n\nStore this total in superblock (As appropriate), and make it available to\nuserspace via sysfs.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d9d166c2a9d5d01af34396793950aa695883eed4",
      "tree": "6cb593cc0636476ebec9a9690aa48997510f9701",
      "parents": [
        "8bb93aaca2062cd54cc2c58c76ee8409cae209a7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:09 2006 -0800"
      },
      "message": "[PATCH] md: allow array level to be set textually via sysfs\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2604b703b6b3db80e3c75ce472a54dfd0b7bf9f4",
      "tree": "8c0e985c455ff35af24fbe60d8a3f5a276034370",
      "parents": [
        "a24a8dd858e0ba50f06a9fd8f61fe8c4fe7a8d8e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:06 2006 -0800"
      },
      "message": "[PATCH] md: remove personality numbering from md\n\nmd supports multiple different RAID level, each being implemented by a\n\u0027personality\u0027 (which is often in a separate module).\n\nThese personalities have fairly artificial \u0027numbers\u0027.  The numbers\nare use to:\n 1- provide an index into an array where the various personalities\n    are recorded\n 2- identify the module (via an alias) which implements are particular\n    personality.\n\nNeither of these uses really justify the existence of personality numbers.\nThe array can be replaced by a linked list which is searched (array lookup\nonly happens very rarely).  Module identification can be done using an alias\nbased on level rather than \u0027personality\u0027 number.\n\nThe current \u0027raid5\u0027 modules support two level (4 and 5) but only one\npersonality.  This slight awkwardness (which was handled in the mapping from\nlevel to personality) can be better handled by allowing raid5 to register 2\npersonalities.\n\nWith this change in place, the core md module does not need to have an\nexhaustive list of all possible personalities, so other personalities can be\nadded independently.\n\nThis patch also moves the check for chunksize being non-zero into the -\u003erun\nroutines for the personalities that need it, rather than having it in core-md.\n This has a side effect of allowing \u0027faulty\u0027 and \u0027linear\u0027 not to have a\nchunk-size set.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fccddba060f2b4916a30aa27acc3d03b01bb981e",
      "tree": "92fbb81ab3b1fdbbe8de9ba2ebb91ac68c57b2a0",
      "parents": [
        "9ffae0cf3ea02f75d163922accfd3e592d87adde"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:33 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:06 2006 -0800"
      },
      "message": "[PATCH] md: tidy up raid5/6 hash table code\n\n- replace open-coded hash chain with hlist macros\n\n- Fix hash-table size at one page - it is already quite generous, so there\n  will never be a need to use multiple pages, so no need for __get_free_pages\n\nNo functional change.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9ffae0cf3ea02f75d163922accfd3e592d87adde",
      "tree": "4974727e9f36e1b618b68d2789644ee3a0d7a371",
      "parents": [
        "2d1f3b5d1b2cd11a162eb29645df749ec0036413"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:32 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:05 2006 -0800"
      },
      "message": "[PATCH] md: convert md to use kzalloc throughout\n\nReplace multiple kmalloc/memset pairs with kzalloc calls.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2d1f3b5d1b2cd11a162eb29645df749ec0036413",
      "tree": "bb87ef9fcd2d9760b618d196fc8361a5a4dd851e",
      "parents": [
        "d7603b7e3a7f802c67f9190b2387d4d5d111ec14"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:05 2006 -0800"
      },
      "message": "[PATCH] md: clean up \u0027page\u0027 related names in md\n\nSubstitute:\n\n  page_cache_get -\u003e get_page\n  page_cache_release -\u003e put_page\n  PAGE_CACHE_SHIFT -\u003e PAGE_SHIFT\n  PAGE_CACHE_SIZE -\u003e PAGE_SIZE\n  PAGE_CACHE_MASK -\u003e PAGE_MASK\n  __free_page -\u003e put_page\n\nbecause we aren\u0027t using the page cache, we are just using pages.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9910f16af35419a5382fa7850eecc220103036fa",
      "tree": "3b5145b8a706e03a6f2b4da4bd84fe98c83de31a",
      "parents": [
        "cf30a473a02901fe4db37abc0b0fa26dd5ba3f72"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:04 2006 -0800"
      },
      "message": "[PATCH] md: fix up some rdev rcu locking in raid5/6\n\nThere is this \"FIXME\" comment with a typo in it!!  that been annoying me for\ndays, so I just had to remove it.\n\nconf-\u003edisks[i].rdev should only be accessed if\n  - we know we hold a reference or\n  - the mddev-\u003ereconfig_sem is down or\n  - we have a rcu_readlock\n\nhandle_stripe was referencing rdev in three places without any of these.  For\nthe first two, get an rcu_readlock.  For the last, the same access\n(md_sync_acct call) is made a little later after the rdev has been claimed\nunder and rcu_readlock, if R5_Syncio is set.  So just use that access...\nHowever R5_Syncio isn\u0027t really needed as the \u0027syncing\u0027 variable contains the\nsame information.  So use that instead.\n\nIssues, comment, and fix are identical in raid5 and raid6.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b15c2e57f0f5bf596a19e9c5571e5b07cdfc7363",
      "tree": "da68e3ed72e59212936daf7dd4c86f1f9a7ab386",
      "parents": [
        "6ff8d8ec06690f4011a6c3ad9e0759b9094f0601"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:16 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:03 2006 -0800"
      },
      "message": "[PATCH] md: move bitmap_create to after md array has been initialised\n\nThis is important because bitmap_create uses\n  mddev-\u003eresync_max_sectors\nand that doesn\u0027t have a valid value until after the array\nhas been initialised (with pers-\u003erun()).\n[It doesn\u0027t make a difference for current personalities that\n support bitmaps, but will make a difference for raid10]\n\nThis has the added advantage of meaning with can move the thread-\u003etimeout\nmanipulation inside the bitmap.c code instead of sprinkling identical code\nthroughout all personalities.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ff8d8ec06690f4011a6c3ad9e0759b9094f0601",
      "tree": "3606791ca1fb73e0263c4bb90d9c909d354bf9d4",
      "parents": [
        "14f8d26b8ea3413b28f2cac208c9a93600fe3a80"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:15 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:02 2006 -0800"
      },
      "message": "[PATCH] md: allow dirty raid[456] arrays to be started at boot\n\nSee patch to md.txt for more details\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "14f8d26b8ea3413b28f2cac208c9a93600fe3a80",
      "tree": "c52409db0f8c457683add609367976dfef645b8f",
      "parents": [
        "0a27ec96b6fb1abf867e36d7b0b681d67588767a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:02 2006 -0800"
      },
      "message": "[PATCH] md: small cleanups for raid5\n\nResync code:\n  A test that isn\u0027t needed,\n  a \u0027compute_block\u0027 that makes more sense\n    elsewhere (And then doesn\u0027t need a test),\n  a couple of BUG_ONs to confirm the change makes sense.\n\nPrintks:\n  A few were missing KERN_*\n\nAlso fix a typo in a comment..\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5036805be7b815eb18dcce489d974f3aee4f3841",
      "tree": "3d112acbe459fafee17f41cb634e483080b48607",
      "parents": [
        "3795bb0fc52fe2af2749f3ad2185cb9c90871ef8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 12 02:39:17 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Dec 12 09:06:04 2005 -0800"
      },
      "message": "[PATCH] md: use correct size of raid5 stripe cache when measuring how full it is\n\nThe raid5 stripe cache was recently changed from fixed size (NR_STRIPES) to\nvariable size (conf-\u003emax_nr_stripes).  However there are two places that still\nuse the constant and as a result, reducing the size of the stripe cache can\nresult in a deadlock.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "700e432d8364ce59c521abbe03a522051610ebc2",
      "tree": "50293a973edfc2cc39858367d50497416473fb5b",
      "parents": [
        "22dfdf5212e5864b844f629736fb993d4611f190"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Nov 28 13:44:10 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Nov 28 14:42:25 2005 -0800"
      },
      "message": "[PATCH] md: fix locking problem in r5/r6\n\nbitmap_unplug actually writes data (bits) to storage, so we shouldn\u0027t be\nholding a spinlock...\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "96de1e663cda65ba9275afb1bc007f34e5068ba1",
      "tree": "b927dda4f0f2d2669658f5974a848d9f701f330b",
      "parents": [
        "3855ad9f398de88a3290f7dd799633c4b73903ea"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:39 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:39 2005 -0800"
      },
      "message": "[PATCH] md: fix some locking and module refcounting issues with md\u0027s use of sysfs\n\n1/ I really should be using the __ATTR macros for defining attributes, so\n   that the .owner field get set properly, otherwise modules can be removed\n   while sysfs files are open.  This also involves some name changes of _show\n   routines.\n\n2/ Always lock the mddev (against reconfiguration) for all sysfs attribute\n   access.  This easily avoid certain races and is completely consistant with\n   other interfaces (ioctl and /proc/mdstat both always lock against\n   reconfiguration).\n\n3/ raid5 attributes must check that the \u0027conf\u0027 structure actually exists\n   (the array could have been stopped while an attribute file was open).\n\n4/ A missing \u0027kfree\u0027 from when the raid5_conf_t was converted to have a\n   kobject embedded, and then converted back again.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3855ad9f398de88a3290f7dd799633c4b73903ea",
      "tree": "b4a898b49683712645f4b8a41cabdbca4f89122b",
      "parents": [
        "e5de485f00d6e6c15f487869faaf999c708f69b1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:38 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:39 2005 -0800"
      },
      "message": "[PATCH] md: make sure a user-request sync of raid5 ignores intent bitmap\n\nA sync of raid5 usually ignore blocks which the bitmap says are in-sync.  But\na user-request check or repair should not ignore these.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b2d444d7ad975d555bb919601bcdc0e58975a40e",
      "tree": "963a29258af95f05dd28d9de0180ac9ef533aeed",
      "parents": [
        "ba22dcbf106338a5c46d6979f9b19564faae3d49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:31 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:38 2005 -0800"
      },
      "message": "[PATCH] md: convert \u0027faulty\u0027 and \u0027in_sync\u0027 fields to bits in \u0027flags\u0027 field\n\nThis has the advantage of removing the confusion caused by \u0027rdev_t\u0027 and\n\u0027mddev_t\u0027 both having \u0027in_sync\u0027 fields.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ],
  "next": "ba22dcbf106338a5c46d6979f9b19564faae3d49"
}
