)]}'
{
  "log": [
    {
      "commit": "4b3df5668c8ebaebd8d66a5a94374be3e3b2ef0c",
      "tree": "51a231742e211143f5845edf4b09d1712dcd2771",
      "parents": [
        "1ef04fefe2241087d9db7e9615c3f11b516e36cf",
        "1f6672d44c1ae7408b43c06170ec34eb0a0e9b9f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:31:11 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:31:11 2009 +1000"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into for-linus\n"
    },
    {
      "commit": "3fa841d7e7266f6fcc1b3885b905f5153ba897d8",
      "tree": "7afa971a10eddcf52787340ea43fa1e910b5805b",
      "parents": [
        "0da3c6194ec2f32617b272df4505a1cf022faea5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "message": "md: report device as congested when suspended\n\nThis should writeback from coming when the device is temporarily\nsuspended.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0da3c6194ec2f32617b272df4505a1cf022faea5",
      "tree": "5864b61b8fac2e7477668bdb9a493d2a64d0b3dd",
      "parents": [
        "ee305acef5c7841dc25cc32e84bb94f744e1e9b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "message": "md: Improve name of threads created by md_register_thread\n\nThe management thread for raid4,5,6 arrays are all called\nmdX_raid5, independent of the actual raid level, which is wrong and\ncan be confusion.\n\nSo change md_register_thread to use the name from the personality\nunless no alternate name (like \u0027resync\u0027 or \u0027reshape\u0027) is given.\n\nThis is simpler and more correct.\n\nCc: Jinzc \u003czhenchengjin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a9f326ebf22a0de776815240fb76dabe139397ea",
      "tree": "4402ba08931cd0663aca077be4d26e66c91869bd",
      "parents": [
        "7fa07729e439a6184bd824746d06a49cca553f15"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "message": "md: remove sparse waring \"symbol xxx shadows an earlier one\"\n\nRename some variable and remove some duplicate definitions\nto avoid there warnings.  None of them are actual errors.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6c910a78e495b4c1778a8b136b37fe3c05712730",
      "tree": "46bb72265a9ea354e1bb6b043318e93dbf07df5e",
      "parents": [
        "2d6e4ecc87d20299bcb249dd62efbd73496744c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:24:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:24:54 2009 -0700"
      },
      "message": "md/raid6: cleanup ops_run_compute6_2\n\nNeil says:\n\t\"It is correct as it stands, but the fact that every branch in\n\t the \u0027if\u0027 part ends with a \u0027return\u0027 isn\u0027t immediately obvious,\n\t so it is clearer if we are explicit about the if / then / else\n\t structure.\"\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "2d6e4ecc87d20299bcb249dd62efbd73496744c3",
      "tree": "943c2a81e5a7996129978169c2f431b3b0c9f282",
      "parents": [
        "084dac53adcfb910792a66bc0bae720cdde971de"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:11:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:11:54 2009 -0700"
      },
      "message": "md/raid6: eliminate BUG_ON with side effect\n\nAs pointed out by Neil it should be possible to build a driver with all\nBUG_ON statements deleted.  It\u0027s bad form to have a BUG_ON with a side\neffect.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "1f98a13f623e0ef666690a18c1250335fc6d7ef1",
      "tree": "15ca2dddffaa18a0d1844957f4f8cc707cbb8117",
      "parents": [
        "e7e503aedb1f4d165081cb8d47a58c38f80f0cb4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:32:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "bio: first step in sanitizing the bio-\u003ebi_rw flag testing\n\nGet rid of any functions that test for these bits and make callers\nuse bio_rw_flagged() directly. Then it is at least directly apparent\nwhat variable and flag they check.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9134d02bc0af4a8747d448d1f811ec5f8eb96df6",
      "tree": "704c3e5dcc10f360815c4868a74711f82fb62e27",
      "parents": [
        "bbb20089a3275a19e475dbc21320c3742e3ca423",
        "80ffb3cceaefa405f2ecd46d66500ed8d53efe74"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:54 2009 -0700"
      },
      "message": "Merge commit \u0027md/for-linus\u0027 into async-tx-next\n\nConflicts:\n\tdrivers/md/raid5.c\n"
    },
    {
      "commit": "bbb20089a3275a19e475dbc21320c3742e3ca423",
      "tree": "216fdc1cbef450ca688135c5b8969169482d9a48",
      "parents": [
        "3e48e656903e9fd8bc805c6a2c4264d7808d315b",
        "657a77fa7284d8ae28dfa48f1dc5d919bf5b2843"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:21 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:21 2009 -0700"
      },
      "message": "Merge branch \u0027dmaengine\u0027 into async-tx-next\n\nConflicts:\n\tcrypto/async_tx/async_xor.c\n\tdrivers/dma/ioat/dma_v2.h\n\tdrivers/dma/ioat/pci.c\n\tdrivers/md/raid5.c\n"
    },
    {
      "commit": "0403e3827788d878163f9ef0541b748b0f88ca5d",
      "tree": "2dc73744bd92c268a1310f24668167f130877278",
      "parents": [
        "f9dd2134374c8de6b911e2b8652c6c9622eaa658"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:50 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:50 2009 -0700"
      },
      "message": "dmaengine: add fence support\n\nSome engines optimize operation by reading ahead in the descriptor chain\nsuch that descriptor2 may start execution before descriptor1 completes.\nIf descriptor2 depends on the result from descriptor1 then a fence is\nrequired (on descriptor2) to disable this optimization.  The async_tx\napi could implicitly identify dependencies via the \u0027depend_tx\u0027\nparameter, but that would constrain cases where the dependency chain\nonly specifies a completion order rather than a data dependency.  So,\nprovide an ASYNC_TX_FENCE to explicitly identify data dependencies.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "f9dd2134374c8de6b911e2b8652c6c9622eaa658",
      "tree": "c1b8f8d622941606b9e7247ab31d811ba4295011",
      "parents": [
        "4b652f0db3be891c7b76b109c3b55003b920fc96",
        "07a3b417dc3d00802bd7b4874c3e811f0b015a7d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:29 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:29 2009 -0700"
      },
      "message": "Merge branch \u0027md-raid6-accel\u0027 into ioat3.2\n\nConflicts:\n\tinclude/linux/dmaengine.h\n"
    },
    {
      "commit": "07a3b417dc3d00802bd7b4874c3e811f0b015a7d",
      "tree": "b3b484067f700a70f3e7d575bad6e7e4ae2742cc",
      "parents": [
        "b774ef491b4edf6876077014ecbb87f10c69c10f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid456: distribute raid processing over multiple cores\n\nNow that the resources to handle stripe_head operations are allocated\npercpu it is possible for raid5d to distribute stripe handling over\nmultiple cores.  This conversion also adds a call to cond_resched() in\nthe non-multicore case to prevent one core from getting monopolized for\nraid operations.\n\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "b774ef491b4edf6876077014ecbb87f10c69c10f",
      "tree": "a4132f50e29b43c0b23e478001220b3e90ea4731",
      "parents": [
        "6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: remove synchronous infrastructure\n\nThese routines have been replaced by there asynchronous counterparts.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8",
      "tree": "97b01fc8602e7b6d4c495d0f0562ae901d78f58b",
      "parents": [
        "d82dfee0ad8f240fef1b28e2258891c07da57367"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe6\n\n1/ Use STRIPE_OP_BIOFILL to offload completion of read requests to\n   raid_run_ops\n2/ Implement a handler for sh-\u003ereconstruct_state similar to the raid5 case\n   (adds handling of Q parity)\n3/ Prevent handle_parity_checks6 from running concurrently with \u0027compute\u0027\n   operations\n4/ Hook up raid_run_ops\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n"
    },
    {
      "commit": "d82dfee0ad8f240fef1b28e2258891c07da57367",
      "tree": "44431399bef701c52f413c364f80751c18ff1179",
      "parents": [
        "a9b39a741a7e3b262b9f51fefb68e17b32756999"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 13:40:57 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_parity_check6\n\n[ Based on an original patch by Yuri Tikhonov ]\n\nImplement the state machine for handling the RAID-6 parities check and\nrepair functionality.  Note that the raid6 case does not need to check\nfor new failures, like raid5, as it will always writeback the correct\ndisks.  The raid5 case can be updated to check zero_sum_result to avoid\ngetting confused by new failures rather than retrying the entire check\noperation.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "a9b39a741a7e3b262b9f51fefb68e17b32756999",
      "tree": "659f32a0377ff241627eedb60816bda283e2233f",
      "parents": [
        "5599becca4bee7badf605e41fd5bcde76d51f2a4"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe_dirtying6\n\nIn the synchronous implementation of stripe dirtying we processed a\ndegraded stripe with one call to handle_stripe_dirtying6().  I.e.\ncompute the missing blocks from the other drives, then copy in the new\ndata and reconstruct the parities.\n\nIn the asynchronous case we do not perform stripe operations directly.\nInstead, operations are scheduled with flags to be later serviced by\nraid_run_ops.  So, for the degraded case the final reconstruction step\ncan only be carried out after all blocks have been brought up to date by\nbeing read, or computed.  Like the raid5 case schedule_reconstruction()\nsets STRIPE_OP_RECONSTRUCT to request a parity generation pass and\nthrough operation chaining can handle compute and reconstruct in a\nsingle raid_run_ops pass.\n\n[dan.j.williams@intel.com: fixup handle_stripe_dirtying6 gating]\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "5599becca4bee7badf605e41fd5bcde76d51f2a4",
      "tree": "c2d231dfb073dc19bd9ac7cdbac20e07280b9fb0",
      "parents": [
        "c0f7bddbe60f43578dccf4ffb8d4bff88f625ea7"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe_fill6\n\nModify handle_stripe_fill6 to work asynchronously by introducing\nfetch_block6 as the raid6 analog of fetch_block5 (schedule compute\noperations for missing/out-of-sync disks).\n\n[dan.j.williams@intel.com: compute D+Q in one pass]\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "c0f7bddbe60f43578dccf4ffb8d4bff88f625ea7",
      "tree": "4100908f0a90821b6b1e42b725f25d279525799f",
      "parents": [
        "ac6b53b6e6acab27e4f3e2383f9ac1f0d7c6200b"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid5,6: common schedule_reconstruction for raid5/6\n\nExtend schedule_reconstruction5 for reuse by the raid6 path.  Add\nsupport for generating Q and BUG() if a request is made to perform\n\u0027prexor\u0027.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ac6b53b6e6acab27e4f3e2383f9ac1f0d7c6200b",
      "tree": "e9c67502fd32a9eea4902ea382e51eecb09f2a54",
      "parents": [
        "4e7d2c0aefb77f7b24942e5af042a083be4d60bb"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 13:40:19 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous raid6 operations\n\n[ Based on an original patch by Yuri Tikhonov ]\n\nThe raid_run_ops routine uses the asynchronous offload api and\nthe stripe_operations member of a stripe_head to carry out xor+pq+copy\noperations asynchronously, outside the lock.\n\nThe operations performed by RAID-6 are the same as in the RAID-5 case\nexcept for no support of STRIPE_OP_PREXOR operations. All the others\nare supported:\nSTRIPE_OP_BIOFILL\n - copy data into request buffers to satisfy a read request\nSTRIPE_OP_COMPUTE_BLK\n - generate missing blocks (1 or 2) in the cache from the other blocks\nSTRIPE_OP_BIODRAIN\n - copy data out of request buffers to satisfy a write request\nSTRIPE_OP_RECONSTRUCT\n - recalculate parity for new data that has entered the cache\nSTRIPE_OP_CHECK\n - verify that the parity is correct\n\nThe flow is the same as in the RAID-5 case, and reuses some routines, namely:\n1/ ops_complete_postxor (renamed to ops_complete_reconstruct)\n2/ ops_complete_compute (updated to set up to 2 targets uptodate)\n3/ ops_run_check (renamed to ops_run_check_p for xor parity checks)\n\n[neilb@suse.de: fixes to get it to pass mdadm regression suite]\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n\n"
    },
    {
      "commit": "4e7d2c0aefb77f7b24942e5af042a083be4d60bb",
      "tree": "59d127eac9d9c0ff5feea9d741739ccc6fae65c3",
      "parents": [
        "cb3c82992f62f838e6476a0bff12909158007fc6"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "message": "md/raid5: factor out mark_uptodate from ops_complete_compute5\n\nops_complete_compute5 can be reused in the raid6 path if it is updated to\ngenerically handle a second target.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ad283ea4a3ce82cda2efe33163748a397b31b1eb",
      "tree": "11cd739195f336895abe9e4a62d824e49a41c24f",
      "parents": [
        "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "async_tx: add sum check flags\n\nReplace the flat zero_sum_result with a collection of flags to contain\nthe P (xor) zero-sum result, and the soon to be utilized Q (raid6 reed\nsolomon syndrome) zero-sum result.  Use the SUM_CHECK_ namespace instead\nof DMA_ since these flags will be used on non-dma-zero-sum enabled\nplatforms.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702",
      "tree": "0b881c68e676376f2f0eccb2eb377dc3561d395f",
      "parents": [
        "36d1c6476be51101778882897b315bd928c8c7b5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:50:52 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid5,6: add percpu scribble region for buffer lists\n\nUse percpu memory rather than stack for storing the buffer lists used in\nparity calculations.  Include space for dma address conversions and pass\nthat to async_tx via the async_submit_ctl.scribble pointer.\n\n[ Impact: move memory pressure from stack to heap ]\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "36d1c6476be51101778882897b315bd928c8c7b5",
      "tree": "55b4ecd93ce9c22722c9c9da0dd28a2d2f7c082d",
      "parents": [
        "a11034b4282515fd7d9f6fdc0a1380781da461c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:22 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid6: move the spare page to a percpu allocation\n\nIn preparation for asynchronous handling of raid6 operations move the\nspare page to a percpu allocation to allow multiple simultaneous\nsynchronous raid6 recovery operations.\n\nMake this allocation cpu hotplug aware to maximize allocation\nefficiency.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "1a67dde0abba36421a1257d01ba9de2f6d1c160a",
      "tree": "c182c31207c46824097be7ce6b8813f05db4eb65",
      "parents": [
        "a639755cf885e437b2fe4168d35157fa90d530ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:49 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:49 2009 +1000"
      },
      "message": "md/raid5: Properly remove excess drives after shrinking a raid5/6\n\nWe were removing the drives, from the array, but not\nremoving symlinks from /sys/.... and not marking the device\nas having been removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a639755cf885e437b2fe4168d35157fa90d530ab",
      "tree": "01d9a04a1c1c0b16863a51ec389470e436e9fb13",
      "parents": [
        "67ac6011db5d2b0c853d573ff474b25c85dfb644"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:13:00 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:13:00 2009 +1000"
      },
      "message": "md/raid5: make sure a reshape restarts at the correct address.\n\nThis \"if\" don\u0027t allow for the possibility that the number of devices\ndoesn\u0027t change, and so sector_nr isn\u0027t set correctly in that case.\nSo change \u0027\u003e\u0027 to \u0027\u003e\u003d\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "67ac6011db5d2b0c853d573ff474b25c85dfb644",
      "tree": "29b30e5e4eac0564c34e0b0b3d655383ba9c783f",
      "parents": [
        "51d5668cb2e3fd1827a55184e48606fff054c5be"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:06:24 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:06:24 2009 +1000"
      },
      "message": "md/raid5: allow new reshape modes to be restarted in the middle.\n\nmd/raid5 doesn\u0027t allow a reshape to restart if it involves writing\nover the same part of disk that it would be reading from.\nThis happens at the beginning of a reshape that increases the number\nof devices, at the end of a reshape that decreases the number of\ndevices, and continuously for a reshape that does not change the\nnumber of devices.\n\nThe current code is correct for the \"increase number of devices\"\ncase as the critical section at the start is handled by userspace\nperforming a backup.\n\nIt does not work for reducing the number of devices, or the\nno-change case.\nFor \u0027reducing\u0027, we need to invert the test.  For no-change we cannot\nreally be sure things will be safe, so simply require the array\nto be read-only, which is how the user-space code which carefully\nstarts such arrays works.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "449aad3e25358812c43afc60918c5ad3819488e7",
      "tree": "45fab3b82fc1ed06959537a0801319045cf4c102",
      "parents": [
        "64bd660b51b2da92e99a5e97349f6558349f11c5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: Use revalidate_disk to effect changes in size of device.\n\nAs revalidate_disk calls check_disk_size_change, it will cause\nany capacity change of a gendisk to be propagated to the blockdev\ninode.  So use that instead of mucking about with locks and\ni_size_write.\n\nAlso add a call to revalidate_disk in do_md_run and a few other places\nwhere the gendisk capacity is changed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "64bd660b51b2da92e99a5e97349f6558349f11c5",
      "tree": "d35be79528dc8730b908e9d78357454ff22aee72",
      "parents": [
        "e516402c0d4fc02be4af9fa8c18954d4f9deb44e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: allow raid5_quiesce to work properly when reshape is happening.\n\nThe -\u003equiesce method is not supposed to stop resync/recovery/reshape,\njust normal IO.\nBut in raid5 we don\u0027t have a way to know which stripes are being\nused for normal IO and which for resync etc, so we need to wait for\nall stripes to be idle to be sure that all writes have completed.\n\nHowever reshape keeps at least some stripe busy for an extended period\nof time, so a call to raid5_quiesce can block for several seconds\nneedlessly.\nSo arrange for reshape etc to pause briefly while raid5_quiesce is\ntrying to quiesce the array so that the active_stripes count can\ndrop to zero.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e516402c0d4fc02be4af9fa8c18954d4f9deb44e",
      "tree": "8fa40d8f835d643ed903e1a89567a53256acc395",
      "parents": [
        "70471dafe3390243c598a3165dfb86b8b8b3f4fe"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "message": "md/raid5: set reshape_position correctly when reshape starts.\n\nAs the internal reshape_progress counter is the main driver\nfor reshape, the fact that reshape_position sometimes starts with the\nwrong value has minimal effect.  It is visible in sysfs and that\nis all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "95fc17aac45300f45968aacd97a536ddd8db8101",
      "tree": "9ca3004304165a17c2923f25ee1df196928ce858",
      "parents": [
        "7d3e91b8a1f5179d56a7412d4b499f2d5fc6b25d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 31 12:39:15 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 31 12:39:15 2009 +1000"
      },
      "message": "md/raid6: release spare page at -\u003estop()\n\nAdd missing call to safe_put_page from stop() by unifying open coded\nraid5_conf_t de-allocation under free_conf().\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a11034b4282515fd7d9f6fdc0a1380781da461c3",
      "tree": "31731cf11de0f1fbeaa3e818740b83221badee4c",
      "parents": [
        "04ce9ab385dc97eb55299d533cd3af79b8fc7529"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:16 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:16 2009 -0700"
      },
      "message": "md/raid6: release spare page at -\u003estop()\n\nAdd missing call to safe_put_page from stop() by unifying open coded\nraid5_conf_t de-allocation under free_conf().\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "e62e58a5ffdc98ac28d8dbd070c857620d541f99",
      "tree": "0ec3471f4e66e3a376ac8cb2da79d6123e7aa2cf",
      "parents": [
        "a5c308d4d1659b1f4833b863394e3e24cdbdfc6e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "message": "md: use interruptible wait when duration is controlled by userspace.\n\nUser space can set various limits on an md array so that resync waits\nwhen it gets to a certain point, or so that I/O is blocked for a short\nwhile.\nWhen md is waiting against one of these limit, it should use an\ninterruptible wait so as not to add to the load average, and so are\nnot to trigger a warning if the wait goes on for too long.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a5c308d4d1659b1f4833b863394e3e24cdbdfc6e",
      "tree": "6affde6f3f03c01f651210cc042a07ba70533d03",
      "parents": [
        "0909dc448c98ed5021c87ffdfc09fb473aa464ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "message": "md/raid5: suspend shouldn\u0027t affect read requests.\n\nmd allows write to regions on an array to be suspended temporarily.\nThis allows user-space to participate is aspects of reshape.\nIn particular, data can be copied with not risk of a race.\nWe should not be blocking read requests though, so don\u0027t.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f6c2e4b325a8e9f8f47febb2fd0ed4fae7d45a9",
      "tree": "6e383e2ec48b5c90fe07325a7f6ab38ea1a97dfa",
      "parents": [
        "5a4f13fad1ab5bd08dea78fc55321e429d83cddf"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "message": "md: Use new topology calls to indicate alignment and I/O sizes\n\nSwitch MD over to the new disk_stack_limits() function which checks for\naligment and adjusts preferred I/O sizes when stacking.\n\nAlso indicate preferred I/O sizes where applicable.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "48606a9f2fc034f0b308d088c1f7ab6d407c462c",
      "tree": "4d1e9f14a3400905ff6c1a6d16c423da013bee8d",
      "parents": [
        "7a3ab908948b6296ee7e81d42f7c176361c51975"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 09:14:12 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 09:14:12 2009 +1000"
      },
      "message": "md/raid5: correctly update sync_completed when we reach max_resync\n\nAt the end of reshape_request we update cyrr_resync_completed\nif we are about to pause due to reaching resync_max.\nHowever we update it to the wrong value.  We need to add the\n\"reshape_sectors\" that have just been reshaped.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7a3ab908948b6296ee7e81d42f7c176361c51975",
      "tree": "61a066da1bda9af8268bb865e609518be8efd024",
      "parents": [
        "495d357301e1de01fabe30ce9a555301fb4675c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jun 16 16:00:33 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:50:18 2009 +1000"
      },
      "message": "md/raid5: add missing call to schedule() after prepare_to_wait()\n\nIn the unlikely event that reshape progresses past the current request\nwhile it is waiting for a stripe we need to schedule() before retrying\nfor 2 reasons:\n1/ Prevent list corruption from duplicated list_add() calls without\n   intervening list_del().\n2/ Give the reshape code a chance to make some progress to resolve the\n   conflict.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c6ac868b107ed50a46204f6d14e2ad9443ff146",
      "tree": "a0690ce92ed1993cc3211448948f3964c389c082",
      "parents": [
        "50ac168a6e0a061bf5346d53aa9e7beb94c97527"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "message": "md: Push down reconstruction log message to personality code.\n\nCurrently, the md layer checks in analyze_sbs() if the raid level\nsupports reconstruction (mddev-\u003elevel \u003e\u003d 1) and if reconstruction is\nin progress (mddev-\u003erecovery_cp !\u003d MaxSector).\n\nMove that printk into the personality code of those raid levels that\ncare (levels 1, 4, 5, 6, 10).\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "50ac168a6e0a061bf5346d53aa9e7beb94c97527",
      "tree": "4f1eff67793bd8349a1995c921a63e9512be7818",
      "parents": [
        "597a711b69cfff95c4b8f6069037e7ad3fc71f56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:55 2009 +1000"
      },
      "message": "md: merge reconfig and check_reshape methods.\n\nThe difference between these two methods is artificial.\nBoth check that a pending reshape is valid, and perform any\naspect of it that can be done immediately.\n\u0027reconfig\u0027 handles chunk size and layout.\n\u0027check_reshape\u0027 handles raid_disks.\n\nSo make them just one method.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "597a711b69cfff95c4b8f6069037e7ad3fc71f56",
      "tree": "8c2cfa4c1223827a560de2f14da426d4822151c4",
      "parents": [
        "01ee22b496c41384eaa6dcae983c86d8bc32fbb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:42 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:42 2009 +1000"
      },
      "message": "md: remove unnecessary arguments from -\u003ereconfig method.\n\nPassing the new layout and chunksize as args is not necessary as\nthe mddev has fields for new_check and new_layout.\n\nThis is preparation for combining the check_reshape and reconfig\nmethods\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "01ee22b496c41384eaa6dcae983c86d8bc32fbb8",
      "tree": "aeb031b03e2a8b784fcf71ed462c0aa37b7006ef",
      "parents": [
        "d6e412eaa52db82010f12ea7d2c9b9468e933c44"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:20 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:20 2009 +1000"
      },
      "message": "md: raid5: check stripe cache is large enough in start_reshape\n\nIn reshape cases that do not change the number of devices,\nstart_reshape is called without first calling check_reshape.\n\nCurrently, the check that the stripe_cache is large enough is\nonly done in check_reshape.  It should be in start_reshape too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cdc2ae6d6a30df8fd92c5e300d0e3005e13eb6b0",
      "tree": "f64a34e565e8b8c8e983b278d9f17162a0f76ecc",
      "parents": [
        "0ba459d26260d4d13346c76642f461b2bf607eef"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:46:47 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:46:47 2009 +1000"
      },
      "message": "md: fix some comments.\n\n1/ Raid5 has learned to take over also raid4 and raid6 arrays.\n2/ new_chunk in mdp_superblock_1 is in sectors, not bytes.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0ba459d26260d4d13346c76642f461b2bf607eef",
      "tree": "39b4032b6f2e83caf35fe682fb190d7b8f029840",
      "parents": [
        "09c9e5fa1b93ad5b81c9dcf8ce3a5b9ae2ac31e4"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:46:10 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:46:10 2009 +1000"
      },
      "message": "md/raid5: Use is_power_of_2() in raid5_reconfig()/raid6_reconfig().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "09c9e5fa1b93ad5b81c9dcf8ce3a5b9ae2ac31e4",
      "tree": "2b8767d6a94654944f18ad96347fa6fcddf1eda0",
      "parents": [
        "664e7c413f1e90eceb0b2596dd73a0832faec058"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:45:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:45:55 2009 +1000"
      },
      "message": "md: convert conf-\u003echunk_size and conf-\u003eprev_chunk to sectors.\n\nThis kills some more shifts.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "664e7c413f1e90eceb0b2596dd73a0832faec058",
      "tree": "72ea827a0f2a493766d3ea1fd14909c756aa4496",
      "parents": [
        "9d8f0363623b3da12c43007cf77f5e1a4e8a5964"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:45:27 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:45:27 2009 +1000"
      },
      "message": "md: Convert mddev-\u003enew_chunk to sectors.\n\nA straight-forward conversion which gets rid of some\nmultiplications/divisions/shifts. The patch also introduces a couple\nof new ones, most of which are due to conf-\u003echunk_size still being\nrepresented in bytes. This will be cleaned up in subsequent patches.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9d8f0363623b3da12c43007cf77f5e1a4e8a5964",
      "tree": "0fee53971a397ade209dd36c4f1ed50db6450faf",
      "parents": [
        "fbb704efb784e2c8418e34dc3013af76bdd58101"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:45:01 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:45:01 2009 +1000"
      },
      "message": "md: Make mddev-\u003echunk_size sector-based.\n\nThis patch renames the chunk_size field to chunk_sectors with the\nimplied change of semantics.  Since\n\n\tis_power_of_2(chunk_size) \u003d is_power_of_2(chunk_sectors \u003c\u003c 9)\n\t\t\t\t  \u003d is_power_of_2(chunk_sectors)\n\nthese bits don\u0027t need an adjustment for the shift.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "740da44918680a0c72411ae4ccdd1861069afcc4",
      "tree": "2d68483563ee16198af3418c40352c34828cc01f",
      "parents": [
        "964e7913b0d25b988e27a7cd9378bc55cc572bb4"
      ],
      "author": {
        "name": "raz ben yehuda",
        "email": "raziebe@gmail.com",
        "time": "Tue Jun 16 17:01:36 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 17:01:36 2009 +1000"
      },
      "message": "md: raid5: chunk size check in setup_conf\n\nhave raid5 check chunk size in run/reshape method instead of in md\n\nSigned-off-by: raziebe@gmail.com\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "070ec55d07157a3041f92654135c3c6e2eaaf901",
      "tree": "10f24d859e669ba4a671204ce4176a2b43fdaae5",
      "parents": [
        "a6b3deafe0c50e3e873e8ed5cc8abfcb25c05eff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:21 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 16 16:54:21 2009 +1000"
      },
      "message": "md: remove mddev_to_conf \"helper\" macro\n\nHaving a macro just to cast a void* isn\u0027t really helpful.\nI would must rather see that we are simply de-referencing -\u003eprivate,\nthan have to know what the macro does.\n\nSo open code the macro everywhere and remove the pointless cast.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c9059598ea8981d02356eead3188bf7fa4d717b8",
      "tree": "03e73b20a30e988da7c6a3e0ad93b2dc5843274d",
      "parents": [
        "0a33f80a8373eca7f4bea3961d1346c3815fa5ed",
        "b0fd271d5fba0b2d00888363f3869e3f9b26caa9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 10:52:27 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jun 11 11:10:35 2009 -0700"
      },
      "message": "Merge branch \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.31\u0027 of git://git.kernel.dk/linux-2.6-block: (153 commits)\n  block: add request clone interface (v2)\n  floppy: fix hibernation\n  ramdisk: remove long-deprecated \"ramdisk\u003d\" boot-time parameter\n  fs/bio.c: add missing __user annotation\n  block: prevent possible io_context-\u003erefcount overflow\n  Add serial number support for virtio_blk, V4a\n  block: Add missing bounce_pfn stacking and fix comments\n  Revert \"block: Fix bounce limit setting in DM\"\n  cciss: decode unit attention in SCSI error handling code\n  cciss: Remove no longer needed sendcmd reject processing code\n  cciss: change SCSI error handling routines to work with interrupts enabled.\n  cciss: separate error processing and command retrying code in sendcmd_withirq_core()\n  cciss: factor out fix target status processing code from sendcmd functions\n  cciss: simplify interface of sendcmd() and sendcmd_withirq()\n  cciss: factor out core of sendcmd_withirq() for use by SCSI error handling code\n  cciss: Use schedule_timeout_uninterruptible in SCSI error handling code\n  block: needs to set the residual length of a bidi request\n  Revert \"block: implement blkdev_readpages\"\n  block: Fix bounce limit setting in DM\n  Removed reference to non-existing file Documentation/PCI/PCI-DMA-mapping.txt\n  ...\n\nManually fix conflicts with tracing updates in:\n\tblock/blk-sysfs.c\n\tdrivers/ide/ide-atapi.c\n\tdrivers/ide/ide-cd.c\n\tdrivers/ide/ide-floppy.c\n\tdrivers/ide/ide-tape.c\n\tinclude/trace/events/block.h\n\tkernel/trace/blktrace.c\n"
    },
    {
      "commit": "0e6e0271a210817e202c8a4bfffbde3e3c0616d1",
      "tree": "0452e29d393b7688f09f38c98f113703d1b5cc3d",
      "parents": [
        "a8c906ca3f63d05f0d25490cf82276f73c6fe095"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 09 16:32:22 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 09 16:32:22 2009 +1000"
      },
      "message": "md/raid5: fix bug in reshape code when chunk_size decreases.\n\nNow that we support changing the chunksize, we calculate\n\"reshape_sectors\" to be the max of number of sectors in old\nand new chunk size.\nHowever there is one please where we still use \u0027chunksize\u0027\nrather than \u0027reshape_sectors\u0027.\nThis causes a reshape that reduces the size of chunks to freeze.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8c906ca3f63d05f0d25490cf82276f73c6fe095",
      "tree": "993249ef5865a2ec81ed21e8934ed9c0eb9f33dd",
      "parents": [
        "f001a70cdc61c01452d42e8b32fd7c7842ef62d5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 09 14:39:59 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 09 14:39:59 2009 +1000"
      },
      "message": "md/raid5 - avoid deadlocks in get_active_stripe during reshape\n\nmd has functionality to \u0027quiesce\u0027 and array so that all pending\nIO completed and no new IO starts.  This is used to achieve a\nstable state before making internal changes.\n\nCurrently this quiescing applies equally to normal IO, resync\nIO, and reshape IO.\nHowever there is a problem with applying it to reshape IO.\nReshape can have multiple \u0027stripe_heads\u0027 that must be active together.\nIf the quiesce come between allocating the first and the last of\nsuch a collection, then we deadlock, as the last will not be allocated\nuntil the quiesce is lifted, the quiesce will not be lifted until the\nfirst (which has been allocated) gets used, and that first cannot be\nused until the last is allocated.\n\nIt is not necessary to inhibit reshape IO when a quiesce is\nrequested.  Those places in the code that require a full quiesce will\nensure the reshape thread is not running at all.\n\nSo allow reshape requests to get access to new stripe_heads without\nbeing blocked by a \u0027quiesce\u0027.\n\nThis only affects in-place reshapes (i.e. where the array does not\ngrow or shrink) and these are only newly supported.  So this patch is\nnot needed in earlier kernels.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f001a70cdc61c01452d42e8b32fd7c7842ef62d5",
      "tree": "6427a1baca4b818aa2081cbeb5534f2e6b17cf5e",
      "parents": [
        "ccc0d38ec13d4649d4168c1db590137df53ad783"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 09 14:30:31 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 09 14:30:31 2009 +1000"
      },
      "message": "md/raid5: use conf-\u003eraid_disks in preference to mddev-\u003eraid_disk\n\nmddev-\u003eraid_disks can be changed and any time by a request from\nuser-space.  It is a suggestion as to what number of raid_disks is\ndesired.\n\nconf-\u003eraid_disks can only be changed by the raid5 module with suitable\nlocks in place.  It is a statement as to the current number of\nraid_disks.\n\nThere are two places where the latter should be used, but the former\nis used.  This can lead to a crash when reshaping an array.\n\nThis patch changes to mddev-\u003e to conf-\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a08abd8ca890a377521d65d493d174bebcaf694b",
      "tree": "987c149a2d7d6ab345f426ac28191627b4a02a3e",
      "parents": [
        "88ba2aa586c874681c072101287e15d40de7e6e2"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 11:43:59 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 14:07:35 2009 -0700"
      },
      "message": "async_tx: structify submission arguments, add scribble\n\nPrepare the api for the arrival of a new parameter, \u0027scribble\u0027.  This\nwill allow callers to identify scratchpad memory for dma address or page\naddress conversions.  As this adds yet another parameter, take this\nopportunity to convert the common submission parameters (flags,\ndependency, callback, and callback argument) into an object that is\npassed by reference.\n\nAlso, take this opportunity to fix up the kerneldoc and add notes about\nthe relevant ASYNC_TX_* flags for each routine.\n\n[ Impact: moves api pass-by-value parameters to a pass-by-reference struct ]\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "88ba2aa586c874681c072101287e15d40de7e6e2",
      "tree": "69a124fcd0a8a75ef9aae0cc4081bad83c770374",
      "parents": [
        "099f53cb50e45ef617a9f1d63ceec799e489418b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Apr 09 16:16:18 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jun 03 14:07:34 2009 -0700"
      },
      "message": "async_tx: kill ASYNC_TX_DEP_ACK flag\n\nIn support of inter-channel chaining async_tx utilizes an ack flag to\ngate whether a dependent operation can be chained to another.  While the\nflag is not set the chain can be considered open for appending.  Setting\nthe ack flag closes the chain and flags the descriptor for garbage\ncollection.  The ASYNC_TX_DEP_ACK flag essentially means \"close the\nchain after adding this dependency\".  Since each operation can only have\none child the api now implicitly sets the ack flag at dependency\nsubmission time.  This removes an unnecessary management burden from\nclients of the api.\n\n[ Impact: clean up and enforce one dependency per operation ]\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ed37d83e6aa218192fb28bb6b82498d2a8c74070",
      "tree": "bfa8462c7be84539deae430355228305e5516a7a",
      "parents": [
        "b492b852cd8c99505708152c29a5e09a787af9de"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 27 21:39:05 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 27 21:39:05 2009 +1000"
      },
      "message": "md: raid5: change incorrect usage of \u0027min\u0027 macro to \u0027min_t\u0027\n\nA recent patch to raid5.c use min on an int and a sector_t.\nThis isn\u0027t allowed.\nSo change it to min_t(sector_t,x,y).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "848b3182365fdf5a05bcd5ed949071cac2c894b3",
      "tree": "cfb09457f8d8d582d443a92c2a47f1f9862a2036",
      "parents": [
        "b6a9ce688f613e2ee5f15e6720e0bb8520efc36e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 26 12:41:08 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 26 12:41:08 2009 +1000"
      },
      "message": "md: raid5: avoid sector values going negative when testing reshape progress.\n\nAs sector_t in unsigned, we cannot afford to let \u0027safepos\u0027 etc go\nnegative.\nSo replace\n   a -\u003d b;\nby\n   a -\u003d min(b,a);\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ae03bf639a5027d27270123f5f6e3ee6a412781d",
      "tree": "d705f41a188ad656b1f47f7952626a9f992e3b8f",
      "parents": [
        "e1defc4ff0cf57aca6c5e3ff99fa503f5943c1f1"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri May 22 17:17:50 2009 -0400"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 22 23:22:54 2009 +0200"
      },
      "message": "block: Use accessor functions for queue limits\n\nConvert all external users of queue limits to using wrapper functions\ninstead of poking the request queue variables directly.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "c03f6a19699fce4389888a45db8245969311d868",
      "tree": "2a3be3033d5fad42f25fe2678e98efcf6abb04bc",
      "parents": [
        "acb180b0e335ad88acfed6c8a33e39c05b95dc49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 17 11:06:30 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 17 11:06:30 2009 +1000"
      },
      "message": "md: update sync_completed and reshape_position even more often.\n\nThere are circumstances when a user-space process might need to\n\"oversee\" a resync/reshape process.  For example when doing an\nin-place reshape of a raid5, it is prudent to take a backup of each\nsection before reshaping it as this is the only way to provide\nsafety against an unplanned shutdown (i.e. crash/power failure).\n\nThe sync_max sysfs value can be used to stop the resync from\nadvancing beyond a particular point.\nSo user-space can:\n  suspend IO to the first section and back it up\n  set \u0027sync_max\u0027 to the end of the section\n  wait for \u0027sync_completed\u0027 to reach that point\n  resume IO on the first section and move on to the next section.\n\nHowever this process requires the kernel and user-space to run in\nlock-step which could introduce unnecessary delays.\n\nIt would be better if a \u0027double buffered\u0027 approach could be used with\nuserspace and kernel space working on different sections with the\n\u0027next\u0027 section always ready when the \u0027current\u0027 section is finished.\n\nOne problem with implementing this is that sync_completed is only\nguaranteed to be updated when the sync process reaches sync_max.\n(it is updated on a time basis at other times, but it is hard to rely\non that).  This defeats some of the double buffering.\n\nWith this patch, sync_completed (and reshape_position) get updated as\nthe current position approaches sync_max, so there is room for\nuserspace to advance sync_max early without losing updates.\n\nTo be precise, sync_completed is updated when the current sync\nposition reaches half way between the current value of sync_completed\nand the value of sync_max.  This will usually be a good time for user\nspace to update sync_max.\n\nIf sync_max does not get updated, the updates to sync_completed\n(together with associated metadata updates) will occur at an\nexponentially increasing frequency which will get unreasonably fast\n(one update every page) immediately before the process hits sync_max\nand stops.  So the update rate will be unreasonably fast only for an\ninsignificant period of time.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "acb180b0e335ad88acfed6c8a33e39c05b95dc49",
      "tree": "fa980978bb66b178fd8c2f474194754139c0921d",
      "parents": [
        "6d56e278444bc8323b1bcfcada126b8e4dbba0f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 14 16:28:34 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 14 16:28:34 2009 +1000"
      },
      "message": "md: improve usefulness and accuracy of sysfs file md/sync_completed.\n\nThe sync_completed file reports how much of a resync (or recovery or\nreshape) has been completed.\nHowever due to the possibility of out-of-order completion of writes,\nit is not certain to be accurate.\n\nWe have an internal value - mddev-\u003ecurr_resync_completed - which is an\naccurate value (though it might not always be quite so uptodate).\n\nSo:\n - make curr_resync_completed be uptodate a little more often,\n   particularly when raid5 reshape updates status in the metadata\n - report curr_resync_completed in the sysfs file\n - allow poll/select to report all updates to md/sync_completed.\n\nThis makes sync_completed completed usable by any external metadata\nhandler that wants to record this status information in its metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "099f53cb50e45ef617a9f1d63ceec799e489418b",
      "tree": "fd57f259f58bcf615fe2b17734ed0cbec612782d",
      "parents": [
        "fd74ea65883c7e6903e9b652795f72b723a2be69"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 08 14:28:37 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 08 14:28:37 2009 -0700"
      },
      "message": "async_tx: rename zero_sum to val\n\n\u0027zero_sum\u0027 does not properly describe the operation of generating parity\nand checking that it validates against an existing buffer.  Change the\nname of the operation to \u0027val\u0027 (for \u0027validate\u0027).  This is in\nanticipation of the p+q case where it is a requirement to identify the\ntarget parity buffers separately from the source buffers, because the\ntarget parity buffers will not have corresponding pq coefficients.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "c8f517c444e4f9f55b5b5ca202b8404691a35805",
      "tree": "e679ae13a07e1a2644da0dfc4a4d66bf73f83626",
      "parents": [
        "b0f9ec047b79a92e8b8a9dfbf97537c8fbef234a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:28:40 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:28:40 2009 +1100"
      },
      "message": "md/raid5 revise rules for when to update metadata during reshape\n\nWe currently update the metadata :\n 1/ every 3Megabytes\n 2/ When the place we will write new-layout data to is recorded in\n    the metadata as still containing old-layout data.\n\nRule one exists to avoid having to re-do too much reshaping in the\nface of a crash/restart.  So it should really be time based rather\nthan size based.  So change it to \"every 10 seconds\".\n\nRule two turns out to be too harsh when restriping an array\n\u0027in-place\u0027, as in that case the metadata much be updates for every\nstripe.\nFor the in-place update, it can only possibly be safe from a crash if\nsome user-space program data a backup of every e.g. few hundred\nstripes before allowing them to be reshaped.  In that case, the\nconstant metadata update is pointless.\nSo only update the metadata if the new metadata will report that the\nend of the \u0027old-layout\u0027 data is beyond where we are currently\nwriting \u0027new-layout\u0027 data.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b0f9ec047b79a92e8b8a9dfbf97537c8fbef234a",
      "tree": "2761193e869ed51d08674c39ed3df105cd91f4de",
      "parents": [
        "2cffc4a01dd90a502324e3453d7b245d6d16e1c2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:18 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:18 2009 +1100"
      },
      "message": "md/raid5: minor code cleanups in make_request.\n\n... and to be certain the that make_request doesn\u0027t wait forever,\nadd a \u0027wake_up\u0027 when -\u003ereshape_progress has been set to MaxSector\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2cffc4a01dd90a502324e3453d7b245d6d16e1c2",
      "tree": "bcaf6e9fb8169c4e863173d33624de4c9a181246",
      "parents": [
        "ab69ae12ceef7f23c578a3c230144e94a167a821"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:27:05 2009 +1100"
      },
      "message": "md: remove CONFIG_MD_RAID_RESHAPE config option.\n\nThis was only needed when the code was experimental.  Most of it\nis well tested now, so the option is no longer useful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ab69ae12ceef7f23c578a3c230144e94a167a821",
      "tree": "01bee8e4c4a91a1714596c4f85769bfe72e328ce",
      "parents": [
        "d1a7c50369835f9ecbd7752016cd9302ecfae678"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:26:47 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:26:47 2009 +1100"
      },
      "message": "md/raid5: be more careful about write ordering when reshaping.\n\nWhen we are reshaping an array, it is very important that we read\nthe data from a particular sector offset before writing new data\nat that offset.\n\nIn most cases when growing or shrinking an array we read long before\nwe even consider writing.  But when restriping an array without\nchanging it size, there is a small possibility that we might have\nsome data to available write before the read has happened at the same\nlocation.  This would require some stripes to be in cache already.\n\nTo guard against this small possibility, we check, before writing,\nthat the \u0027old\u0027 stripe at the same location is not in the process of\nbeing read.  And we ensure that we mark all \u0027source\u0027 stripes as such\nbefore allowing new \u0027destination\u0027 stripes to proceed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "88ce4930e2b80378d45506ce2c3bb5820e156e85",
      "tree": "75847293ede7cd396b5470c0d1c4f50dc79ff031",
      "parents": [
        "7a6613810785872b7c028fba22fc0bae1c91733d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:24:23 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:24:23 2009 +1100"
      },
      "message": "md/raid5: allow layout and chunksize to be changed on active array.\n\nIf an array has 3 or more devices, we allow the chunksize or layout\nto be changed and when a reshape starts, we use these as the \u0027new\u0027\nvalues.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7a6613810785872b7c028fba22fc0bae1c91733d",
      "tree": "b716e9278d42e83c82888d82671062d64fbf0bea",
      "parents": [
        "e183eaedd53807e33f02ee80573e2833890e1f21"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:21:40 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:21:40 2009 +1100"
      },
      "message": "md/raid5: reshape using largest of old and new chunk size\n\nThis ensures that even when old and new stripes are overlapping,\nwe will try to read all of the old before having to write any\nof the new.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e183eaedd53807e33f02ee80573e2833890e1f21",
      "tree": "ba648feacbc930936e5a66006a19ee8822ac28f5",
      "parents": [
        "784052ecc6ade6b6acf4f67e4ada8e5f2e6df446"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:20:22 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:20:22 2009 +1100"
      },
      "message": "md/raid5: prepare for allowing reshape to change layout\n\nAdd prev_algo to raid5_conf_t along the same lines as prev_chunk\nand previous_raid_disks.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "784052ecc6ade6b6acf4f67e4ada8e5f2e6df446",
      "tree": "f0b1060215922ba30a4d676a00dbdad8ddb724c9",
      "parents": [
        "86b42c713be3e5f6807aa14b4cbdb005d35c64d5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:07 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:07 2009 +1100"
      },
      "message": "md/raid5: prepare for allowing reshape to change chunksize.\n\nAdd \"prev_chunk\" to raid5_conf_t, similar to \"previous_raid_disks\", to\nremember what the chunk size was before the reshape that is currently\nunderway.\n\nThis seems like duplication with \"chunk_size\" and \"new_chunk\" in\nmddev_t, and to some extent it is, but there are differences.\nThe values in mddev_t are always defined and often the same.\nThe prev* values are only defined if a reshape is underway.\n\nAlso (and more significantly) the raid5_conf_t values will be changed\nat the same time (inside an appropriate lock) that the reshape is\nstarted by setting reshape_position.  In contrast, the new_chunk value\nis set when the sysfs file is written which could be well before the\nreshape starts.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "86b42c713be3e5f6807aa14b4cbdb005d35c64d5",
      "tree": "d6c70a966a6bda99e6cd4ce055efa84ab0ded701",
      "parents": [
        "11373542344bdc35be1e6e68b0baadd1b6f7acbb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:19:03 2009 +1100"
      },
      "message": "md/raid5: clearly differentiate \u0027before\u0027 and \u0027after\u0027 stripes during reshape.\n\nDuring a raid5 reshape, we have some stripes in the cache that are\n\u0027before\u0027 the reshape (and are still to be processed) and some that are\n\u0027after\u0027.  They are currently differentiated by having different\n-\u003edisks values as the only reshape current supported involves changing\nthe number of disks.\n\nHowever we will soon support reshapes that do not change the number\nof disks (chunk parity or chunk size).  So make the difference more\nexplicit with a \u0027generation\u0027 number.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ec32a2bd35bd6b933a5db6542c48210ce069a376",
      "tree": "32d30344202025cf1c6cd202394e65ff7e99753f",
      "parents": [
        "fef9c61fdfabf97a307c2cf3621a6949f0a4b995"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:17:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:17:38 2009 +1100"
      },
      "message": "md: allow number of drives in raid5 to be reduced\n\nWhen reshaping a raid5 to have fewer devices, we work from the end of\nthe array to the beginning.\nmd_do_sync gives addresses to sync_request that go from the beginning\nto the end.  So largely ignore them use the internal state variable\n\"reshape_progress\" to keep track of what to do next.\n\nNever allow the size to be reduced below the minimum (4 for raid6,\n3 otherwise).\n\nWe require that the size of the array has already been reduced before\nthe array is reshaped to a smaller size.  This is because simply\nreducing the size is an easily reversible operation, while the reshape\nis immediately destructive and so is not reversible for the blocks at\nthe ends of the devices.\nThus to reshape an array to have fewer devices, you must first write\nan appropriately small size to md/array_size.\n\nWhen reshape finished, we remove any drives that are no longer\nneeded and fix up -\u003edegraded.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fef9c61fdfabf97a307c2cf3621a6949f0a4b995",
      "tree": "82b128341c12205db62fe092d692d32103a7ea9f",
      "parents": [
        "cea9c22800773cecb1d41f4a6139f9eb6a95368b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:16:46 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:16:46 2009 +1100"
      },
      "message": "md/raid5: change reshape-progress measurement to cope with reshaping backwards.\n\nWhen reducing the number of devices in a raid4/5/6, the reshape\nprocess has to start at the end of the array and work down to the\nbeginning.  So we need to handle expand_progress and expand_lo\ndifferently.\n\nThis patch renames \"expand_progress\" and \"expand_lo\" to avoid the\nimplication that anything is getting bigger (expand-\u003ereshape) and\nevery place they are used, we make sure that they are used the right\nway depending on whether delta_disks is positive or negative.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cea9c22800773cecb1d41f4a6139f9eb6a95368b",
      "tree": "d070d22390b86768fefb8ba04c64d74993ed28e9",
      "parents": [
        "7ec0547838976d088dfb9cb0adb073e6e8a15aa3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:15:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:15:05 2009 +1100"
      },
      "message": "md: add explicit method to signal the end of a reshape.\n\nCurrently raid5 (the only module that supports restriping)\nnotices that the reshape has finished be sync_request being\ngiven a large value, and handles any cleanup them.\n\nThis patch changes it so md_check_recovery calls into an\nexplicit finish_reshape method as well.\n\nThe clean-up from sync_request can do things that need to be\ndone promptly, typically things local to the raid5_conf_t\nstructure.\n\nThe \"finish_reshape\" method is called under the mddev_lock\nso it can do things involving reconfiguring the device.\n\nThis allows us to get rid of md_set_array_sectors_locked, which\nwould have caused a deadlock if you tried to stop and array\nwhile a reshape was happening.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ec0547838976d088dfb9cb0adb073e6e8a15aa3",
      "tree": "32f2d5aa5d112e99bebbfb9bfde49ba82b66809d",
      "parents": [
        "34e04e87fb8b2c62c9e8868f41c8179d0e15f51a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:36 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:36 2009 +1100"
      },
      "message": "md/raid5: enhance raid5_size to work correctly with negative delta_disks\n\nThis is the first of four patches which combine to allow md/raid5 to\nreduce the number of devices in the array by restriping the data over\na subset of the devices.\n\nIf the number of disks in a raid4/5/6 is being reduced, then the\ndefault size must be based on the new number, not the old number\nof devices.\nIn general, it should be based on the smaller of new and old.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34e04e87fb8b2c62c9e8868f41c8179d0e15f51a",
      "tree": "19d62e6b77f6f786902cc5ab5f8f068fb889efe1",
      "parents": [
        "f701d589aa34d7531183c9ac6f7713ba14212b02"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:16 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:10:16 2009 +1100"
      },
      "message": "md/raid5: drop qd_idx from r6_state\n\nWe now have this value in stripe_head so we don\u0027t need to duplicate\nit.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f701d589aa34d7531183c9ac6f7713ba14212b02",
      "tree": "d388cd7fa54c520f12233470a35ebb0676677e7a",
      "parents": [
        "18b0033491f584a2d79697da714b1ef9d6b27d22"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:09:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:09:39 2009 +1100"
      },
      "message": "md/raid6: move raid6 data processing to raid6_pq.ko\n\nMove the raid6 data processing routines into a standalone module\n(raid6_pq) to prepare them to be called from async_tx wrappers and other\nnon-md drivers/modules.  This precludes a circular dependency of raid456\nneeding the async modules for data processing while those modules in\nturn depend on raid456 for the base level synchronous raid6 routines.\n\nTo support this move:\n1/ The exportable definitions in raid6.h move to include/linux/raid/pq.h\n2/ The raid6_call, recovery calls, and table symbols are exported\n3/ Extra #ifdef __KERNEL__ statements to enable the userspace raid6test to\n   compile\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "18b0033491f584a2d79697da714b1ef9d6b27d22",
      "tree": "c06549a4d8fb65418671d6f55a9d647975b9abbc",
      "parents": [
        "b522adcde9c4d3fb7b579cfa9160d8bde7744be8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 15:00:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:00:56 2009 +1100"
      },
      "message": "md: raid5 run(): Fix max_degraded for raid level 4.\n\nraid4 allows only one failed disk.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b522adcde9c4d3fb7b579cfa9160d8bde7744be8",
      "tree": "4208e3dcec3ebdfa6ad9bc153f76129400532717",
      "parents": [
        "1f403624bde3c678a166984b1e6a727a0ce06f2b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:00:31 2009 +1100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:00:31 2009 +1100"
      },
      "message": "md: \u0027array_size\u0027 sysfs attribute\n\nAllow userspace to set the size of the array according to the following\nsemantics:\n\n1/ size must be \u003c\u003d to the size returned by mddev-\u003epers-\u003esize(mddev, 0, 0)\n   a) If size is set before the array is running, do_md_run will fail\n      if size is greater than the default size\n   b) A reshape attempt that reduces the default size to less than the set\n      array size should be blocked\n2/ once userspace sets the size the kernel will not change it\n3/ writing \u0027default\u0027 to this attribute returns control of the size to the\n   kernel and reverts to the size reported by the personality\n\nAlso, convert locations that need to know the default size from directly\nreading -\u003earray_sectors to \u003cpers\u003e_size.  Resync/reshape operations\nalways follow the default size.\n\nFinally, fixup other locations that read a number of 1k-blocks from\nuserspace to use strict_blocks_to_sectors() which checks for unsigned\nlong long to sector_t overflow and blocks to sectors overflow.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "1f403624bde3c678a166984b1e6a727a0ce06f2b",
      "tree": "b66ed37091e825bcde1cd0d333d4ebba86772805",
      "parents": [
        "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "message": "md: centralize -\u003earray_sectors modifications\n\nGet personalities out of the business of directly modifying\n-\u003earray_sectors.  Lays groundwork to introduce policy on when\n-\u003earray_sectors can be modified.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03",
      "tree": "de88622f05a7e681ac7bff7714e8f2d8953b66ac",
      "parents": [
        "93ed05e2a56b5ee06c0100a169433b11c4aa5d0b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 17 18:10:40 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:57:49 2009 +1100"
      },
      "message": "md: add \u0027size\u0027 as a personality method\n\nIn preparation for giving userspace control over -\u003earray_sectors we need\nto be able to retrieve the \u0027default\u0027 size, and the \u0027anticipated\u0027 size\nwhen a reshape is requested.  For personalities that do not reshape emit\na warning if anything but the default size is requested.\n\nIn the raid5 case we need to update -\u003eprevious_raid_disks to make the\nnew \u0027default\u0027 size available.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "fc9739c6d626ee79a148ec367d143b0601299a9d",
      "tree": "492a3a29fe44fdd99d9177bef77b16a463a771f9",
      "parents": [
        "e9d4758f6e93488dc719a1445ce54659a570938f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:20 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:20 2009 +1100"
      },
      "message": "md: add takeover support for converting raid6 back into raid5\n\nIf a raid6 is still in the layout that comes from converting raid5\ninto a raid6. this will allow us to convert it back again.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e9d4758f6e93488dc719a1445ce54659a570938f",
      "tree": "13fb97a1f47f806b25b957cbf9d1ec69df8d0de8",
      "parents": [
        "b3546035277847028df650b147469fc943cf5c71"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:09 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:57:09 2009 +1100"
      },
      "message": "md: add takeover support for raid4 -\u003e raid5 conversion.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b3546035277847028df650b147469fc943cf5c71",
      "tree": "87966abc5456a62845326eb8d5a5cf0f88879b2d",
      "parents": [
        "d562b0c4313e3ddea402a400371afa47ddf679f9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:56:41 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:56:41 2009 +1100"
      },
      "message": "md/raid5: allow layout/chunksize to be changed on an active 2-drive raid5.\n\n2-drive raid5\u0027s aren\u0027t very interesting.  But if you are converting\na raid1 into a raid5, you will at least temporarily have one.  And\nthat it a good time to set the layout/chunksize for the new RAID5\nif you aren\u0027t happy with the defaults.\n\nlayout and chunksize don\u0027t actually affect the placement of data\non a 2-drive raid5, so we just do some internal book-keeping.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d562b0c4313e3ddea402a400371afa47ddf679f9",
      "tree": "e895c3f1688493f6587ad61d9824e96994ca38d6",
      "parents": [
        "245f46c2c221ef09c7db892f0e3fc2149be42052"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: add -\u003etakeover method for raid5 to be able to take over raid1\n\nThe RAID1 must have two drives and be a suitable size to\nbe a multiple of a chunksize that isn\u0027t too small.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "245f46c2c221ef09c7db892f0e3fc2149be42052",
      "tree": "be7e6f4b7b65b682c43e59ef17f7ed580bc8a82b",
      "parents": [
        "409c57f3801701dfee27a28103dda4831306cb20"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: add -\u003etakeover method to support changing the personality managing an array\n\nImplement this for RAID6 to be able to \u0027takeover\u0027 a RAID5 array.  The\nnew RAID6 will use a layout which places Q on the last device, and\nthat device will be missing.\nIf there are any available spares, one will immediately have Q\nrecovered onto it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e0cf8f045b2023b0b3f919ee93eb94345f648434",
      "tree": "21d8d0741a5ae4676fea5b53939cc806ae2b41bd",
      "parents": [
        "91adb56473febeeb3ef657bb5147ddd355465700"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: md_unregister_thread should cope with being passed NULL\n\nMostly md_unregister_thread is only called when we know that the\nthread is NULL, but sometimes we need to check first.  It is safer\nto put the check inside md_unregister_thread itself.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "91adb56473febeeb3ef657bb5147ddd355465700",
      "tree": "9ed414dd2bf999d91a536449c01273ee23ddbcfa",
      "parents": [
        "34817e8c3948ea20316dfa8fd8947d6d0ee82ba9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md/raid5: refactor raid5 \"run\"\n\n.. so that the code to create the private data structures is separate.\nThis will help with future code to change the level of an active\narray.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "67cc2b8165857ba019920d1f00d64bcc4140075d",
      "tree": "ff8e8eed440640acfa561160115ac44aedf811c2",
      "parents": [
        "99c0fb5f92828ae96909d390f2df137b89093b37"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: finish support for DDF/raid6\n\nDDF requires RAID6 calculations over different devices in a different\norder.\nFor md/raid6, we calculate over just the data devices, starting\nimmediately after the \u0027Q\u0027 block.\nFor ddf/raid6 we calculate over all devices, using zeros in place of\nthe P and Q blocks.\n\nThis requires unfortunately complex loops...\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "99c0fb5f92828ae96909d390f2df137b89093b37",
      "tree": "67757972da005990d619b810c3b75fb8b6c9969f",
      "parents": [
        "911d4ee8536d89ea8a6cd3e96b1c95a3ebc5ea66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: Add support for new layouts for raid5 and raid6.\n\nDDF uses different layouts for P and Q blocks than current md/raid6\nso add those that are missing.\nAlso add support for RAID6 layouts that are identical to various\nraid5 layouts with the simple addition of one device to hold all of\nthe \u0027Q\u0027 blocks.\nFinally add \u0027raid5\u0027 layouts to match raid4.\nThese last to will allow online level conversion.\n\nNote that this does not provide correct support for DDF/raid6 yet\nas the order in which data blocks are summed to produce the Q block\nis significant and different between current md code and DDF\nrequirements.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "911d4ee8536d89ea8a6cd3e96b1c95a3ebc5ea66",
      "tree": "222c79b83b7cdcd0b73501c40ed11092b9af10cf",
      "parents": [
        "d0dabf7e577411c2bf6b616c751544dc241213d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: simplify raid5_compute_sector interface\n\nRather than passing \u0027pd_idx\u0027 and \u0027qd_idx\u0027 to be filled in, pass\na \u0027struct stripe_head *\u0027 and fill in the relevant fields.  This is\nmore extensible.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d0dabf7e577411c2bf6b616c751544dc241213d4",
      "tree": "26a41b66f1ae83e2127eceace281332134518eb0",
      "parents": [
        "112bf8970dbdfc00bd4667da5996e57c2ce58066"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid6: remove expectation that Q device is immediately after P device.\n\n\nCode currently assumes that the devices in a raid6 stripe are\n  0 1 ... N-1 P Q\nin some rotated order.  We will shortly add new layouts in which\nthis strict pattern is broken.\nSo remove this expectation.  We still assume that the data disks\nare roughly in-order.  However P and Q can be inserted anywhere within\nthat order.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "112bf8970dbdfc00bd4667da5996e57c2ce58066",
      "tree": "504afc2dec2ef28d27ef9248eb80b6165cdf95de",
      "parents": [
        "b5663ba405fe3e51176ddb6c91a5e186590c26b5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: change raid5_compute_sector and stripe_to_pdidx to take a \u0027previous\u0027 argument\n\nThis similar to the recent change to get_active_stripe.\nThere is no functional change, just come rearrangement to make\nfuture patches cleaner.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b5663ba405fe3e51176ddb6c91a5e186590c26b5",
      "tree": "5eb8f009b97a02a90cf23db012588971c2f9aa0d",
      "parents": [
        "dd8ac336c13fd8afdb082ebacb1cddd5cf727889"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:38 2009 +1100"
      },
      "message": "md/raid5: simplify interface for init_stripe and get_active_stripe\n\nRather than passing \u0027pd_idx\u0027 and \u0027disks\u0027 to these functions, just pass\n\u0027previous\u0027 which tells whether to use the \u0027previous\u0027 or \u0027current\u0027\ngeometry during a reshape, and let init_stripe calculate\ndisks and pd_idx and anything else it might need.\n\nThis is not a substantial simplification and even adds a division.\nHowever we will shortly be adding more complexity to init_stripe\nto handle more interesting \u0027reshape\u0027 activities, and without this\nchange, the interface to these functions would get very complex.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "58c0fed400603a802968b23ddf78f029c5a84e41",
      "tree": "474fcb9775bb07f39ebb7802fb9b51d69222dcbb",
      "parents": [
        "575a80fa4f623141e9791e41879d87800fb6d862"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: Make mddev-\u003esize sector-based.\n\nThis patch renames the \"size\" field of struct mddev_s to \"dev_sectors\"\nand stores the number of 512-byte sectors instead of the number of\n1K-blocks in it.\n\nAll users of that field, including raid levels 1,4-6,10, are adjusted\naccordingly. This simplifies the code a bit because it allows to get\nrid of a couple of divisions/multiplications by two.\n\nIn order to make checkpatch happy, some minor coding style issues\nhave also been addressed. In particular, size_store() now uses\nstrict_strtoull() instead of simple_strtoull().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43b2e5d86d8bdd77386226db0bc961529492c043",
      "tree": "601a885b1410324678cf319eee77cc54a02f2cf3",
      "parents": [
        "bff61975b3d6c18ee31457cc5b4d73042f44915f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move md_k.h from include/linux/raid/ to drivers/md/\n\nIt really is nicer to keep related code together..\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bff61975b3d6c18ee31457cc5b4d73042f44915f",
      "tree": "3aff48088b35172e74f56ae54f0b53e76a0c2150",
      "parents": [
        "92022950c6b1bb3da90b2976b20271cdfd98b8a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move lots of #include lines out of .h files and into .c\n\nThis makes the includes more explicit, and is preparation for moving\nmd_k.h to drivers/md/md.h\n\nRemove include/raid/md.h as its only remaining use was to #include\nother files.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef740c372dfd80e706dbf955d4e4aedda6c0c148",
      "tree": "8d9ef9db346ee1ba319a125c9de83cdde049510d",
      "parents": [
        "2a40a8aed083d988df6822bb9b1b08fb7ce21e1d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "message": "md: move headers out of include/linux/raid/\n\nMove the headers with the local structures for the disciplines and\nbitmap.h into drivers/md/ so that they are more easily grepable for\nhacking and not far away.  md.h is left where it is for now as there\nare some uses from the outside.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "159ec1fc060ab22b157a62364045f5e98749c4d3",
      "tree": "1de0edfd782245b271d2898e36ae76c00e1e1b6d",
      "parents": [
        "ccacc7d2cf03114a24ab903f710118e9e5d43273"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: use list_for_each_entry macro directly\n\nThe rdev_for_each macro defined in \u003clinux/raid/md_k.h\u003e is identical to\nlist_for_each_entry_safe, from \u003clinux/list.h\u003e, it should be defined to\nuse list_for_each_entry_safe, instead of reinventing the wheel.\n\nBut some calls to each_entry_safe don\u0027t really need a safe version,\njust a direct list_for_each_entry is enough, this could save a temp\nvariable (tmp) in every function that used rdev_for_each.\n\nIn this patch, most rdev_for_each loops are replaced by list_for_each_entry,\ntotally save many tmp vars; and only in the other situations that will call\nlist_del to delete an entry, the safe version is used.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4bbf3771ca40d0aaec8316d0e7476b16010288e5",
      "tree": "f7cba1f72612c5d2132f549881c46ff572e01933",
      "parents": [
        "d710e13812600037a723a673dc5c96a071de98d3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Relax minimum size restrictions on chunk_size.\n\nCurrently, the \u0027chunk_size\u0027 of an array must be at-least PAGE_SIZE.\n\nThis makes moving an array to a machine with a larger PAGE_SIZE, or\nchanging the kernel to use a larger PAGE_SIZE, can stop an array from\nworking.\n\nFor RAID10 and RAID4/5/6, this is non-trivial to fix as the resync\nprocess works on whole pages at a time, and assumes them to be wholly\nwithin a stripe.  For other raid personalities, this restriction is\nnot needed at all and can be dropped.\n\nSo remove the test on chunk_size from common can, and add it in just\nthe places where it is needed: raid10 and raid4/5/6.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d710e13812600037a723a673dc5c96a071de98d3",
      "tree": "df8e34fb02cb7909090aa697da7c1db4814ee122",
      "parents": [
        "fb4d8c76e56a887b9eee99fbc55fe82b18625d30"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: remove space after function name in declaration and call.\n\nHaving\n   function (args)\ninstead of\n   function(args)\n\nmake is harder to search for calls of particular functions.\nSo remove all those spaces.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fb4d8c76e56a887b9eee99fbc55fe82b18625d30",
      "tree": "0ca96887e40db671957b79d493830b9527b04949",
      "parents": [
        "ab5bd5cbc8d4b868378d062eed3d4240930fbb86"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 13 11:55:12 2008 +1100"
      },
      "message": "md: Remove unnecessary #includes, #defines, and function declarations.\n\nA lot of cruft has gathered over the years.  Time to remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "074a7aca7afa6f230104e8e65eba3420263714a5",
      "tree": "f418313e45bd55be8156c8a3e8f9a216cf63058d",
      "parents": [
        "eddb2e26b5ee3c5da68ba4bf1921ba20e2097bff"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Aug 25 19:56:14 2008 +0900"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Oct 09 08:56:08 2008 +0200"
      },
      "message": "block: move stats from disk to part0\n\nMove stats related fields - stamp, in_flight, dkstats - from disk to\npart0 and unify stat handling such that...\n\n* part_stat_*() now updates part0 together if the specified partition\n  is not part0.  ie. part_stat_*() are now essentially all_stat_*().\n\n* {disk|all}_stat_*() are gone.\n\n* part_round_stats() is updated similary.  It handles part0 stats\n  automatically and disk_round_stats() is killed.\n\n* part_{inc|dec}_in_fligh() is implemented which automatically updates\n  part0 stats for parts other than part0.\n\n* disk_map_sector_rcu() is updated to return part0 if no part matches.\n  Combined with the above changes, this makes NULL special case\n  handling in callers unnecessary.\n\n* Separate stats show code paths for disk are collapsed into part\n  stats show code paths.\n\n* Rename disk_stat_lock/unlock() to part_stat_lock/unlock()\n\nWhile at it, reposition stat handling macros a bit and add missing\nparentheses around macro parameters.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    }
  ],
  "next": "c9959059161ddd7bf4670cf47367033d6b2f79c4"
}
