)]}'
{
  "log": [
    {
      "commit": "3424bf6a772cff606fc4bc24a3639c937afb547f",
      "tree": "be299de834e0f939d19665efec4cacadd74c4914",
      "parents": [
        "2f115882499f3e5eca33d1df07b8876cc752a1ff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:48:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:36:04 2010 +1000"
      },
      "message": "md/raid5: don\u0027t include \u0027spare\u0027 drives when reshaping to fewer devices.\n\nThere are few situations where it would make any sense to add a spare\nwhen reducing the number of devices in an array, but it is\nconceivable:  A 6 drive RAID6 with two missing devices could be\nreshaped to a 5 drive RAID6, and a spare could become available\njust in time for the reshape, but not early enough to have been\nrecovered first.  \u0027freezing\u0027 recovery can make this easy to\ndo without any races.\n\nHowever doing such a thing is a bad idea.  md will not record the\npartially-recovered state of the \u0027spare\u0027 and when the reshape\nfinished it will think that the spare is still spare.\nEasiest way to avoid this confusion is to simply disallow it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2f115882499f3e5eca33d1df07b8876cc752a1ff",
      "tree": "8f9f1e723be1b4dd0e5fa7592a69245a704d8440",
      "parents": [
        "415e72d034c50520ddb7ff79e7d1792c1306f0c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:41:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:49 2010 +1000"
      },
      "message": "md/raid5: add a missing \u0027continue\u0027 in a loop.\n\nAs the comment says, the tail of this loop only applies to devices\nthat are not fully in sync, so if In_sync was set, we should avoid\nthe rest of the loop.\n\nThis bug will hardly ever cause an actual problem.  The worst it\ncan do is allow an array to be assembled that is dirty and degraded,\nwhich is not generally a good idea (without warning the sysadmin\nfirst).\n\nThis will only happen if the array is RAID4 or a RAID5/6 in an\nintermediate state during a reshape and so has one drive that is\nall \u0027parity\u0027 - no data - while some other device has failed.\n\nThis is certainly possible, but not at all common.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "415e72d034c50520ddb7ff79e7d1792c1306f0c9",
      "tree": "4558df940a15693e477af206b54423d98d9a04b1",
      "parents": [
        "674806d62fb02a22eea948c9f1b5e58e0947b728"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:25:21 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:39 2010 +1000"
      },
      "message": "md/raid5: Allow recovered part of partially recovered devices to be in-sync\n\nDuring a recovery of reshape the early part of some devices might be\nin-sync while the later parts are not.\nWe we know we are looking at an early part it is good to treat that\npart as in-sync for stripe calculations.\n\nThis is particularly important for a reshape which suffers device\nfailure.  Treating the data as in-sync can mean the difference between\ndata-safety and data-loss.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "674806d62fb02a22eea948c9f1b5e58e0947b728",
      "tree": "3367850a95d62713aa96acd2aecc493b66779398",
      "parents": [
        "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:17:53 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:27 2010 +1000"
      },
      "message": "md/raid5: More careful check for \"has array failed\".\n\nWhen we are reshaping an array, the device failure combinations\nthat cause us to decide that the array as failed are more subtle.\n\nIn particular, any \u0027spare\u0027 will be fully in-sync in the section\nof the array that has already been reshaped, thus failures that\naffect only that section are less critical.\n\nSo encode this subtlety in a new function and call it as appropriate.\n\nThe case that showed this problem was a 4 drive RAID5 to 8 drive RAID6\nconversion where the last two devices failed.\nThis resulted in:\n\n  good good good good incomplete good good failed failed\n\nwhile converting a 5-drive RAID6 to 8 drive RAID5\nThe incomplete device causes the whole array to look bad,\nbad as it was actually good for the section that had been\nconverted to 8-drives, all the data was actually safe.\n\nReported-by: Terry Morris \u003ctbmorris@tbmorris.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b",
      "tree": "126f2ae8faa2cff8f9dde91cc7a07569ff9851cb",
      "parents": [
        "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:01:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:18 2010 +1000"
      },
      "message": "md: Don\u0027t update -\u003erecovery_offset when reshaping an array to fewer devices.\n\nWhen an array is reshaped to have fewer devices, the reshape proceeds\nfrom the end of the devices to the beginning.\n\nIf a device happens to be non-In_sync (which is possible but rare)\nwe would normally update the -\u003erecovery_offset as the reshape\nprogresses. However that would be wrong as the recover_offset records\nthat the early part of the device is in_sync, while in fact it would\nonly be the later part that is in_sync, and in any case the offset\nnumber would be measured from the wrong end of the device.\n\nRelatedly, if after a reshape a spare is discovered to not be\nrecoverred all the way to the end, not allow spare_active\nto incorporate it in the array.\n\nThis becomes relevant in the following sample scenario:\n\nA 4 drive RAID5 is converted to a 6 drive RAID6 in a combined\noperation.\nThe RAID5-\u003eRAID6 conversion will cause a 5 drive to be included as a\nspare, then the 5drive -\u003e 6drive reshape will effectively rebuild that\nspare as it progresses.  The 6th drive is treated as in_sync the whole\ntime as there is never any case that we might consider reading from\nit, but must not because there is no valid data.\n\nIf we interrupt this reshape part-way through and reverse it to return\nto a 5-drive RAID6 (or event a 4-drive RAID5), we don\u0027t want to update\nthe recovery_offset - as that would be wrong - and we don\u0027t want to\ninclude that spare as active in the 5-drive RAID6 when the reversed\nreshape completed and it will be mostly out-of-sync still.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0",
      "tree": "978807084ae3136b20a12efab3720ecec861d0ff",
      "parents": [
        "049d6c1ef983c9ac43aa423dfd752071a5b0002d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 16:45:16 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:02 2010 +1000"
      },
      "message": "md/raid5: avoid oops when number of devices is reduced then increased.\n\nThe entries in the stripe_cache maintained by raid5 are enlarged\nwhen we increased the number of devices in the array, but not\nshrunk when we reduce the number of devices.\nSo if entries are added after reducing the number of devices, we\nmuch ensure to initialise the whole entry, not just the part that\nis currently relevant.  Otherwise if we enlarge the array again,\nwe will reference uninitialised values.\n\nAs grow_buffers/shrink_buffer now want to use a count that is stored\nexplicity in the raid_conf, they should get it from there rather than\nbeing passed it as a parameter.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "55af6bb509d3ef2696faddd4a734bf024794b337",
      "tree": "4a5f3493957c5c7504b91bf90bedd828a26106c0",
      "parents": [
        "d882ba699dbdd2156891290c31c22dc13d6530e4"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 26 14:43:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:48 2010 -0700"
      },
      "message": "md: convert cpu notifier to return encapsulate errno value\n\nBy the previous modification, the cpu notifier can return encapsulate\nerrno value.  This converts the cpu notifiers for raid5.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b0bb5368a7195606eca475d9f4e291ab7227052",
      "tree": "2c5b9e5269fb585d0386cf931a0d154bee5d875f",
      "parents": [
        "75a73a29e520a6ce982b0da6dd8b7560ae3faa90"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "0c55e02259115c151e4835dd417cf41467bb02e2",
      "tree": "bcc12cd6c9b2d40b8bc31a4d85cae13103168493",
      "parents": [
        "08fb730ca346ff16598ef31911c88fbca6133bf5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:09:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md/raid5: improve consistency of error messages.\n\nMany \u0027printk\u0027 messages from the raid456 module mention \u0027raid5\u0027 even\nthough it may be a \u0027raid6\u0027 or even \u0027raid4\u0027 array.  This can cause\nconfusion.\nAlso the actual array name is not always reported and when it is\nit is not reported consistently.\n\nSo change all the messages to start:\n    md/raid:%s:\nwhere \u0027%s\u0027 becomes e.g. md3 to identify the particular array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f1b29bcae116409db5e543622aadab43041c9ae9",
      "tree": "05dff62e747d8f0c91d6bd38ce900c0083dcbc98",
      "parents": [
        "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:09:05 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid4: permit raid0 takeover\n\nFor consistency allow raid4 to takeover raid0 in addition to raid5 (with a\nraid4 layout).\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "21a52c6d05c15f862797736393915bfa8cd40ee9",
      "tree": "44ffb633d209457979177a52132761a368fcb976",
      "parents": [
        "cca9cf90c504d98644ace52c474770970729f0eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:02:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: pass mddev to make_request functions rather than request_queue\n\nWe used to pass the personality make_request function direct\nto the block layer so the first argument had to be a queue.\nBut now we have the intermediary md_make_request so it makes\nat lot more sense to pass a struct mddev_s.\nIt makes it possible to have an mddev without its own queue too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b821eaa572fd737faaf6928ba046e571526c36c6",
      "tree": "0db462a3c7da3dbf42d28e2483a27d78839b4589",
      "parents": [
        "49ce6cea85fb8d25ee59486c919406e9cecf1762"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:18:15 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: remove -\u003echanged and related code.\n\nWe set -\u003echanged to 1 and call check_disk_change at the end\nof md_open so that bd_invalidated would be set and thus\npartition rescan would happen appropriately.\n\nNow that we call revalidate_disk directly, which sets bd_invalidates,\nthat indirection is no longer needed and can be removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "490773268cf64f68da2470e07b52c7944da6312d",
      "tree": "d394aafa7203c316db6b63f128b8894e18993fca",
      "parents": [
        "2b7f22284d71975e37a82db154386348eec0e52c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:20:56 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: move io accounting out of personalities into md_make_request\n\nWhile I generally prefer letting personalities do as much as possible,\ngiven that we have a central md_make_request anyway we may as well use\nit to simplify code.\nAlso this centralises knowledge of -\u003egendisk which will help later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b7f22284d71975e37a82db154386348eec0e52c",
      "tree": "761ac50d75348c43e38745f10b824efa5c3388cd",
      "parents": [
        "a78d38a1a16c8e009aa512caa71d483757fefc1c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:06:03 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:50 2010 +1000"
      },
      "message": "md/raid5: small tidyup in raid5_align_endio\n\nDiving through -\u003equeue to find mddev is unnecessarily complex - there\nis an easier path to finding mddev, so use that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a78d38a1a16c8e009aa512caa71d483757fefc1c",
      "tree": "028ba0f1d0d6a18b2710ece1f24639f9ff72e3d2",
      "parents": [
        "5cac7861b2de95a1f714ebdc652813abd0afcc73"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 22 16:53:49 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:49 2010 +1000"
      },
      "message": "md: add support for raid5 to raid4 conversion\n\nThis is unlikely to be wanted, but we may as well provide it\nfor completeness.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "54071b3808ee3dc8624d9d6f1b06c4fd5308fa3b",
      "tree": "b254ce6625ce3dd472faac0d59edeb9589b30f2b",
      "parents": [
        "84707f38e767ac470fd82af6c45a8cafe2bd1b9a"
      ],
      "author": {
        "name": "Trela Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:47 2010 +1000"
      },
      "message": "md:Add support for Raid0-\u003eRaid5 takeover\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b92813c3c0b6990f14838e3985fb385d2655d0c",
      "tree": "c072a6684185f2c18734e704c488953250e8353a",
      "parents": [
        "696fcd535b5a8cfc0617e9cf1d9d69a13895cc1e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Mar 08 16:02:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:46 2010 +1000"
      },
      "message": "drivers/md: Remove unnecessary casts of void *\n\nvoid pointers do not need to be cast to other pointer types.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a64c876fd357906a1f7193723866562ad290654c",
      "tree": "077fcdab730d40227585025bf15bf8e027949a29",
      "parents": [
        "b6eb127d274385d81ce8dd45c98190f097bce1b4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 14 17:15:37 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:45:40 2010 +1000"
      },
      "message": "md: manage redundancy group in sysfs when changing level.\n\nSome levels expect the \u0027redundancy group\u0027 to be present,\nothers don\u0027t.\nSo when we change level of an array we might need to\nadd or remove this group.\n\nThis requires fixing up the current practice of overloading -\u003eprivate\nto indicate (when -\u003epers \u003d\u003d NULL) that something needs to be removed.\nSo create a new -\u003eto_remove to fill that role.\n\nWhen changing levels, we may need to add or remove attributes.  When\nchanging RAID5 -\u003e RAID6, we both add and remove the same thing.  It is\nimportant to catch this and optimise it out as the removal is delayed\nuntil a lock is released, so trying to add immediately would cause\nproblems.\n\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "87aa63000c484bfb9909989316f615240dfee018",
      "tree": "ebadeba1c1c03b28e8c2c9036542bd6b75bb9837",
      "parents": [
        "722154e4cacf015161efe60009ae9be23d492296"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 21:10:35 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "6e3b96ed610e5a1838e62ddae9fa0c3463f235fa",
      "tree": "c0c3f0d3e5f16c04d417160e5bca1d4abf562651",
      "parents": [
        "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "message": "md/raid5: fix previous patch.\n\nPrevious patch changes stripe and chunk_number to sector_t but\nmistakenly did not update all of the divisions to use sector_dev().\n\nThis patch changes all the those divisions (actually the \u0027%\u0027 operator)\nto sector_div.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\nTested-by: Stefan Lippers-Hollmann \u003cs.l-h@gmx.de\u003e\n"
    },
    {
      "commit": "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d",
      "tree": "2b4cdbe2824a936f136fa0eb0dbd2db84927b057",
      "parents": [
        "85341c61361cc45a9cc0e11c01e8f4479ef460ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "message": "md/raid5: allow for more than 2^31 chunks.\n\nWith many large drives and small chunk sizes it is possible\nto create a RAID5 with more than 2^31 chunks.  Make sure this\nworks.\n\nReported-by: Brett King \u003cking.br@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "0a135ba14d71fb84c691a5386aff5049691fe6d7",
      "tree": "adb1de887dd6839d69d2fc16ffa2a10ff63298fa",
      "parents": [
        "4850f524b2c4c8a4e9f8ef4dd9c7c4afde2f2b2c",
        "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: add __percpu sparse annotations to what\u0027s left\n  percpu: add __percpu sparse annotations to fs\n  percpu: add __percpu sparse annotations to core kernel subsystems\n  local_t: Remove leftover local.h\n  this_cpu: Remove pageset_notifier\n  this_cpu: Page allocator conversion\n  percpu, x86: Generic inc / dec percpu instructions\n  local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c\n  module: Use this_cpu_xx to dynamically allocate counters\n  local_t: Remove cpu_local_xx macros\n  percpu: refactor the code in pcpu_[de]populate_chunk()\n  percpu: remove compile warnings caused by __verify_pcpu_ptr()\n  percpu: make accessors check for percpu pointer in sparse\n  percpu: add __percpu for sparse.\n  percpu: make access macros universal\n  percpu: remove per_cpu__ prefix.\n"
    },
    {
      "commit": "8a78362c4eefc1deddbefe2c7f38aabbc2429d6b",
      "tree": "c095d95af1aec0f9cee5975b1dcdc6bc1d17d401",
      "parents": [
        "086fa5ff0854c676ec333760f4c0154b3b242616"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:39 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Consolidate phys_segment and hw_segment limits\n\nExcept for SCSI no device drivers distinguish between physical and\nhardware segment limits.  Consolidate the two into a single segment\nlimit.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18",
      "tree": "5a714679aeebd5f7af5d1fc521f0db8639324f6c",
      "parents": [
        "003cb608a2533d0927a83bc4e07e46d7a622eda9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 14:39:15 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 17 11:17:38 2010 +0900"
      },
      "message": "percpu: add __percpu sparse annotations to what\u0027s left\n\nAdd __percpu sparse annotations to places which didn\u0027t make it in one\nof the previous patches.  All converions are trivial.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Borislav Petkov \u003cborislav.petkov@amd.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef286f6fa673cd7fb367e1b145069d8dbfcc6081",
      "tree": "957760503c1b1a417850db3204d6c010d1ce1a67",
      "parents": [
        "9eb07c259207d048e3ee8be2a77b2a4680b1edd4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 10 11:26:09 2010 +1100"
      },
      "message": "md: fix some lockdep issues between md and sysfs.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nThis fix is related to\n    http://bugzilla.kernel.org/show_bug.cgi?id\u003d15142\nbut does not address that exact issue.\n\u003d\u003d\u003d\u003d\u003d\u003d\n\nsysfs does like attributes being removed while they are being accessed\n(i.e. read or written) and waits for the access to complete.\n\nAs accessing some md attributes takes the same lock that is held while\nremoving those attributes a deadlock can occur.\n\nThis patch addresses 3 issues in md that could lead to this deadlock.\n\nTwo relate to calling flush_scheduled_work while the lock is held.\nThis is probably a bad idea in general and as we use schedule_work to\ndelete various sysfs objects it is particularly bad.\n\nIn one case flush_scheduled_work is called from md_alloc (called by\nmd_probe) called from do_md_run which holds the lock.  This call is\nonly present to ensure that -\u003egendisk is set.  However we can be sure\nthat gendisk is always set (though possibly we couldn\u0027t when that code\nwas originally written.  This is because do_md_run is called in three\ndifferent contexts:\n  1/ from md_ioctl.  This requires that md_open has succeeded, and it\n     fails if -\u003egendisk is not set.\n  2/ from writing a sysfs attribute.  This can only happen if the\n     mddev has been registered in sysfs which happens in md_alloc\n     after -\u003egendisk has been set.\n  3/ from autorun_array which is only called by autorun_devices, which\n     checks for -\u003egendisk to be set before calling autorun_array.\nSo the call to md_probe in do_md_run can be removed, and the check on\n-\u003egendisk can also go.\n\n\nIn the other case flush_scheduled_work is being called in do_md_stop,\npurportedly to wait for all md_delayed_delete calls (which delete the\ncomponent rdevs) to complete.  However there really isn\u0027t any need to\nwait for them - they have already been disconnected in all important\nways.\n\nThe third issue is that raid5-\u003estop() removes some attribute names\nwhile the lock is held.  There is already some infrastructure in place\nto delay attribute removal until after the lock is released (using\nschedule_work).  So extend that infrastructure to remove the\nraid5_attrs_group.\n\nThis does not address all lockdep issues related to the sysfs\n\"s_active\" lock.  The rest can be address by splitting that lockdep\ncontext between symlinks and non-symlinks which hopefully will happen.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9eb07c259207d048e3ee8be2a77b2a4680b1edd4",
      "tree": "aad711b891fd43920c832da2158aab0764c7fe49",
      "parents": [
        "6339204ecc2aa2067a99595522de0403f0854bb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 12:31:47 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:29 2010 +1100"
      },
      "message": "md: fix \u0027degraded\u0027 calculation when starting a reshape.\n\nThis code was written long ago when it was not possible to\nreshape a degraded array.  Now it is so the current level of\ndegraded-ness needs to be taken in to account.  Also newly addded\ndevices should only reduce degradedness if they are deemed to be\nin-sync.\n\nIn particular, if you convert a RAID5 to a RAID6, and increase the\nnumber of devices at the same time, then the 5-\u003e6 conversion will\nmake the array degraded so the current code will produce a wrong\nvalue for \u0027degraded\u0027 - \"-1\" to be precise.\n\nIf the reshape runs to completion end_reshape will calculate a correct\nnew value for \u0027degraded\u0027, but if a device fails during the reshape an\nincorrect decision might be made based on the incorrect value of\n\"degraded\".\n\nThis patch is suitable for 2.6.32-stable and if they are still open,\n2.6.31-stable and 2.6.30-stable as well.\n\nCc: stable@kernel.org\nReported-by: Michael Evans \u003cmjevans1983@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0efb9e6191e1d3d34c1db90b829b742bc36d532e",
      "tree": "5960d97df87a7eeea56d7dbe801259fc43398d5e",
      "parents": [
        "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: add MODULE_DESCRIPTION for all md related modules.\n\nSuggested by  Oren Held \u003corenhe@il.ibm.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "729a18663a30a9c8076e3adc2b3e4c866974f935",
      "tree": "14f8e15ffa09d6a583fccdbe2ddf84c7cb8c2246",
      "parents": [
        "a2826aa92e2e14db372eda01d333267258944033"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:50 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:40 2009 +1100"
      },
      "message": "md/raid5: don\u0027t complete make_request on barrier until writes are scheduled\n\nThe post-barrier-flush is sent by md as soon as make_request on the\nbarrier write completes.  For raid5, the data might not be in the\nper-device queues yet.  So for barrier requests, wait for any\npre-reading to be done so that the request will be in the per-device\nqueues.\n\nWe use the \u0027preread_active\u0027 count to check that nothing is still in\nthe preread phase, and delay the decrement of this count until after\nwrite requests have been submitted to the underlying devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2826aa92e2e14db372eda01d333267258944033",
      "tree": "9cdd3329205bf480a4782705a3db1738e3faae44",
      "parents": [
        "efa593390e70b0e3c39f6b2dca8876b6b1461e41"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "message": "md: support barrier requests on all personalities.\n\nPreviously barriers were only supported on RAID1.  This is because\nother levels requires synchronisation across all devices and so needed\na different approach.\nHere is that approach.\n\nWhen a barrier arrives, we send a zero-length barrier to every active\ndevice.  When that completes - and if the original request was not\nempty -  we submit the barrier request itself (with the barrier flag\ncleared) and then submit a fresh load of zero length barriers.\n\nThe barrier request itself is asynchronous, but any subsequent\nrequest will block until the barrier completes.\n\nThe reason for clearing the barrier flag is that a barrier request is\nallowed to fail.  If we pass a non-empty barrier through a striping\nraid level it is conceivable that part of it could succeed and part\ncould fail.  That would be way too hard to deal with.\nSo if the first run of zero length barriers succeed, we assume all is\nsufficiently well that we send the request and ignore errors in the\nsecond run of barriers.\n\nRAID5 needs extra care as write requests may not have been submitted\nto the underlying devices yet.  So we flush the stripe cache before\nproceeding with the barrier.\n\nNote that the second set of zero-length barriers are submitted\nimmediately after the original request is submitted.  Thus when\na personality finds mddev-\u003ebarrier to be set during make_request,\nit should not return from make_request until the corresponding\nper-device request(s) have been queued.\n\nThat will be done in later patches.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "8553fe7ec731e4f997245e14319572cb15118018",
      "tree": "14cf104937c6260f00420e32e237eb0714db9389",
      "parents": [
        "aa5cbd103887011b4830355f88fb055f9ad2d556"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "message": "md/raid5: remove some sparse warnings.\n\nqd_idx is previously declared and given exactly the same value!\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c148ffdcda00b6599b70f8b65e6a1fadd1dbb127",
      "tree": "3d50cc9dbef926f62a588dc1f45f1df304e1bf31",
      "parents": [
        "7ef90146a14c2bb1de2e22399f147ebec5b74f0b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:47:00 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:47:00 2009 +1100"
      },
      "message": "md/raid5: Allow dirty-degraded arrays to be assembled when only party is degraded.\n\nNormally is it not safe to allow a raid5 that is both dirty and\ndegraded to be assembled without explicit request from that admin, as\nit can cause hidden data corruption.\nThis is because \u0027dirty\u0027 means that the parity cannot be trusted, and\n\u0027degraded\u0027 means that the parity needs to be used.\n\nHowever, if the device that is missing contains only parity, then\nthere is no issue and assembly can continue.\nThis particularly applies when a RAID5 is being converted to a RAID6\nand there is an unclean shutdown while the conversion is happening.\n\nSo check for whether the degraded space only contains parity, and\nin that case, allow the assembly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ef90146a14c2bb1de2e22399f147ebec5b74f0b",
      "tree": "ab0e97fb85814f174ed5ec0645057bb65dd4bb1d",
      "parents": [
        "0261cd9f1cb42fa44ece314d27868d83742bdf03"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:51 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:51 2009 +1100"
      },
      "message": "Don\u0027t unconditionally set in_sync on newly added device in raid5_reshape\n\nWhen a reshape finds that it can add spare devices into the array,\nthose devices might already be \u0027in_sync\u0027 if they are beyond the old\nsize of the array, or they might not if they are within the array.\n\nThe first case happens when we change an N-drive RAID5 to an\nN+1-drive RAID5.\nThe second happens when we convert an N-drive RAID5 to an\nN+1-drive RAID6.\n\nSo set the flag more carefully.\nAlso, -\u003erecovery_offset is only meaningful when the flag is clear,\nso only set it in that case.\n\nThis change needs the preceding two to ensure that the non-in_sync\ndevice doesn\u0027t get evicted from the array when it is stopped, in the\ncase where v0.90 metadata is used.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8dee7211467a56b7eb4e4359efb0aa4a72e1b6f3",
      "tree": "4ddcb170bd131adcc022477ef96716fba5c1ab07",
      "parents": [
        "24395a85d8efe6eee477ea35c73d045a8dd7a3a1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:29 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:29 2009 +1100"
      },
      "message": "md/raid5: make sure curr_sync_completes is uptodate when reshape starts\n\nThis value is visible through sysfs and is used by mdadm\nwhen it manages a reshape (backing up data that is about to be\nrearranged).  So it is important that it is always correct.\nCurrent it does not get updated properly when a reshape\nstarts which can cause problems when assembling an array\nthat is in the middle of being reshaped.\n\nThis is suitable for 2.6.31.y stable kernels.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6629542e79255e0dbef8ec82eaf644e1b2546c3c",
      "tree": "10878adc7a42868b2ded58acbe5bb4135347b607",
      "parents": [
        "b2141e6951ad56c8f65e70547baeabd5698e390a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Oct 19 18:09:32 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Oct 19 18:09:41 2009 -0700"
      },
      "message": "md/raid6: kill a gcc-4.0.1 \u0027uninitialized variable\u0027 warning\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "5dd33c9a4c29015f6d87568d33521c98931a387e",
      "tree": "a79ac38e1957580743b708410b54694f2b1cbf77",
      "parents": [
        "5e5e3e78ed9038b8f7112835d07084eefb9daa47"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:40:25 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:40:25 2009 +1100"
      },
      "message": "md/async: don\u0027t pass a memory pointer as a page pointer.\n\nmd/raid6 passes a list of \u0027struct page *\u0027 to the async_tx routines,\nwhich then either DMA map them for offload, or take the page_address\nfor CPU based calculations.\n\nFor RAID6 we sometime leave \u0027blanks\u0027 in the list of pages.\nFor CPU based calcs, we want to treat theses as a page of zeros.\nFor offloaded calculations, we simply don\u0027t pass a page to the\nhardware.\n\nCurrently the \u0027blanks\u0027 are encoded as a pointer to\nraid6_empty_zero_page.  This is a 4096 byte memory region, not a\n\u0027struct page\u0027.  This is mostly handled correctly but is rather ugly.\n\nSo change the code to pass and expect a NULL pointer for the blanks.\nWhen taking page_address of a page, we need to check for a NULL and\nin that case use raid6_empty_zero_page.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e5e3e78ed9038b8f7112835d07084eefb9daa47",
      "tree": "afcefac7c0dbafb71f09d90812eecb2c6e4bc766",
      "parents": [
        "e4424fee1815f996dccd36be44d68ca160ec3e1b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "message": "md: Fix handling of raid5 array which is being reshaped to fewer devices.\n\nWhen a raid5 (or raid6) array is being reshaped to have fewer devices,\nconf-\u003eraid_disks is the latter and hence smaller number of devices.\nHowever sometimes we want to use a number which is the total number of\ncurrently required devices - the larger of the \u0027old\u0027 and \u0027new\u0027 sizes.\nBefore we implemented reducing the number of devices, this was always\n\u0027new\u0027 i.e. -\u003eraid_disks.\nNow we need max(raid_disks, previous_raid_disks) in those places.\n\nThis particularly affects assembling an array that was shutdown while\nin the middle of a reshape to fewer devices.\n\nmd.c needs a similar fix when interpreting the md metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4424fee1815f996dccd36be44d68ca160ec3e1b",
      "tree": "13e67731367d28451fdb1dcfbf4e085ce236f9b9",
      "parents": [
        "417b8d4ac868cf58d6c68f52d72f7648413e0edc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:27:34 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:27:34 2009 +1100"
      },
      "message": "md: fix problems with RAID6 calculations for DDF.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "417b8d4ac868cf58d6c68f52d72f7648413e0edc",
      "tree": "6eefb8b381fdad5235d2b29fc0054bcf537efbcc",
      "parents": [
        "dce3a7a42d585b74ce68081010b42afe81c8f4c4"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Oct 16 16:25:22 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:25:22 2009 +1100"
      },
      "message": "md/raid456: downlevel multicore operations to raid_run_ops\n\nThe percpu conversion allowed a straightforward handoff of stripe\nprocessing to the async subsytem that initially showed some modest gains\n(+4%).  However, this model is too simplistic and leads to stripes\nbouncing between raid5d and the async thread pool for every invocation\nof handle_stripe().  As reported by Holger this can fall into a\npathological situation severely impacting throughput (6x performance\nloss).\n\nBy downleveling the parallelism to raid_run_ops the pathological\nstripe_head bouncing is eliminated.  This version still exhibits an\naverage 11% throughput loss for:\n\n\tmdadm --create /dev/md0 /dev/sd[b-q] -n 16 -l 6\n\techo 1024 \u003e /sys/block/md0/md/stripe_cache_size\n\tdd if\u003d/dev/zero of\u003d/dev/md0 bs\u003d1024k count\u003d2048\n\n...but the results are at least stable and can be used as a base for\nfurther multicore experimentation.\n\nReported-by: Holger Kiehl \u003cHolger.Kiehl@dwd.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f5efd45ae597c96ed017afad5662b67d55b402a0",
      "tree": "32ef979c6882d594890e02466003f5255af00fe3",
      "parents": [
        "1d9d52416c0445019ccc1f0fddb9a227456eb61b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Oct 16 15:55:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:38 2009 +1100"
      },
      "message": "md/raid5: initialize conf-\u003edevice_lock earlier\n\nDeallocating a raid5_conf_t structure requires taking \u0027device_lock\u0027.\nEnsure it is initialized before it is used, i.e. initialize the lock\nbefore attempting any further initializations that might fail.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1442577bf6da1a31ae6555212202be9a2cec5642",
      "tree": "58843618e1fe59ac6c07dd5651dbb3f4a6355106",
      "parents": [
        "7ca263cdf8cf74d0f1c6f48d07d556de92e3bec9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:25 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:25 2009 +1100"
      },
      "message": "Revert \"md: do not progress the resync process if the stripe was blocked\"\n\nThis reverts commit df10cfbc4d7ab93260d997df754219d390d62a9d.\n\nThis patch was based on a misunderstanding and risks introducing a busy-wait loop.\nSo revert it.\n\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "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"
    }
  ],
  "next": "099f53cb50e45ef617a9f1d63ceec799e489418b"
}
