)]}'
{
  "log": [
    {
      "commit": "475901aff15841fb0a81e7546517407779a9b061",
      "tree": "22a641d5ff0f86db53cba49f6f701b16e9148507",
      "parents": [
        "4c0ca26bd260dddf3b9781758cb5e2df3f74d4a3"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Feb 21 13:28:10 2013 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 26 11:55:30 2013 +1100"
      },
      "message": "MD RAID10: Improve redundancy for \u0027far\u0027 and \u0027offset\u0027 algorithms (part 1)\n\nThe MD RAID10 \u0027far\u0027 and \u0027offset\u0027 algorithms make copies of entire stripe\nwidths - copying them to a different location on the same devices after\nshifting the stripe.  An example layout of each follows below:\n\n\t        \"far\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t G    H    I    J    K    L\n\t            ...\n\t F    A    B    C    D    E  --\u003e Copy of stripe0, but shifted by 1\n\t L    G    H    I    J    K\n\t            ...\n\n\t\t\"offset\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t F    A    B    C    D    E  --\u003e Copy of stripe0, but shifted by 1\n\t G    H    I    J    K    L\n\t L    G    H    I    J    K\n\t            ...\n\nRedundancy for these algorithms is gained by shifting the copied stripes\none device to the right.  This patch proposes that array be divided into\nsets of adjacent devices and when the stripe copies are shifted, they wrap\non set boundaries rather than the array size boundary.  That is, for the\npurposes of shifting, the copies are confined to their sets within the\narray.  The sets are \u0027near_copies * far_copies\u0027 in size.\n\nThe above \"far\" algorithm example would change to:\n\t        \"far\" algorithm\n\tdev1 dev2 dev3 dev4 dev5 dev6\n\t\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\n\t A    B    C    D    E    F\n\t G    H    I    J    K    L\n\t            ...\n\t B    A    D    C    F    E  --\u003e Copy of stripe0, shifted 1, 2-dev sets\n\t H    G    J    I    L    K      Dev sets are 1-2, 3-4, 5-6\n\t            ...\n\nThis has the affect of improving the redundancy of the array.  We can\nalways sustain at least one failure, but sometimes more than one can\nbe handled.  In the first examples, the pairs of devices that CANNOT fail\ntogether are:\n\t(1,2) (2,3) (3,4) (4,5) (5,6) (1, 6) [40% of possible pairs]\nIn the example where the copies are confined to sets, the pairs of\ndevices that cannot fail together are:\n\t(1,2) (3,4) (5,6)                    [20% of possible pairs]\n\nWe cannot simply replace the old algorithms, so the 17th bit of the \u0027layout\u0027\nvariable is used to indicate whether we use the old or new method of computing\nthe shift.  (This is similar to the way the 16th bit indicates whether the\n\"far\" algorithm or the \"offset\" algorithm is being used.)\n\nThis patch only handles the cases where the number of total raid disks is\na multiple of \u0027far_copies\u0027.  A follow-on patch addresses the condition where\nthis is not true.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e0ee778528bbaad28a5c69d2e219269a3a096607",
      "tree": "85e2824b053d7ade3ee64a98c0c5a535a9af013f",
      "parents": [
        "667a5313ecd7308d79629c0738b0db588b0b0a4e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 18 09:51:42 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 18 09:51:42 2012 +1000"
      },
      "message": "md/raid10: fix problem with on-stack allocation of r10bio structure.\n\nA \u0027struct r10bio\u0027 has an array of per-copy information at the end.\nThis array is declared with size [0] and r10bio_pool_alloc allocates\nenough extra space to store the per-copy information depending on the\nnumber of copies needed.\n\nSo declaring a \u0027struct r10bio on the stack isn\u0027t going to work.  It\nwon\u0027t allocate enough space, and memory corruption will ensue.\n\nSo in the two places where this is done, declare a sufficiently large\nstructure and use that instead.\n\nThe two call-sites of this bug were introduced in 3.4 and 3.5\nso this is suitable for both those kernels.  The patch will have to\nbe modified for 3.4 as it only has one bug.\n\nCc: stable@vger.kernel.org\nReported-by: Ivan Vasilyev \u003civan.vasilyev@gmail.com\u003e\nTested-by: Ivan Vasilyev \u003civan.vasilyev@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cc4d1efdd017083bbcbaf23feb4cdc717fa7dab8",
      "tree": "a6a7775a4715ab009c00ec4ef7655eafc307b694",
      "parents": [
        "473e87ce485ffcac041f7911b33f0b4cd4d6cf2b"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 10:03:53 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:03:53 2012 +1000"
      },
      "message": "MD RAID10: Export md_raid10_congested\n\nmd/raid10: Export is_congested test.\n\nIn similar fashion to commits\n\t11d8a6e3719519fbc0e2c9d61b6fa931b84bf813\n\t1ed7242e591af7e233234d483f12d33818b189d9\nwe export the RAID10 congestion checking function so that dm-raid.c can\nmake use of it and make use of the personality.  The \u0027queue\u0027 and \u0027gendisk\u0027\nstructures will not be available to the MD code when device-mapper sets\nup the device, so we conditionalize access to these fields also.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "473e87ce485ffcac041f7911b33f0b4cd4d6cf2b",
      "tree": "01ae284e058d1805055bf153dd9175f1782181e8",
      "parents": [
        "0eaf822cb3dfcf2a64b2d27f4f6219186adb2695"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "message": "MD: Move macros from raid1*.h to raid1*.c\n\nMD RAID1/RAID10: Move some macros from .h file to .c file\n\nThere are three macros (IO_BLOCKED,IO_MADE_GOOD,BIO_SPECIAL) which are defined\nin both raid1.h and raid10.h.  They are only used in there respective .c files.\nHowever, if we wish to make RAID10 accessible to the device-mapper RAID\ntarget (dm-raid.c), then we need to move these macros into the .c files where\nthey are used so that they do not conflict with each other.\n\nThe macros from the two files are identical and could be moved into md.h, but\nI chose to leave the duplication and have them remain in the personality\nfiles.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dc280d987f039ef35ac1e59c09b7154b61f385cf",
      "tree": "470cf571b46bff86454106f1f549028c8415fcd8",
      "parents": [
        "3bbae04b126fbd4c191b4167ea46ba9c4da46425"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 31 10:03:52 2012 +1000"
      },
      "message": "MD RAID10: rename mirror_info structure\n\nMD RAID10: Rename the structure \u0027mirror_info\u0027 to \u0027raid10_info\u0027\n\nThe same structure name (\u0027mirror_info\u0027) is used by raid1.  Each of these\nstructures are defined in there respective header files.  If dm-raid is\nto support both RAID1 and RAID10, the header files will be included and\nthe structure names must not collide.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3ea7daa5d7fde47cd41f4d56c2deb949114da9d6",
      "tree": "8b88c2f7451219cd32f32753100ffc62cbda9c60",
      "parents": [
        "deb200d08590622d987718135a1e6323f83154aa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:53:47 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 22 13:53:47 2012 +1000"
      },
      "message": "md/raid10: add reshape support\n\nA \u0027near\u0027 or \u0027offset\u0027 lay RAID10 array can be reshaped to a different\n\u0027near\u0027 or \u0027offset\u0027 layout, a different chunk size, and a different\nnumber of devices.\nHowever the number of copies cannot change.\n\nUnlike RAID5/6, we do not support having user-space backup data that\nis being relocated during a \u0027critical section\u0027.  Rather, the\ndata_offset of each device must change so that when writing any block\nto a new location, it will not over-write any data that is still\n\u0027live\u0027.\n\nThis means that RAID10 reshape is not supportable on v0.90 metadata.\n\nThe different between the old data_offset and the new_offset must be\nat least the larger of the chunksize multiplied by offset copies of\neach of the old and new layout. (for \u0027near\u0027 mode, offset_copies \u003d\u003d 1).\n\nA larger difference of around 64M seems useful for in-place reshapes\nas more data can be moved between metadata updates.\nVery large differences (e.g. 512M) seem to slow the process down due\nto lots of long seeks (on oldish consumer graded devices at least).\n\nMetadata needs to be updated whenever the place we are about to write\nto is considered - by the current metadata - to still contain data in\nthe old layout.\n\n[unbalanced locking fix from Dan Carpenter \u003cdan.carpenter@oracle.com\u003e]\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f8c9e74ff0832f2244d7991d2aea13851b20a622",
      "tree": "db07ef3ecc00f83d3d9b854929a4cb13def456a7",
      "parents": [
        "c804cdecea418c067ee7359d62139b2b3c8cec39"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:33 2012 +1000"
      },
      "message": "md/raid10: Introduce \u0027prev\u0027 geometry to support reshape.\n\nWhen RAID10 supports reshape it will need a \u0027previous\u0027 and a \u0027current\u0027\ngeometry, so introduce that here.\nUse the \u0027prev\u0027 geometry when before the reshape_position, and the\ncurrent \u0027geo\u0027 when beyond it.  At other times, use both as\nappropriate.\n\nFor now, both are identical (And reshape_position is never set).\n\nWhen we use the \u0027prev\u0027 geometry, we must use the old data_offset.\nWhen we use the current (And a reshape is happening) we must use\nthe new_data_offset.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5cf00fcd3c98d2eafb58ac7a649bbdb9dbc4902b",
      "tree": "0a96aa84d276e5e627603c7ad4740e1d607ebbad",
      "parents": [
        "b5254dd5fdd9abcacadb5101beb35df9ae8cc564"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:20 2012 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 21 09:28:20 2012 +1000"
      },
      "message": "md/raid10: collect some geometry fields into a dedicated structure.\n\nWe will shortly be adding reshape support for RAID10 which will\nrequire it having 2 concurrent geometries (before and after).\nTo make that easier, collect most geometry fields into \u0027struct geom\u0027\nand access them from there.  Then we will more easily be able to add\na second set of fields.\n\nNote that \u0027copies\u0027 is not in this struct and so cannot be changed.\nThere is little need to change this number and doing so is a lot\nmore difficult as it requires reallocating more things.\nSo leave it out for now.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "69335ef3bc5b766f34db2d688be1d35313138bca",
      "tree": "dcd87ffc4c97540d374a20de7380368e3679ac3b",
      "parents": [
        "3a6de2924af602f9c1b5a5154438c37f2d712dfa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Dec 23 10:17:54 2011 +1100"
      },
      "message": "md/raid10: prepare data structures for handling replacement.\n\nAllow each slot in the RAID10 to have 2 devices, the want_replacement\nand the replacement.\n\nAlso an r10bio to have 2 bios, and for resync/recovery allocate the\nsecond bio if there are any replacement devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34db0cd60f8a1f4ab73d118a8be3797c20388223",
      "tree": "45d1d629d6b9195d47d30980595686c9a3ee92f9",
      "parents": [
        "84fc4b56db85cb9e05326424049973a2036c9940"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "message": "md: add proper write-congestion reporting to RAID1 and RAID10.\n\nRAID1 and RAID10 handle write requests by queuing them for handling by\na separate thread.  This is because when a write-intent-bitmap is\nactive we might need to update the bitmap first, so it is good to\nqueue a lot of writes, then do one big bitmap update for them all.\n\nHowever writeback request devices to appear to be congested after a\nwhile so it can make some guesstimate of throughput.  The infinite\nqueue defeats that (note that RAID5 has already has a finite queue so\nit doesn\u0027t suffer from this problem).\n\nSo impose a limit on the number of pending write requests.  By default\nit is 1024 which seems to be generally suitable.  Make it configurable\nvia module option just in case someone finds a regression.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e879a8793f915aa7933364d962d2435bd71de462",
      "tree": "bf62ccd52171bdaebd1d09b98f049950e39dd198",
      "parents": [
        "e373ab109172abc2d821bd3b5c1b400acddef5a5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "message": "md/raid10: typedef removal: conf_t -\u003e struct r10conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f6d02d580ca77ee4be085c29c5fe5b879df24d9",
      "tree": "6ac3a0f3fba6cc6f8d66e9c413460ab5a740db8e",
      "parents": [
        "9f2c9d12bcc53fcb3b787023723754e84d1aef8b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "message": "md: remove typedefs: mirror_info_t -\u003e struct mirror_info\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9f2c9d12bcc53fcb3b787023723754e84d1aef8b",
      "tree": "85fbc63c6e480bdebe06529e1af4d3d483d70452",
      "parents": [
        "2b8bf3451d1e3133ebc3998721d14013a6c27114"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "message": "md: remove typedefs: r10bio_t -\u003e struct r10bio and r1bio_t -\u003e struct r1bio\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b8bf3451d1e3133ebc3998721d14013a6c27114",
      "tree": "6ad9afb9124d5eb865d513ec3f30259231075a8f",
      "parents": [
        "fd01b88c75a718020ff77e7f560d33835e9b58de"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "message": "md: remove typedefs: mdk_thread_t -\u003e struct md_thread\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd01b88c75a718020ff77e7f560d33835e9b58de",
      "tree": "c455d5adefd58f3263dcf265bb8ba2024523b106",
      "parents": [
        "3cb03002000f133f9f97269edefd73611eafc873"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "message": "md: remove typedefs: mddev_t -\u003e struct mddev\n\nHaving mddev_t and \u0027struct mddev_s\u0027 is ugly and not preferred\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3cb03002000f133f9f97269edefd73611eafc873",
      "tree": "77fdb146666298b33aaeef0c05f082b6f82840fe",
      "parents": [
        "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "message": "md: removing typedefs:  mdk_rdev_t -\u003e struct md_rdev\n\nThe typedefs are just annoying. \u0027mdk\u0027 probably refers to \u0027md_k.h\u0027\nwhich used to be an include file that defined this thing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bd870a16c5946d86126f7203db3c73b71de0a1d8",
      "tree": "3492f61a441266c796b8a08ec30c06f7f6f27fbc",
      "parents": [
        "749c55e942d91cb27045fe2eb313aa5afe68ae0b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10:  Handle write errors by updating badblock log.\n\nWhen we get a write error (in the data area, not in metadata),\nupdate the badblock log rather than failing the whole device.\n\nAs the write may well be many blocks, we trying writing each\nblock individually and only log the ones which fail.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "749c55e942d91cb27045fe2eb313aa5afe68ae0b",
      "tree": "ddf80a1eb3ef9005bc209c1c4946916b89c22a33",
      "parents": [
        "d4432c23be957ff061f7b23fd60e8506cb472a55"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:24 2011 +1000"
      },
      "message": "md/raid10: clear bad-block record when write succeeds.\n\nIf we succeed in writing to a block that was recorded as\nbeing bad, we clear the bad-block record.\n\nThis requires some delayed handling as the bad-block-list update has\nto happen in process-context.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "856e08e23762dfb92ffc68fd0a8d228f9e152160",
      "tree": "fa9977a39da542eebb2129712703c11009a56ff2",
      "parents": [
        "560f8e5532d63a314271bfb99d3d1d53c938ed14"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 28 11:39:23 2011 +1000"
      },
      "message": "md/raid10: avoid reading from known bad blocks - part 1\n\nThis patch just covers the basic read path:\n 1/ read_balance needs to check for badblocks, and return not only\n    the chosen slot, but also how many good blocks are available\n    there.\n 2/ read submission must be ready to issue multiple reads to\n    different devices as different bad blocks on different devices\n    could mean that a single large read cannot be served by any one\n    device, but can still be served by the array.\n    This requires keeping count of the number of outstanding requests\n    per bio.  This count is stored in \u0027bi_phys_segments\u0027\n\nOn read error we currently just fail the request if another target\ncannot handle the whole request.  Next patch refines that a bit.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2bb77736ae5dca0a189829fbb7379d43364a9dac",
      "tree": "a15efb6810aaf67af679bd05edb5419ac9f19583",
      "parents": [
        "5389042ffa36976caa45a79af16081d759001fa7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 27 11:00:36 2011 +1000"
      },
      "message": "md/raid10: Make use of new recovery_disabled handling\n\nWhen we get a read error during recovery, RAID10 previously\narranged for the recovering device to appear to fail so that\nthe recovery stops and doesn\u0027t restart.  This is misleading and wrong.\n\nInstead, make use of the new recovery_disabled handling and mark\nthe target device and having recovery disabled.\n\nAdd appropriate checks in add_disk and remove_disk so that devices\nare removed and not re-added when recovery is disabled.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "25985edcedea6396277003854657b5f3cb31a628",
      "tree": "f026e810210a2ee7290caeb737c23cb6472b7c38",
      "parents": [
        "6aba74f2791287ec407e0f92487a725a25908067"
      ],
      "author": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Wed Mar 30 22:57:33 2011 -0300"
      },
      "committer": {
        "name": "Lucas De Marchi",
        "email": "lucas.demarchi@profusion.mobi",
        "time": "Thu Mar 31 11:26:23 2011 -0300"
      },
      "message": "Fix common misspellings\n\nFixes generated by \u0027codespell\u0027 and manually reviewed.\n\nSigned-off-by: Lucas De Marchi \u003clucas.demarchi@profusion.mobi\u003e\n"
    },
    {
      "commit": "e93f68a1fc6244c05ad8fae28e75835ec74ab34e",
      "tree": "d282978aac8f6fcec512be2a6e61287bbb6241b1",
      "parents": [
        "0544a21db02c1d8883158fd6f323364f830a120a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 15 09:36:03 2010 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:33:24 2010 +1000"
      },
      "message": "md: fix handling of array level takeover that re-arranges devices.\n\nMost array level changes leave the list of devices largely unchanged,\npossibly causing one at the end to become redundant.\nHowever conversions between RAID0 and RAID10 need to renumber\nall devices (except 0).\n\nThis renumbering is currently being done in the -\u003erun method when the\nnew personality takes over.  However this is too late as the common\ncode in md.c might already have invalidated some of the devices if\nthey had a -\u003eraid_disk number that appeared to high.\n\nMoving it into the -\u003etakeover method is too early as the array is\nstill active at that time and wrong -\u003eraid_disk numbers could cause\nconfusion.\n\nSo add a -\u003enew_raid_disk field to mdk_rdev_s and use it to communicate\nthe new raid_disk number.\nNow the common code knows exactly which devices need to be renumbered,\nand which can be invalidated, and can do it all at a convenient time\nwhen the array is suspend.\nIt can also update some symlinks in sysfs which previously were not be\nupdated correctly.\n\nReported-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dab8b29248b3f14f456651a2a6ee9b8fd16d1b3c",
      "tree": "ced1c7cd74f2e0efc5a48819aa4711047960e2d5",
      "parents": [
        "9af204cf720cedf369cf823bbd806c350201f7ea"
      ],
      "author": {
        "name": "Trela, Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:45 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:48 2010 +1000"
      },
      "message": "md: Add support for Raid0-\u003eRaid10 takeover\n\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\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": "bff61975b3d6c18ee31457cc5b4d73042f44915f",
      "tree": "3aff48088b35172e74f56ae54f0b53e76a0c2150",
      "parents": [
        "92022950c6b1bb3da90b2976b20271cdfd98b8a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move lots of #include lines out of .h files and into .c\n\nThis makes the includes more explicit, and is preparation for moving\nmd_k.h to drivers/md/md.h\n\nRemove include/raid/md.h as its only remaining use was to #include\nother files.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef740c372dfd80e706dbf955d4e4aedda6c0c148",
      "tree": "8d9ef9db346ee1ba319a125c9de83cdde049510d",
      "parents": [
        "2a40a8aed083d988df6822bb9b1b08fb7ce21e1d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:03 2009 +1100"
      },
      "message": "md: move headers out of include/linux/raid/\n\nMove the headers with the local structures for the disciplines and\nbitmap.h into drivers/md/ so that they are more easily grepable for\nhacking and not far away.  md.h is left where it is for now as there\nare some uses from the outside.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "76186dd8b73d2b7b9b4c8629b89c845e97009801",
      "tree": "1f1c2fe5530de65fa149faa3e6b2969044e7b0a8",
      "parents": [
        "02c2de8cc835885bdff51a8bfd6c0b659b969f50"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:48 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:17 2006 -0700"
      },
      "message": "[PATCH] md: remove \u0027working_disks\u0027 from raid10 state\n\nIt isn\u0027t needed as mddev-\u003edegraded contains equivalent info.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c93983bf517c100a31e40ef087e19bd3d7aa2d28",
      "tree": "9361c68d5f00ccd34cbc0a3bc7bc2389ce7f4c3a",
      "parents": [
        "7c7546ccf6463edbeee8d9aac6de7be1cd80d08a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:41 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:37 2006 -0700"
      },
      "message": "[PATCH] md: support stripe/offset mode in raid10\n\nThe \"industry standard\" DDF format allows for a stripe/offset layout where\ndata is duplicated on different stripes.  e.g.\n\n  A  B  C  D\n  D  A  B  C\n  E  F  G  H\n  H  E  F  G\n\n(columns are drives, rows are stripes, LETTERS are chunks of data).\n\nThis is similar to raid10\u0027s \u0027far\u0027 mode, but not quite the same.  So enhance\n\u0027far\u0027 mode with a \u0027far/offset\u0027 option which follows the layout of DDFs\nstripe/offset.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0eb3ff12aa8a12538ef681dc83f4361636a0699f",
      "tree": "e5d4b8353362cefd096a4b1ee1a8f473c01169b6",
      "parents": [
        "4443ae10ca15d07922ceda622f03db8865fa3d13"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:29 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:05 2006 -0800"
      },
      "message": "[PATCH] md: raid10 read-error handling - resync and read-only\n\nAdd in correct read-error handling for resync and read-only situations.\n\nWhen read-only, we don\u0027t over-write, so we need to mark the failed drive in\nthe r10_bio so we don\u0027t re-try it.  During resync, we always read all blocks,\nso if there is a read error, we simply over-write it with the good block that\nwe found (assuming we found one).\n\nNote that the recovery case still isn\u0027t handled in an interesting way.  There\nis nothing useful to do for the 2-copies case.  If there are 3 or more copies,\nthen we could try reading from one of the non-missing copies, but this is a\nbit complicated and very rarely would be used, so I\u0027m leaving it for now.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4443ae10ca15d07922ceda622f03db8865fa3d13",
      "tree": "f1f0a6a82142effbdde93913d53596aeeacc9dc4",
      "parents": [
        "220946c9018de74b952446e3a4dff1bfd4cbf310"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:28 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:05 2006 -0800"
      },
      "message": "[PATCH] md: auto-correct correctable read errors in raid10\n\nLargely just a cross-port from raid1.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6cce3b23f6f8e974c00af7a9b88f1d413ba368a8",
      "tree": "8c156f26a10de82b1626d74f810704cfd6f5ba2b",
      "parents": [
        "b15c2e57f0f5bf596a19e9c5571e5b07cdfc7363"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:16 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:03 2006 -0800"
      },
      "message": "[PATCH] md: write intent bitmap support for raid10\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0a27ec96b6fb1abf867e36d7b0b681d67588767a",
      "tree": "4db5d9b8ef02b417fc2077d65311e2ea7cda5ce0",
      "parents": [
        "17999be4aa408e7ff3b9d32c735649676567a3cd"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:02 2006 -0800"
      },
      "message": "[PATCH] md: improve raid10 \"IO Barrier\" concept\n\nraid10 needs to put up a barrier to new requests while it does resync or other\nbackground recovery.  The code for this is currently open-coded, slighty\nobscure by its use of two waitqueues, and not documented.\n\nThis patch gathers all the related code into 4 functions, and includes a\ncomment which (hopefully) explains what is happening.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
