)]}'
{
  "log": [
    {
      "commit": "63fe08177f92ce21929df8af6361491b98ad12cd",
      "tree": "7d6f5aa9251f3120e0911483463e14e1137ed81c",
      "parents": [
        "b0cbc861a3c05e634520b049b5cc27ad6febb51f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue Apr 14 12:01:53 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 14 12:01:53 2009 +1000"
      },
      "message": "md: tiny md.h cleanups\n\n- update inclusion guard and make sure it covers the whole file\n - remove superflous #ifdef CONFIG_BLOCK\n - make sure all required headers are included so that new users aren\u0027t\n   required to include others before\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cea9c22800773cecb1d41f4a6139f9eb6a95368b",
      "tree": "d070d22390b86768fefb8ba04c64d74993ed28e9",
      "parents": [
        "7ec0547838976d088dfb9cb0adb073e6e8a15aa3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:15:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 15:15:05 2009 +1100"
      },
      "message": "md: add explicit method to signal the end of a reshape.\n\nCurrently raid5 (the only module that supports restriping)\nnotices that the reshape has finished be sync_request being\ngiven a large value, and handles any cleanup them.\n\nThis patch changes it so md_check_recovery calls into an\nexplicit finish_reshape method as well.\n\nThe clean-up from sync_request can do things that need to be\ndone promptly, typically things local to the raid5_conf_t\nstructure.\n\nThe \"finish_reshape\" method is called under the mddev_lock\nso it can do things involving reconfiguring the device.\n\nThis allows us to get rid of md_set_array_sectors_locked, which\nwould have caused a deadlock if you tried to stop and array\nwhile a reshape was happening.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b522adcde9c4d3fb7b579cfa9160d8bde7744be8",
      "tree": "4208e3dcec3ebdfa6ad9bc153f76129400532717",
      "parents": [
        "1f403624bde3c678a166984b1e6a727a0ce06f2b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:00:31 2009 +1100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 15:00:31 2009 +1100"
      },
      "message": "md: \u0027array_size\u0027 sysfs attribute\n\nAllow userspace to set the size of the array according to the following\nsemantics:\n\n1/ size must be \u003c\u003d to the size returned by mddev-\u003epers-\u003esize(mddev, 0, 0)\n   a) If size is set before the array is running, do_md_run will fail\n      if size is greater than the default size\n   b) A reshape attempt that reduces the default size to less than the set\n      array size should be blocked\n2/ once userspace sets the size the kernel will not change it\n3/ writing \u0027default\u0027 to this attribute returns control of the size to the\n   kernel and reverts to the size reported by the personality\n\nAlso, convert locations that need to know the default size from directly\nreading -\u003earray_sectors to \u003cpers\u003e_size.  Resync/reshape operations\nalways follow the default size.\n\nFinally, fixup other locations that read a number of 1k-blocks from\nuserspace to use strict_blocks_to_sectors() which checks for unsigned\nlong long to sector_t overflow and blocks to sectors overflow.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "1f403624bde3c678a166984b1e6a727a0ce06f2b",
      "tree": "b66ed37091e825bcde1cd0d333d4ebba86772805",
      "parents": [
        "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:59:03 2009 +1100"
      },
      "message": "md: centralize -\u003earray_sectors modifications\n\nGet personalities out of the business of directly modifying\n-\u003earray_sectors.  Lays groundwork to introduce policy on when\n-\u003earray_sectors can be modified.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "80c3a6ce4ba4470379b9e6a4d9bcd9d2ee26ae03",
      "tree": "de88622f05a7e681ac7bff7714e8f2d8953b66ac",
      "parents": [
        "93ed05e2a56b5ee06c0100a169433b11c4aa5d0b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 17 18:10:40 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Mar 31 14:57:49 2009 +1100"
      },
      "message": "md: add \u0027size\u0027 as a personality method\n\nIn preparation for giving userspace control over -\u003earray_sectors we need\nto be able to retrieve the \u0027default\u0027 size, and the \u0027anticipated\u0027 size\nwhen a reshape is requested.  For personalities that do not reshape emit\na warning if anything but the default size is requested.\n\nIn the raid5 case we need to update -\u003eprevious_raid_disks to make the\nnew \u0027default\u0027 size available.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "245f46c2c221ef09c7db892f0e3fc2149be42052",
      "tree": "be7e6f4b7b65b682c43e59ef17f7ed580bc8a82b",
      "parents": [
        "409c57f3801701dfee27a28103dda4831306cb20"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: add -\u003etakeover method to support changing the personality managing an array\n\nImplement this for RAID6 to be able to \u0027takeover\u0027 a RAID5 array.  The\nnew RAID6 will use a layout which places Q on the last device, and\nthat device will be missing.\nIf there are any available spares, one will immediately have Q\nrecovered onto it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "409c57f3801701dfee27a28103dda4831306cb20",
      "tree": "430c8e4ebe879b27250e061dc1a1171b12aaadf0",
      "parents": [
        "e0cf8f045b2023b0b3f919ee93eb94345f648434"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:39:39 2009 +1100"
      },
      "message": "md: enable suspend/resume of md devices.\n\nTo be able to change the \u0027level\u0027 of an md/raid array, we need to\nsuspend the device so that no requests are active - then move some\npointers around etc.\n\nThe code already keeps counts of active requests and the -\u003equiesce\nfunction can be used to wait until those counts hit zero.\nHowever the quiesce function blocks new requests once they are all\nready \u0027inside\u0027 the personality module, and that is too late if we want\nto replace the personality modules.\n\nSo make all md requests come in through a common md_make_request\nfunction that keeps track of how many requests have entered the\nmodules but may not yet be on the internal reference counts.\nAllow md_make_request to be blocked when we want to suspend the\ndevice, and make it possible to wait for all those in-transit requests\nto be added to internal lists so that -\u003equiesce can wait for them.\n\nThere is still a problem that when a request completes, we drop the\nref count inside the personality code so there is a short time between\nwhen the refcount hits zero, and when the personality code is no\nlonger being used.\nThe personality code never blocks (schedule or spinlock) between\ndropping the refcount and exiting the routine, so this should be safe\n(as put_module calls synchronize_sched() before unmapping the module\ncode).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dd8ac336c13fd8afdb082ebacb1cddd5cf727889",
      "tree": "0baa8111d7406774525a1053be461135257d73d2",
      "parents": [
        "58c0fed400603a802968b23ddf78f029c5a84e41"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: Represent raid device size in sectors.\n\nThis patch renames the \"size\" field of struct mdk_rdev_s to\n\"sectors\" and changes this field to store sectors instead of\nblocks.\n\nAll users of this field, linear.c, raid0.c and md.c, are fixed up\naccordingly which gets rid of many multiplications and divisions.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "58c0fed400603a802968b23ddf78f029c5a84e41",
      "tree": "474fcb9775bb07f39ebb7802fb9b51d69222dcbb",
      "parents": [
        "575a80fa4f623141e9791e41879d87800fb6d862"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: Make mddev-\u003esize sector-based.\n\nThis patch renames the \"size\" field of struct mddev_s to \"dev_sectors\"\nand stores the number of 512-byte sectors instead of the number of\n1K-blocks in it.\n\nAll users of that field, including raid levels 1,4-6,10, are adjusted\naccordingly. This simplifies the code a bit because it allows to get\nrid of a couple of divisions/multiplications by two.\n\nIn order to make checkpatch happy, some minor coding style issues\nhave also been addressed. In particular, size_store() now uses\nstrict_strtoull() instead of simple_strtoull().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "97e4f42d62badb0f9fbc27c013e89bc1336a03bc",
      "tree": "04cc809702a6b080c417c4ddf605642bbf7de521",
      "parents": [
        "43b2e5d86d8bdd77386226db0bc961529492c043"
      ],
      "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: occasionally checkpoint drive recovery to reduce duplicate effort after a crash\n\nVersion 1.x metadata has the ability to record the status of a\npartially completed drive recovery.\nHowever we only update that record on a clean shutdown.\nIt would be nice to update it on unclean shutdowns too, particularly\nwhen using a bitmap that removes much to the \u0027sync\u0027 effort after an\nunclean shutdown.\n\nOne complication with checkpointing recovery is that we only know\nwhere we are up to in terms of IO requests started, not which ones\nhave completed.  And we need to know what has completed to record\nhow much is recovered.  So occasionally pause the recovery until all\nsubmitted requests are completed, then update the record of where\nwe are up to.\n\nWhen we have a bitmap, we already do that pause occasionally to keep\nthe bitmap up-to-date.  So enhance that code to record the recovery\noffset and schedule a superblock update.\nAnd when there is no bitmap, just pause 16 times during the resync to\ndo a checkpoint.\n\u002716\u0027 is a fairly arbitrary number.  But we don\u0027t really have any good\nway to judge how often is acceptable, and it seems like a reasonable\nnumber for now.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43b2e5d86d8bdd77386226db0bc961529492c043",
      "tree": "601a885b1410324678cf319eee77cc54a02f2cf3",
      "parents": [
        "bff61975b3d6c18ee31457cc5b4d73042f44915f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move md_k.h from include/linux/raid/ to drivers/md/\n\nIt really is nicer to keep related code together..\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bff61975b3d6c18ee31457cc5b4d73042f44915f",
      "tree": "3aff48088b35172e74f56ae54f0b53e76a0c2150",
      "parents": [
        "92022950c6b1bb3da90b2976b20271cdfd98b8a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:33:13 2009 +1100"
      },
      "message": "md: move lots of #include lines out of .h files and into .c\n\nThis makes the includes more explicit, and is preparation for moving\nmd_k.h to drivers/md/md.h\n\nRemove include/raid/md.h as its only remaining use was to #include\nother files.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "92022950c6b1bb3da90b2976b20271cdfd98b8a3",
      "tree": "5405257242ddcadef6e90ea597289558de4e03f2",
      "parents": [
        "8b2b5c217c20b5460218ab8731295f2e46c7dd29"
      ],
      "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 most content from md.h to md_k.h\n\nThe extern function definitions are kernel-internal definitions, so\nthey belong in md_k.h\n\nThe MD_*_VERSION values could reasonably go in a number of places,\nbut md_u.h seems most reasonable.\n\nThis leaves almost nothing in md.h.  It will go soon.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8b2b5c217c20b5460218ab8731295f2e46c7dd29",
      "tree": "f5da8b06b3d2a53e80c31e0c0aa386e381b3a841",
      "parents": [
        "ef740c372dfd80e706dbf955d4e4aedda6c0c148"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.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 LEVEL_* definition from md_k.h to md_u.h\n\n.. as they are part of the user-space interface.\nAlso move MdpMinorShift into there so we can remove duplication.\n\nLastly move mdp_major in.  It is less obviously part of the user-space\ninterface, but do_mounts_md.c uses it, and it is acting a bit like\nuser-space.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "eea1bf384e05b5ab747f8530c4fba9e9e6907fff",
      "tree": "ed4c05f8bd7e5805092e9c6a2c257ca71dc0fe2d",
      "parents": [
        "99adcd9d67aaf04e28f5ae96df280f236bde4b66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 31 14:27:02 2009 +1100"
      },
      "message": "md: Fix is_mddev_idle test (again).\n\nThere are two problems with is_mddev_idle.\n\n1/ sync_io is \u0027atomic_t\u0027 and hence \u0027int\u0027.  curr_events and all the\n   rest are \u0027long\u0027.\n   So if sync_io were to wrap on a 64bit host, the value of\n   curr_events would go very negative suddenly, and take a very\n   long time to return to positive.\n\n   So do all calculations as \u0027int\u0027.  That gives us plenty of precision\n   for what we need.\n\n2/ To initialise rdev-\u003elast_events we simply call is_mddev_idle, on\n   the assumption that it will make sure that last_events is in a\n   suitable range.  It used to do this, but now it does not.\n   So now we need to be more explicit about initialisation.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4044ba58dd15cb01797c4fd034f39ef4a75f7cc3",
      "tree": "e1bea8143538fc3eaeeb8578c2f9231e32809a25",
      "parents": [
        "efeb53c0e57213e843b7ef3cc6ebcdea7d6186ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:11 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:11 2009 +1100"
      },
      "message": "md: don\u0027t retry recovery of raid1 that fails due to error on source drive.\n\nIf a raid1 has only one working drive and it has a sector which\ngives an error on read, then an attempt to recover onto a spare will\nfail, but as the single remaining drive is not removed from the\narray, the recovery will be immediately re-attempted, resulting\nin an infinite recovery loop.\n\nSo detect this situation and don\u0027t retry recovery once an error\non the lone remaining drive is detected.\n\nAllow recovery to be retried once every time a spare is added\nin case the problem wasn\u0027t actually a media error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "efeb53c0e57213e843b7ef3cc6ebcdea7d6186ac",
      "tree": "ef580effd8809fb0bc5d6ffa6f3b8abaa9180539",
      "parents": [
        "d3374825ce57ba2214d375023979f6197ccc1385"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "message": "md: Allow md devices to be created by name.\n\nUsing sequential numbers to identify md devices is somewhat artificial.\nUsing names can be a lot more user-friendly.\n\nAlso, creating md devices by opening the device special file is a bit\nawkward.\n\nSo this patch provides a new option for creating and naming devices.\n\nWriting a name such as \"md_home\" to\n    /sys/modules/md_mod/parameters/new_array\nwill cause an array with that name to be created.  It will appear in\n/sys/block/ /proc/partitions and /proc/mdstat as \u0027md_home\u0027.\nIt will have an arbitrary minor number allocated.\n\nmd devices that a created by an open are destroyed on the last\nclose when the device is inactive.\nFor named md devices, they will not be destroyed until the array\nis explicitly stopped, either with the STOP_ARRAY ioctl or by\nwriting \u0027clear\u0027 to /sys/block/md_XXXX/md/array_state.\n\nThe name of the array must start \u0027md_\u0027 to avoid conflict with\nother devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d3374825ce57ba2214d375023979f6197ccc1385",
      "tree": "441ea927a7c702e4eadeafbac8be97d664bfb83b",
      "parents": [
        "a21d15042d8cd736caf82c2bac564f3f93f3d017"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:10 2009 +1100"
      },
      "message": "md: make devices disappear when they are no longer needed.\n\nCurrently md devices, once created, never disappear until the module\nis unloaded.  This is essentially because the gendisk holds a\nreference to the mddev, and the mddev holds a reference to the\ngendisk, this a circular reference.\n\nIf we drop the reference from mddev to gendisk, then we need to ensure\nthat the mddev is destroyed when the gendisk is destroyed.  However it\nis not possible to hook into the gendisk destruction process to enable\nthis.\n\nSo we drop the reference from the gendisk to the mddev and destroy the\ngendisk when the mddev gets destroyed.  However this has a\ncomplication.\nBetween the call\n   __blkdev_get-\u003eget_gendisk-\u003ekobj_lookup-\u003emd_probe\nand the call\n   __blkdev_get-\u003emd_open\n\nthere is no obvious way to hold a reference on the mddev any more, so\nunless something is done, it will disappear and gendisk will be\ndestroyed prematurely.\n\nAlso, once we decide to destroy the mddev, there will be an unlockable\nmoment before the gendisk is unlinked (blk_unregister_region) during\nwhich a new reference to the gendisk can be created.  We need to\nensure that this reference can not be used.  i.e. the -\u003eopen must\nfail.\n\nSo:\n 1/  in md_probe we set a flag in the mddev (hold_active) which\n     indicates that the array should be treated as active, even\n     though there are no references, and no appearance of activity.\n     This is cleared by md_release when the device is closed if it\n     is no longer needed.\n     This ensures that the gendisk will survive between md_probe and\n     md_open.\n\n 2/  In md_open we check if the mddev we expect to open matches\n     the gendisk that we did open.\n     If there is a mismatch we return -ERESTARTSYS and modify\n     __blkdev_get to retry from the top in that case.\n     In the -ERESTARTSYS sys case we make sure to wait until\n     the old gendisk (that we succeeded in opening) is really gone so\n     we loop at most once.\n\nSome udev configurations will always open an md device when it first\nappears.   If we allow an md device that was just created by an open\nto disappear on an immediate close, then this can race with such udev\nconfigurations and result in an infinite loop the device being opened\nand closed, then re-open due to the \u0027ADD\u0027 even from the first open,\nand then close and so on.\nSo we make sure an md device, once created by an open, remains active\nat least until some md \u0027ioctl\u0027 has been made on it.  This means that\nall normal usage of md devices will allow them to disappear promptly\nwhen not needed, but the worst that an incorrect usage will do it\ncause an inactive md device to be left in existence (it can easily be\nremoved).\n\nAs an array can be stopped by writing to a sysfs attribute\n  echo clear \u003e /sys/block/mdXXX/md/array_state\nwe need to use scheduled work for deleting the gendisk and other\nkobjects.  This allows us to wait for any pending gendisk deletion to\ncomplete by simply calling flush_scheduled_work().\n\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "159ec1fc060ab22b157a62364045f5e98749c4d3",
      "tree": "1de0edfd782245b271d2898e36ae76c00e1e1b6d",
      "parents": [
        "ccacc7d2cf03114a24ab903f710118e9e5d43273"
      ],
      "author": {
        "name": "Cheng Renquan",
        "email": "crquan@gmail.com",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:08 2009 +1100"
      },
      "message": "md: use list_for_each_entry macro directly\n\nThe rdev_for_each macro defined in \u003clinux/raid/md_k.h\u003e is identical to\nlist_for_each_entry_safe, from \u003clinux/list.h\u003e, it should be defined to\nuse list_for_each_entry_safe, instead of reinventing the wheel.\n\nBut some calls to each_entry_safe don\u0027t really need a safe version,\njust a direct list_for_each_entry is enough, this could save a temp\nvariable (tmp) in every function that used rdev_for_each.\n\nIn this patch, most rdev_for_each loops are replaced by list_for_each_entry,\ntotally save many tmp vars; and only in the other situations that will call\nlist_del to delete an entry, the safe version is used.\n\nSigned-off-by: Cheng Renquan \u003ccrquan@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0c3573f19d135d718264e38c46597295bd6154b7",
      "tree": "0943035f89d163d9d7b354445303fb03e5ea7fb1",
      "parents": [
        "538452700d95480c16e7aa6b10ff77cd937d33f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 09 08:31:05 2009 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/sync_action.\n\nThere is no compelling need for this, but sysfs_notify_dirent is a\nnicer interface and the change is good for consistency.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3c0ee63a64a20351ed6c16ec797e1f8c850741ea",
      "tree": "482b825a00356a2b7b605065ce1d6ebe87591eb5",
      "parents": [
        "b62b75905d571c29262a6c38cf9e5f089c203871"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:28 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:28 2008 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/dev-xxx/state\n\nThe \u0027state\u0027 file for a device reports, for example, when the device\nhas failed.  Changes should be reported to userspace ASAP without\nthe possibility of blocking on low-memory.  sysfs_notify does\nhave that possibility (as it takes a mutex which can be held\nacross a kmalloc) so use sysfs_notify_dirent instead.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b62b75905d571c29262a6c38cf9e5f089c203871",
      "tree": "0ca9a74c1d53aad0532aaebebb031b9d8edc5d90",
      "parents": [
        "0cfd81031a26717fe14380d18275f8e217571615"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:21 2008 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 21 13:25:21 2008 +1100"
      },
      "message": "md: use sysfs_notify_dirent to notify changes to md/array_state\n\nNow that we have sysfs_notify_dirent, use it to notify changes\nto md/array_state.\nAs sysfs_notify_dirent can be called in atomic context, we can\nremove the delayed notify and the MD_NOTIFY_ARRAY_STATE flag.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d8e64406a037a64444175730294e449c9e21f5ec",
      "tree": "5ac7525899ebc1d2fd9a83a6e19cd0b1b1b1711d",
      "parents": [
        "2339788376e2d69a9154130e4dacd5b21ce63094"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 13:09:48 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 13:09:48 2008 -0700"
      },
      "message": "md: delay notification of \u0027active_idle\u0027 to the recovery thread\n\nsysfs_notify might sleep, so do not call it from md_safemode_timeout.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "4b80991c6cb9efa607bc4fd6f3ecdf5511c31bb0",
      "tree": "5e2ba7d509af245c29bdf04b00960cc367972c44",
      "parents": [
        "f2ea68cf42aafdd93393b6b8b20fc3c2b5f4390c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: Protect access to mddev-\u003edisks list using RCU\n\nAll modifications and most access to the mddev-\u003edisks list are made\nunder the reconfig_mutex lock.  However there are three places where\nthe list is walked without any locking.  If a reconfig happens at this\ntime, havoc (and oops) can ensue.\n\nSo use RCU to protect these accesses:\n  - wrap them in rcu_read_{,un}lock()\n  - use list_for_each_entry_rcu\n  - add to the list with list_add_rcu\n  - delete from the list with list_del_rcu\n  - delay the \u0027free\u0027 with call_rcu rather than schedule_work\n\nNote that export_rdev did a list_del_init on this list.  In almost all\ncases the entry was not in the list anymore so it was a no-op and so\nsafe.  It is no longer safe as after list_del_rcu we may not touch\nthe list_head.\nAn audit shows that export_rdev is called:\n  - after unbind_rdev_from_array, in which case the delete has\n     already been done,\n  - after bind_rdev_to_array fails, in which case the delete isn\u0027t needed.\n  - before the device has been put on a list at all (e.g. in\n      add_new_disk where reading the superblock fails).\n  - and in autorun devices after a failure when the device is on a\n      different list.\n\nSo remove the list_del_init call from export_rdev, and add it back\nimmediately before the called to export_rdev for that last case.\n\nNote also that -\u003esame_set is sometimes used for lists other than\nmddev-\u003elist (e.g. candidates).  In these cases rcu is not needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f2ea68cf42aafdd93393b6b8b20fc3c2b5f4390c",
      "tree": "00b025b91898ff32dba742b5075dd290fec4dc91",
      "parents": [
        "d6e2215052810678bc9782fd980b52706fc71f50"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: only count actual openers as access which prevent a \u0027stop\u0027\n\nOpen isn\u0027t the only thing that increments -\u003eactive.  e.g. reading\n/proc/mdstat will increment it briefly.  So to avoid false positives\nin testing for concurrent access, introduce a new counter that counts\njust the number of times the md device it open.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f233ea5c9e0d8b95e4283bf6a3436b88f6fd3586",
      "tree": "8a36b621de46da23f3957c6e3ea4d653c2937544",
      "parents": [
        "15f4a5fdf3aa07b53f6a7969664741db5882e485"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "message": "md: Make mddev-\u003earray_size sector-based.\n\nThis patch renames the array_size field of struct mddev_s to array_sectors\nand converts all instances to use units of 512 byte sectors instead of 1k\nblocks.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f420358e3a2abc028320ace7783e2e38cae77bf",
      "tree": "99b068212ad1dd8c5e97b151d796d66f53d1f3bb",
      "parents": [
        "b73df2d3d629aefa187a0a3574fd81455e026bc8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Turn rdev-\u003esb_offset into a sector-based quantity.\n\nRename it to sb_start to make sure all users have been converted.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "526647320e696f434647f38421a6ecf65b859c43",
      "tree": "aa6bf13e6aa766051ba32a8b64157f4adf9fcd3e",
      "parents": [
        "a99ac97113d5bc25ddc4d17f404c2024ac6c57f9"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:44 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:44 2008 +1000"
      },
      "message": "Make sure all changes to md/dev-XX/state are notified\n\nThe important state change happens during an interrupt\nin md_error.  So just set a flag there and call sysfs_notify\nlater in process context.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "72a23c211e4587859d5bf61ac4962d76e593fb02",
      "tree": "b35b554d7eb9c4b3a2cbc4d9378d362e5e56e44f",
      "parents": [
        "0fd62b861eac7d2dea9b7e939953b20f37186ea1"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:41 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:41 2008 +1000"
      },
      "message": "Make sure all changes to md/sync_action are notified.\n\nWhen the \u0027resync\u0027 thread starts or stops, when we explicitly\nset sync_action, or when we determine that there is definitely nothing\nto do, we notify sync_action.\n\nTo stop \"sync_action\" from occasionally showing the wrong value,\nwe introduce a new flags - MD_RECOVERY_RECOVER - to say that a\nrecovery is probably needed or happening, and we make sure\nthat we set MD_RECOVERY_RUNNING before clearing MD_RECOVERY_NEEDED.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e96ee65c8bd629ce093da67a066d3946468298a",
      "tree": "e1ff9e4984d71ffaa842e7e1d19c282fa9e01bcd",
      "parents": [
        "a0da84f35b25875870270d16b6eccda4884d61a7"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:24 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:24 2008 +1000"
      },
      "message": "Allow setting start point for requested check/repair\n\nThis makes it possible to just resync a small part of an array.\ne.g. if a drive reports that it has questionable sectors,\na \u0027repair\u0027 of just the region covering those sectors will\ncause them to be read and, if there is an error, re-written\nwith correct data.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dfc7064500061677720fa26352963c772d3ebe6b",
      "tree": "a8ca495bccf98837c6762ffba54a8009c9772259",
      "parents": [
        "90b08710e41a07d4ff0fb8940dcce3a552991a56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: restart recovery cleanly after device failure.\n\nWhen we get any IO error during a recovery (rebuilding a spare), we abort\nthe recovery and restart it.\n\nFor RAID6 (and multi-drive RAID1) it may not be best to restart at the\nbeginning: when multiple failures can be tolerated, the recovery may be\nable to continue and re-doing all that has already been done doesn\u0027t make\nsense.\n\nWe already have the infrastructure to record where a recovery is up to\nand restart from there, but it is not being used properly.\nThis is because:\n  - We sometimes abort with MD_RECOVERY_ERR rather than just MD_RECOVERY_INTR,\n    which causes the recovery not be be checkpointed.\n  - We remove spares and then re-added them which loses important state\n    information.\n\nThe distinction between MD_RECOVERY_ERR and MD_RECOVERY_INTR really isn\u0027t\nneeded.  If there is an error, the relevant drive will be marked as\nFaulty, and that is enough to ensure correct handling of the error.  So we\nfirst remove MD_RECOVERY_ERR, changing some of the uses of it to\nMD_RECOVERY_INTR.\n\nThen we cause the attempt to remove a non-faulty device from an array to\nfail (unless recovery is impossible as the array is too degraded).  Then\nwhen remove_and_add_spares attempts to remove the devices on which\nrecovery can continue, it will fail, they will remain in place, and\nrecovery will continue on them as desired.\n\nIssue:  If we are halfway through rebuilding a spare and another drive\nfails, and a new spare is immediately available,  do we want to:\n 1/ complete the current rebuild, then go back and rebuild the new spare or\n 2/ restart the rebuild from the start and rebuild both devices in\n    parallel.\n\nBoth options can be argued for.  The code currently takes option 2 as\n  a/ this requires least code change\n  b/ this results in a minimally-degraded array in minimal time.\n\nCc: \"Eivind Sarto\" \u003civan@kasenna.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90b08710e41a07d4ff0fb8940dcce3a552991a56",
      "tree": "8e45d1c6d9b4020099fd36781065bf8b8fdb76e4",
      "parents": [
        "4f54b0e9485644a3c5fca2ae43bcbe7376825747"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bs@q-leap.de",
        "time": "Fri May 23 13:04:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: allow parallel resync of md-devices.\n\nIn some configurations, a raid6 resync can be limited by CPU speed\n(Calculating P and Q and moving data) rather than by device speed.  In\nthese cases there is nothing to be gained byt serialising resync of arrays\nthat share a device, and doing the resync in parallel can provide benefit.\n So add a sysfs tunable to flag an array as being allowed to resync in\nparallel with other arrays that use (a different part of) the same device.\n\nSigned-off-by: Bernd Schubert \u003cbs@q-leap.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6bfe0b499082fd3950429017cd8ebf2a6c458aa5",
      "tree": "81476cf7f7ddbea135bdb93729e0bffae0e7c163",
      "parents": [
        "11e2ede0228ee0f81ccacd15894908c3bf241f73"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: support blocking writes to an array on device failure\n\nAllows a userspace metadata handler to take action upon detecting a device\nfailure.\n\nBased on an original patch by Neil Brown.\n\nChanges:\n-added blocked_wait waitqueue to rdev\n-don\u0027t qualify Blocked with Faulty always let userspace block writes\n-added md_wait_for_blocked_rdev to wait for the block device to be clear, if\n userspace misses the notification another one is sent every 5 seconds\n-set MD_RECOVERY_NEEDED after clearing \"blocked\"\n-kill DoBlock flag, just test mddev-\u003eexternal\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d0fae18f1b53a1d39135a968792be034bdf7ff26",
      "tree": "3448dab652696848df47dcafb7772220b9e58e4f",
      "parents": [
        "a1801f858e57f87a7f79914346921cc729632295"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 04 14:29:31 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Mar 04 16:35:18 2008 -0800"
      },
      "message": "md: clean up irregularity with raid autodetect\n\nWhen a raid1 array is stopped, all components currently get added to the list\nfor auto-detection.  However we should really only add components that were\nfound by autodetection in the first place.  So add a flag to record that\ninformation, and use it.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "73c34431c7119d0bc7d3436abfad75fe47b2c51f",
      "tree": "c91210130d1115354f011e55c98db9361d4416f8",
      "parents": [
        "d089c6af10c2be5988f03667d6d22fe6085fbe5e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:19 2008 -0800"
      },
      "message": "md: change ITERATE_RDEV_GENERIC to rdev_for_each_list, and remove ITERATE_RDEV_PENDING.\n\nFinish ITERATE_ to for_each conversion.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d089c6af10c2be5988f03667d6d22fe6085fbe5e",
      "tree": "815eb0596bd7c908f30c268da6b5c5eff0e0bc21",
      "parents": [
        "29ac4aa3fc68a86279aca50f20df4d614de2e204"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:59 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:19 2008 -0800"
      },
      "message": "md: change ITERATE_RDEV to rdev_for_each\n\nAs this is more in line with common practice in the kernel.  Also swap the\nargs around to be more like list_for_each.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c5d79adba7ced41d7ac097c2ab74759d10522dd5",
      "tree": "ab5a45046244602f2a27be0b34fb26155a3c8dee",
      "parents": [
        "1ec4a9398dc05061b6258061676fede733458893"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:54 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:18 2008 -0800"
      },
      "message": "md: allow devices to be shared between md arrays\n\nCurrently, a given device is \"claimed\" by a particular array so that it cannot\nbe used by other arrays.\n\nThis is not ideal for DDF and other metadata schemes which have their own\npartitioning concept.\n\nSo for externally managed metadata, just claim the device for md in general,\nrequire that \"offset\" and \"size\" are set properly for each device, and make\nsure that if a device is included in different arrays then the active sections\ndo not overlap.\n\nThis involves adding another flag to the rdev which makes it awkward to set\n\"-\u003eflags \u003d 0\" to clear certain flags.  So now clear flags explicitly by name\nwhen we want to clear things.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c620727779f7cc8ea96efb71f0651a26349e59c1",
      "tree": "777abdad9c9ef10cb4df5c0efc736e6c64851ed8",
      "parents": [
        "c303da6d713b87b7b3f999f5acce8ecc76ff1adb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:52 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:18 2008 -0800"
      },
      "message": "md: allow a maximum extent to be set for resyncing\n\nThis allows userspace to control resync/reshape progress and synchronise it\nwith other activities, such as shared access in a SAN, or backing up critical\nsections during a tricky reshape.\n\nWriting a number of sectors (which must be a multiple of the chunk size if\nsuch is meaningful) causes a resync to pause when it gets to that point.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e691063a61f7f72a7d2882eb744b07a520cde23b",
      "tree": "4f5ceb7ed310a7d1bb076271926260723ac5ee6d",
      "parents": [
        "b47490c9bc73d0b34e4c194db40de183e592e446"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 06 01:39:51 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Feb 06 10:41:18 2008 -0800"
      },
      "message": "md: support \u0027external\u0027 metadata for md arrays\n\n- Add a state flag \u0027external\u0027 to indicate that the metadata is managed\n  externally (by user-space) so important changes need to be\n  left of user-space to handle.\n  Alternates are non-persistant (\u0027none\u0027) where there is no stable metadata -\n  after the  array is stopped there is no record of it\u0027s status - and\n  internal which can be version 0.90 or version 1.x\n  These are selected by writing to the \u0027metadata\u0027 attribute.\n\n- move the updating of superblocks (sync_sbs) to after we have checked if\n  there are any superblocks or not.\n\n- New array state \u0027write_pending\u0027.  This means that the metadata records\n  the array as \u0027clean\u0027, but a write has been requested, so the metadata has\n  to be updated to record a \u0027dirty\u0027 array before the write can continue.\n  This change is reported to md by writing \u0027active\u0027 to the array_state\n  attribute.\n\n- tidy up marking of sb_dirty:\n   - don\u0027t set sb_dirty when resync finishes as md_check_recovery\n     calls md_update_sb when the sync thread finishes anyway.\n   - Don\u0027t set sb_dirty in multipath_run as the array might not be dirty.\n   - don\u0027t mark superblock dirty when switching to \u0027clean\u0027 if there\n     is no internal superblock (if external, userspace can choose to\n     update the superblock whenever it chooses to).\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "165125e1e480f9510a5ffcfbfee4e3ee38c05f23",
      "tree": "8009c8a5ff09e26dc2418d42f66ecafb055c52a2",
      "parents": [
        "f695baf2df9e0413d3521661070103711545207a"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Tue Jul 24 09:28:11 2007 +0200"
      },
      "message": "[BLOCK] Get rid of request_queue_t typedef\n\nSome of the code has been gradually transitioned to using the proper\nstruct request_queue, but there\u0027s lots left. So do a full sweet of\nthe kernel and get rid of this typedef and replace its uses with\nthe proper type.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "713f6ab18b0e7d39f14401362bfe8015b1aedde1",
      "tree": "fc6ef865d09de1ec816ed96860ffc27dd48d837b",
      "parents": [
        "df968c4e8d809deb2602fb0e8db758f26a4006b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 17 04:06:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:15 2007 -0700"
      },
      "message": "md: improve the is_mddev_idle test fix\n\nDon\u0027t use \u0027unsigned\u0027 variable to track sync vs non-sync IO, as the only thing\nwe want to do with them is a signed comparison, and fix up the comment which\nhad become quite wrong.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "44ce6294d07555c3d313757105fd44b78208407f",
      "tree": "29659bee16a4d7111124c6f41289bc9c11669e70",
      "parents": [
        "497f050c42e46a4b1f6a9bcd8827fa5d97fe1feb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 18:51:36 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 18:51:36 2007 -0700"
      },
      "message": "Revert \"md: improve partition detection in md array\"\n\nThis reverts commit 5b479c91da90eef605f851508744bfe8269591a0.\n\nQuoth Neil Brown:\n\n  \"It causes an oops when auto-detecting raid arrays, and it doesn\u0027t\n   seem easy to fix.\n\n   The array may not be \u0027open\u0027 when do_md_run is called, so\n   bdev-\u003ebd_disk might be NULL, so bd_set_size can oops.\n\n   This whole approach of opening an md device before it has been\n   assembled just seems to get more and more painful.  I think I\u0027m going\n   to have to come up with something clever to provide both backward\n   comparability with usage expectation, and sane integration into the\n   rest of the kernel.\"\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5b479c91da90eef605f851508744bfe8269591a0",
      "tree": "d7c2844926d96d794d66b974b300eba2d047465e",
      "parents": [
        "08a02ecd28bad35a47357e611044dcbeab06e3d7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 09 02:35:39 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed May 09 12:30:57 2007 -0700"
      },
      "message": "md: improve partition detection in md array\n\nmd currently uses -\u003emedia_changed to make sure rescan_partitions\nis call on md array after they are assembled.\n\nHowever that doesn\u0027t happen until the array is opened, which is later\nthan some people would like.\n\nSo use blkdev_ioctl to do the rescan immediately that the\narray has been assembled.\n\nThis means we can remove all the -\u003echange infrastructure as it was only used\nto trigger a partition rescan.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "5792a2856a63cdc568e08a7d6f9b2413d9217b3e",
      "tree": "042a09fbfdf75dac5efa3bf61c7d6c6dd4c6ba7f",
      "parents": [
        "456a09dce9ca9b0013cabcda918aee851a04471d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 04 19:08:18 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Apr 04 21:12:47 2007 -0700"
      },
      "message": "[PATCH] md: avoid a deadlock when removing a device from an md array via sysfs\n\nA device can be removed from an md array via e.g.\n  echo remove \u003e /sys/block/md3/md/dev-sde/state\n\nThis will try to remove the \u0027dev-sde\u0027 subtree which will deadlock\nsince\n  commit e7b0d26a86943370c04d6833c6edba2a72a6e240\n\nWith this patch we run the kobject_del via schedule_work so as to\navoid the deadlock.\n\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e8703fe1f5cdcff686f7eb0a46487b5a04a9324a",
      "tree": "3b52bfa6ee57d59e059fd0e8d8504dbd3ee073b4",
      "parents": [
        "d33a56d3639eba077489c937943a32ef6237b1b8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:59 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:18 2006 -0700"
      },
      "message": "[PATCH] md: remove MAX_MD_DEVS which is an arbitrary limit\n\nOnce upon a time we needed to fixed limit to the number of md devices,\nprobably because we preallocated some array.  This need no longer exists, but\nwe still have an arbitrary limit.\n\nSo remove MAX_MD_DEVS and allow as many devices as we can fit into the \u0027minor\u0027\npart of a device number.\n\nAlso remove some useless noise at init time (which reports MAX_MD_DEVS) and\nremove MD_THREAD_NAME_MAX which hasn\u0027t been used for a while.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "850b2b420cd5b363ed4cf48a8816d656c8b5251b",
      "tree": "b63aa37b3fb7dfb7a0b674d5a2ebe9da13cc7405",
      "parents": [
        "6814d5368d68341ec6b5e4ecd10ea5947130775a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 03 01:15:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:17 2006 -0700"
      },
      "message": "[PATCH] md: replace magic numbers in sb_dirty with well defined bit flags\n\nInstead of magic numbers (0,1,2,3) in sb_dirty, we have\nsome flags instead:\nMD_CHANGE_DEVS\n   Some device state has changed requiring superblock update\n   on all devices.\nMD_CHANGE_CLEAN\n   The array has transitions from \u0027clean\u0027 to \u0027dirty\u0027 or back,\n   requiring a superblock update on active devices, but possibly\n   not on spares\nMD_CHANGE_PENDING\n   A superblock update is underway.\n\nWe wait for an update to complete by waiting for all flags to be clear.  A\nflag can be set at any time, even during an update, without risk that the\nchange will be lost.\n\nStop exporting md_update_sb - isn\u0027t needed.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "9361401eb7619c033e2394e4f9f6d410d6719ac7",
      "tree": "04b94a71f2366988c17740d1c16cfbdec41d5d2e",
      "parents": [
        "d366e40a1cabd453be6e2609caa7e12f9ca17b1f"
      ],
      "author": {
        "name": "David Howells",
        "email": "dhowells@redhat.com",
        "time": "Sat Sep 30 20:45:40 2006 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@nelson.home.kernel.dk",
        "time": "Sat Sep 30 20:52:31 2006 +0200"
      },
      "message": "[PATCH] BLOCK: Make it possible to disable the block layer [try #6]\n\nMake it possible to disable the block layer.  Not all embedded devices require\nit, some can make do with just JFFS2, NFS, ramfs, etc - none of which require\nthe block layer to be present.\n\nThis patch does the following:\n\n (*) Introduces CONFIG_BLOCK to disable the block layer, buffering and blockdev\n     support.\n\n (*) Adds dependencies on CONFIG_BLOCK to any configuration item that controls\n     an item that uses the block layer.  This includes:\n\n     (*) Block I/O tracing.\n\n     (*) Disk partition code.\n\n     (*) All filesystems that are block based, eg: Ext3, ReiserFS, ISOFS.\n\n     (*) The SCSI layer.  As far as I can tell, even SCSI chardevs use the\n     \t block layer to do scheduling.  Some drivers that use SCSI facilities -\n     \t such as USB storage - end up disabled indirectly from this.\n\n     (*) Various block-based device drivers, such as IDE and the old CDROM\n     \t drivers.\n\n     (*) MTD blockdev handling and FTL.\n\n     (*) JFFS - which uses set_bdev_super(), something it could avoid doing by\n     \t taking a leaf out of JFFS2\u0027s book.\n\n (*) Makes most of the contents of linux/blkdev.h, linux/buffer_head.h and\n     linux/elevator.h contingent on CONFIG_BLOCK being set.  sector_div() is,\n     however, still used in places, and so is still available.\n\n (*) Also made contingent are the contents of linux/mpage.h, linux/genhd.h and\n     parts of linux/fs.h.\n\n (*) Makes a number of files in fs/ contingent on CONFIG_BLOCK.\n\n (*) Makes mm/bounce.c (bounce buffering) contingent on CONFIG_BLOCK.\n\n (*) set_page_dirty() doesn\u0027t call __set_page_dirty_buffers() if CONFIG_BLOCK\n     is not enabled.\n\n (*) fs/no-block.c is created to hold out-of-line stubs and things that are\n     required when CONFIG_BLOCK is not set:\n\n     (*) Default blockdev file operations (to give error ENODEV on opening).\n\n (*) Makes some /proc changes:\n\n     (*) /proc/devices does not list any blockdevs.\n\n     (*) /proc/diskstats and /proc/partitions are contingent on CONFIG_BLOCK.\n\n (*) Makes some compat ioctl handling contingent on CONFIG_BLOCK.\n\n (*) If CONFIG_BLOCK is not defined, makes sys_quotactl() return -ENODEV if\n     given command other than Q_SYNC or if a special device is specified.\n\n (*) In init/do_mounts.c, no reference is made to the blockdev routines if\n     CONFIG_BLOCK is not defined.  This does not prohibit NFS roots or JFFS2.\n\n (*) The bdflush, ioprio_set and ioprio_get syscalls can now be absent (return\n     error ENOSYS by way of cond_syscall if so).\n\n (*) The seclvl_bd_claim() and seclvl_bd_release() security calls do nothing if\n     CONFIG_BLOCK is not set, since they can\u0027t then happen.\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "ff4e8d9a9f46e3a7f89d14ade52fe5d53a82c022",
      "tree": "e15fc4d8af0045a3947e3a25844773c6ee50289a",
      "parents": [
        "0b8c9de05c2a860fe6b02fedcb48763bcee648b3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 10 04:44:16 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:16 2006 -0700"
      },
      "message": "[PATCH] md: fix resync speed calculation for restarted resyncs\n\nWe introduced \u0027io_sectors\u0027 recently so we could count the sectors that causes\nio during resync separate from sectors which didn\u0027t cause IO - there can be a\ndifference if a bitmap is being used to accelerate resync.\n\nHowever when a speed is reported, we find the number of sectors processed\nrecently by subtracting an oldish io_sectors count from a current\n\u0027curr_resync\u0027 count.  This is wrong because curr_resync counts all sectors,\nnot just io sectors.\n\nSo, add a field to mddev to store the curren io_sectors separately from\ncurr_resync, and use that in the calculations.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "42543769142d2375f2b5f8fc9cac999f84bd4c4c",
      "tree": "404606c37da872639111c5b641f07fff2ded1dff",
      "parents": [
        "07d84d109d8beedd68df9da2e4e9f25c8217e7fb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:57 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:39 2006 -0700"
      },
      "message": "[PATCH] md: Don\u0027t write dirty/clean update to spares - leave them alone\n\n- record the \u0027event\u0027 count on each individual device (they\n  might sometimes be slightly different now)\n- add a new value for \u0027sb_dirty\u0027: \u00273\u0027 means that the super\n  block only needs to be updated to record a clean\u003c-\u003edirty\n  transition.\n- Prefer odd event numbers for dirty states and even numbers\n  for clean states\n- Using all the above, don\u0027t update the superblock on\n  a spare device if the update is just doing a clean-dirty\n  transition.  To accomodate this, a transition from\n  dirty back to clean might now decrement the events counter\n  if nothing else has changed.\n\nThe net effect of this is that spare drives will not see any IO requests\nduring normal running of the array, so they can go to sleep if that is what\nthey want to do.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5fd6c1dce06ec24ef3de20fe0c7ecf2ba9fe5ef9",
      "tree": "bd7cc8c22615e8622d3d63b7fc68dcc3ac1964de",
      "parents": [
        "a8a55c387da28d67d98f56e4f5021462cb61f7a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:40 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:37 2006 -0700"
      },
      "message": "[PATCH] md: allow checkpoint of recovery with version-1 superblock\n\nFor a while we have had checkpointing of resync.  The version-1 superblock\nallows recovery to be checkpointed as well, and this patch implements that.\n\nDue to early carelessness we need to add a feature flag to signal that the\nrecovery_offset field is in use, otherwise older kernels would assume that a\npartially recovered array is in fact fully recovered.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8932c2e0dcae52e73430878fd8a7a7800176eada",
      "tree": "3b734ccaa0fb210f1fd76ff9bb6fb9700d1c4095",
      "parents": [
        "c70810b327a247d12805554d0aa4605e257effb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jun 26 00:27:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] md: remove arbitrary limit on chunk size\n\nThe largest chunk size the code can support without substantial surgery is\n2^30 bytes, so make that the limit instead of an arbitrary 4Meg.  Some day,\nthe \u0027chunksize\u0027 should change to a sector-shift instead of a byte-count.  Then\nno limit would be needed.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "df5b89b323b922f56650b4b4d7c41899b937cf19",
      "tree": "d1578782a9d763174474fe2db08f4ce4c6dc6218",
      "parents": [
        "48c9c27b8bcd2a328a06151e2d5c1170db0b701b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:20 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:03 2006 -0800"
      },
      "message": "[PATCH] md: Convert reconfig_sem to reconfig_mutex\n\n... being careful that mutex_trylock is inverted wrt down_trylock\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "e464eafdb4400c6d6576ba3840d8bd40340f8a96",
      "tree": "0c3f4003c883264ee08300c02007f06e4d1ebb91",
      "parents": [
        "16484bf59634e25d1299761e5ed8bacf22bc6368"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:02 2006 -0800"
      },
      "message": "[PATCH] md: Support suspending of IO to regions of an md array\n\nThis allows user-space to access data safely.  This is needed for raid5\nreshape as user-space needs to take a backup of the first few stripes before\nallowing reshape to commence.\n\nIt will also be useful in cluster-aware raid1 configurations so that all\ncluster members can leave a section of the array untouched while a\nresync/recovery happens.\n\nA \u0027start\u0027 and \u0027end\u0027 of the suspended range are written to 2 sysfs attributes.\nNote that only one range can be suspended at a time.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "63c70c4f3a30e77e6f445bd16eff7934a031ebd3",
      "tree": "12d2cd6cec5cd304bdf514ec8999a44c26f058ae",
      "parents": [
        "b578d55fdd80140f657130abd85aebeb345755fb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:13 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:02 2006 -0800"
      },
      "message": "[PATCH] md: Split reshape handler in check_reshape and start_reshape\n\ncheck_reshape checks validity and does things that can be done instantly -\nlike adding devices to raid1.  start_reshape initiates a restriping process to\nconvert the whole array.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f67055780caac6a99f43834795c43acf99eba6a6",
      "tree": "6b80e7b4cb300edb0910dbad1d840ff8e2f36ae5",
      "parents": [
        "292695531ae4019bb15deedc121b218d1908b648"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Checkpoint and allow restart of raid5 reshape\n\nWe allow the superblock to record an \u0027old\u0027 and a \u0027new\u0027 geometry, and a\nposition where any conversion is up to.  The geometry allows for changing\nchunksize, layout and level as well as number of devices.\n\nWhen using verion-0.90 superblock, we convert the version to 0.91 while the\nconversion is happening so that an old kernel will refuse the assemble the\narray.  For version-1, we use a feature bit for the same effect.\n\nWhen starting an array we check for an incomplete reshape and restart the\nreshape process if needed.  If the reshape stopped at an awkward time (like\nwhen updating the first stripe) we refuse to assemble the array, and let\nuser-space worry about it.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ccfcc3c10b2a5cb8fd3c918199a4ff904fc6fb3e",
      "tree": "0c86fe6ba0f0bafd76f86f81b7425d6d497664aa",
      "parents": [
        "7ecaa1e6a1ad69862e9980b6c777e11f26c4782d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:18:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:45:01 2006 -0800"
      },
      "message": "[PATCH] md: Core of raid5 resize process\n\nThis patch provides the core of the resize/expand process.\n\nsync_request notices if a \u0027reshape\u0027 is happening and acts accordingly.\n\nIt allocated new stripe_heads for the next chunk-wide-stripe in the target\ngeometry, marking them STRIPE_EXPANDING.\n\nThen it finds which stripe heads in the old geometry can provide data needed\nby these and marks them STRIPE_EXPAND_SOURCE.  This causes stripe_handle to\nread all blocks on those stripes.\n\nOnce all blocks on a STRIPE_EXPAND_SOURCE stripe_head are read, any that are\nneeded are copied into the corresponding STRIPE_EXPANDING stripe_head.  Once a\nSTRIPE_EXPANDING stripe_head is full, it is marks STRIPE_EXPAND_READY and then\nis written out and released.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "88202a0c84e1951d6630d1d557d4801a8cc5b5ef",
      "tree": "5a1aadc008de1ee68f40a4bb667157f248211230",
      "parents": [
        "6d7ff7380b2e28c2807da3bf9fa614d91d15bacf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:21:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:10 2006 -0800"
      },
      "message": "[PATCH] md: allow sync-speed to be controlled per-device\n\nAlso export current (average) speed and status in sysfs.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4dbcdc751cb25ffca3a8374cbc5ab6de961cc545",
      "tree": "61d1eb6e35c0eec66e5a8610c1f57b1e6eec135c",
      "parents": [
        "d9d166c2a9d5d01af34396793950aa695883eed4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:52 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:09 2006 -0800"
      },
      "message": "[PATCH] md: count corrected read errors per drive\n\nStore this total in superblock (As appropriate), and make it available to\nuserspace via sysfs.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "d9d166c2a9d5d01af34396793950aa695883eed4",
      "tree": "6cb593cc0636476ebec9a9690aa48997510f9701",
      "parents": [
        "8bb93aaca2062cd54cc2c58c76ee8409cae209a7"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:51 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:09 2006 -0800"
      },
      "message": "[PATCH] md: allow array level to be set textually via sysfs\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2989ddbd6e1d9638a188311b896362c4bf7b7c25",
      "tree": "6dd1adb19cdff7135aadb96a309e55aed59e8be9",
      "parents": [
        "f188593ee7af8c71755d2df269a7a5f62c4b695e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:07 2006 -0800"
      },
      "message": "[PATCH] md: make a couple of names in md.c static\n\n.. because they aren\u0027t used outside md.c\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": "1345b1d8adbdeceb1c871d9a4af5e2a700b341c6",
      "tree": "0da1db7d273752ad5281db415e9245f3f3a63383",
      "parents": [
        "7dd5d34c6c2da04e8cd0732e08b33cd3359e4bae"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:07 2006 -0800"
      },
      "message": "[PATCH] md: define and use safe_put_page for md\n\nmd sometimes call put_page on NULL pointers (treating it like kfree).  This is\nnot safe, so define and use a \u0027safe_put_page\u0027 which checks for NULL.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "2604b703b6b3db80e3c75ce472a54dfd0b7bf9f4",
      "tree": "8c0e985c455ff35af24fbe60d8a3f5a276034370",
      "parents": [
        "a24a8dd858e0ba50f06a9fd8f61fe8c4fe7a8d8e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:36 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:06 2006 -0800"
      },
      "message": "[PATCH] md: remove personality numbering from md\n\nmd supports multiple different RAID level, each being implemented by a\n\u0027personality\u0027 (which is often in a separate module).\n\nThese personalities have fairly artificial \u0027numbers\u0027.  The numbers\nare use to:\n 1- provide an index into an array where the various personalities\n    are recorded\n 2- identify the module (via an alias) which implements are particular\n    personality.\n\nNeither of these uses really justify the existence of personality numbers.\nThe array can be replaced by a linked list which is searched (array lookup\nonly happens very rarely).  Module identification can be done using an alias\nbased on level rather than \u0027personality\u0027 number.\n\nThe current \u0027raid5\u0027 modules support two level (4 and 5) but only one\npersonality.  This slight awkwardness (which was handled in the mapping from\nlevel to personality) can be better handled by allowing raid5 to register 2\npersonalities.\n\nWith this change in place, the core md module does not need to have an\nexhaustive list of all possible personalities, so other personalities can be\nadded independently.\n\nThis patch also moves the check for chunksize being non-zero into the -\u003erun\nroutines for the personalities that need it, rather than having it in core-md.\n This has a side effect of allowing \u0027faulty\u0027 and \u0027linear\u0027 not to have a\nchunk-size set.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6ff8d8ec06690f4011a6c3ad9e0759b9094f0601",
      "tree": "3606791ca1fb73e0263c4bb90d9c909d354bf9d4",
      "parents": [
        "14f8d26b8ea3413b28f2cac208c9a93600fe3a80"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 06 00:20:15 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Jan 06 08:34:02 2006 -0800"
      },
      "message": "[PATCH] md: allow dirty raid[456] arrays to be started at boot\n\nSee patch to md.txt for more details\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "787453c2397edcc3261efebb661739acd8c38547",
      "tree": "41855815ebfb6332485ac1ca30b43308c66da0e0",
      "parents": [
        "fd9d49cac46f5758d513ccf831b599dd4412546f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:43 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:40 2005 -0800"
      },
      "message": "[PATCH] md: complete conversion of md to use kthreads\n\nThere are a few loose ends following the conversion of md to use kthreads:\n\n- Some fields in mdk_thread_t that aren\u0027t needed (kthreads does it\u0027s own\n  completion and manages it\u0027s own name).\n\n- thread-\u003erun is now never NULL, so no need to check\n\n- Some tests for signal_pending that aren\u0027t needed (As we don\u0027t use signals\n  to stop threads any more)\n\n- Some flush_signals are not needed\n\n- Some waits are interruptible and don\u0027t need to be.\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": "a9701a30470856408d08657eb1bd7ae29a146190",
      "tree": "eb6ea8c82fdc1b50bf56abadeee63a935034cf27",
      "parents": [
        "bd926c63b7a6843d3ce2728396c0891e54fce5c4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:34 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:38 2005 -0800"
      },
      "message": "[PATCH] md: support BIO_RW_BARRIER for md/raid1\n\nWe can only accept BARRIER requests if all slaves handle\nbarriers, and that can, of course, change with time....\n\nSo we keep track of whether the whole array seems safe for barriers,\nand also whether each individual rdev handles barriers.\n\nWe initially assumes barriers are OK.\n\nWhen writing the superblock we try a barrier, and if that fails, we flag\nthings for no-barriers.  This will usually clear the flags fairly quickly.\n\nIf writing the superblock finds that BIO_RW_BARRIER is -ENOTSUPP, we need to\nresubmit, so introduce function \"md_super_wait\" which waits for requests to\nfinish, and retries ENOTSUPP requests without the barrier flag.\n\nWhen writing the real raid1, write requests which were BIO_RW_BARRIER but\nwhich aresn\u0027t supported need to be retried.  So raid1d is enhanced to do this,\nand when any bio write completes (i.e.  no retry needed) we remove it from the\nr1bio, so that devices needing retry are easy to find.\n\nWe should hardly ever get -ENOTSUPP errors when writing data to the raid.\nIt should only happen if:\n  1/ the device used to support BARRIER, but now doesn\u0027t.  Few devices\n     change like this, though raid1 can!\nor\n  2/ the array has no persistent superblock, so there was no opportunity to\n     pre-test for barriers when writing the superblock.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b2d444d7ad975d555bb919601bcdc0e58975a40e",
      "tree": "963a29258af95f05dd28d9de0180ac9ef533aeed",
      "parents": [
        "ba22dcbf106338a5c46d6979f9b19564faae3d49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:31 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:38 2005 -0800"
      },
      "message": "[PATCH] md: convert \u0027faulty\u0027 and \u0027in_sync\u0027 fields to bits in \u0027flags\u0027 field\n\nThis has the advantage of removing the confusion caused by \u0027rdev_t\u0027 and\n\u0027mddev_t\u0027 both having \u0027in_sync\u0027 fields.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ba22dcbf106338a5c46d6979f9b19564faae3d49",
      "tree": "4caae4532cda0412d2446eca8b036d4e0df447f8",
      "parents": [
        "007583c9253fed363a0bd71b039e9b40a0f6855e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:31 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:38 2005 -0800"
      },
      "message": "[PATCH] md: improvements to raid5 handling of read errors\n\nTwo refinements to the \u0027attempt-overwrite-on-read-error\u0027 mechanism.\n1/ If the array is read-only, don\u0027t attempt an over-write.\n2/ If there are more than max_nr_stripes read errors on a device with\n   no success, fail the drive.  This will make sure a dead\n   drive will be eventually kicked even when we aren\u0027t trying\n   to rewrite (which would normally kick a dead drive more quickly.\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": "007583c9253fed363a0bd71b039e9b40a0f6855e",
      "tree": "f47d3fd94830ae2c09d7d821e8a57ba46ecb13bc",
      "parents": [
        "31399d9e56abeec4d819f07eefc97f30b5d5ed75"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:30 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:38 2005 -0800"
      },
      "message": "[PATCH] md: change raid5 sysfs attribute to not create a new directory\n\nThere isn\u0027t really a need for raid5 attributes to be an a subdirectory,\nso this patch moves them from\n  /sys/block/mdX/md/raid5/attribute\nto\n  /sys/block/mdX/md/attribute\n\nThis suggests that all md personalities should co-operate about\nnamespace usage, but that shouldn\u0027t be a problem.\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": "9d88883e68f404d5581bd391713ceef470ea53a9",
      "tree": "09217a737ca91fb1d105df601741a61e141d4946",
      "parents": [
        "24dd469d728dae07f40c5d79ea6dedd38cdf1a30"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:26 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:37 2005 -0800"
      },
      "message": "[PATCH] md: teach raid5 the difference between \u0027check\u0027 and \u0027repair\u0027.\n\nWith this, raid5 can be asked to check parity without repairing it.  It also\nkeeps a count of the number of incorrect parity blocks found (mismatches) and\nreports them through sysfs.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "24dd469d728dae07f40c5d79ea6dedd38cdf1a30",
      "tree": "3975aaeaa6c1cd77a2d4b06184ad3bd0175a44a5",
      "parents": [
        "3f294f4fb6f2ba887b717674da26c21f3d57f3fc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:26 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:37 2005 -0800"
      },
      "message": "[PATCH] md: allow a manual resync with md\n\nYou can trigger a \u0027check\u0027 with\n  echo check \u003e /sys/block/mdX/md/scan_mode\nor a check-and-repair errors with\n  echo repair \u003e /sys/block/mdX/md/scan_mode\n\nand read the current state from the same file.\n\nNote: personalities need to know the different between \u0027check\u0027 and \u0027repair\u0027,\nbut don\u0027t yet.  Until they do, \u0027check\u0027 will be the same as \u0027repair\u0027 and will\njust do a normal resync pass.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "86e6ffdd243a06663713e637ee683fb27dce8e0c",
      "tree": "d6bc5f26aff6b1a506ad04d8d605d92cfd19162f",
      "parents": [
        "eae1701fbd264cfc7efbaf7cd4cd999760070e27"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:24 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:37 2005 -0800"
      },
      "message": "[PATCH] md: extend md sysfs support to component devices.\n\nEach device in an md array how has a corresponding\n  /sys/block/mdX/md/devNN/\ndirectory which can contain attributes.  Currently there is only \u0027state\u0027 which\nsummarises the state, nd \u0027super\u0027 which has a copy of the superblock, and\n\u0027block\u0027 which is a symlink to the block device.\n\nAlso, /sys/block/mdX/md/rdNN represents slot \u0027NN\u0027 in the array, and is a\nsymlink to the relevant \u0027devNN\u0027.  Obviously spare devices do not have a slot\nin the array, and so don\u0027t have such a symlink.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eae1701fbd264cfc7efbaf7cd4cd999760070e27",
      "tree": "6605cca37d4c605217b7accffe7f94f81d37f0dd",
      "parents": [
        "4e5314b56a7ea11c7a5f2b8418992b2f49648a25"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 21:39:23 2005 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Nov 09 07:56:36 2005 -0800"
      },
      "message": "[PATCH] md: initial sysfs support for md\n\nStart using kobjects in mddevs, and provide a couple of simple attributes\n(level and disks).  Attributes live in\n  /sys/block/mdX/md/attr-name\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "0002b2718dd04da67c21f8a7830de8d95a9b0345",
      "tree": "c84f916df71293e0e15643a8a07d9508d1404395",
      "parents": [
        "773f7834425e83144c95fbbc553ced3c2b74b828"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Fri Sep 09 16:23:53 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 16:39:12 2005 -0700"
      },
      "message": "[PATCH] md: limit size of sb read/written to appropriate amount\n\nversion-1 superblocks are not (normally) 4K long, and can be of variable size.\n Writing the full 4K can cause corruption (but only in non-default\nconfigurations).\n\nWith this patch the super-block-flavour can choose a size to read, and set a\nsize to write based on what it finds.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "773f7834425e83144c95fbbc553ced3c2b74b828",
      "tree": "0552618b3a63395e2a69c69f177c7bdef92576a9",
      "parents": [
        "ab904d634625ef8dc590240b7ee06c7b724e636b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Fri Sep 09 16:23:53 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 16:39:12 2005 -0700"
      },
      "message": "[PATCH] md: remove old cruft from md_k.h header file\n\nThese inlines haven\u0027t been used for ages, they should go.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4b6d287f627b5fb6a49f78f9e81649ff98c62bb7",
      "tree": "7b6cbc6a997e25a7fb6185da7129e539c4ffda8b",
      "parents": [
        "8ddf9efe6708f3674f0ddfeb6425fd27bea109a2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Fri Sep 09 16:23:47 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 16:39:10 2005 -0700"
      },
      "message": "[PATCH] md: add write-behind support for md/raid1\n\nIf a device is flagged \u0027WriteMostly\u0027 and the array has a bitmap, and the\nbitmap superblock indicates that write_behind is allowed, then write_behind is\nenabled for WriteMostly devices.\n\nWrite requests will be acknowledges as complete to the caller (via b_end_io)\nwhen all non-WriteMostly devices have completed the write, but will not be\ncleared from the bitmap until all devices complete.\n\nThis requires memory allocation to make a local copy of the data being\nwritten.  If there is insufficient memory, then we fall-back on normal write\nsemantics.\n\nSigned-Off-By: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8ddf9efe6708f3674f0ddfeb6425fd27bea109a2",
      "tree": "90862c8fa9f04cf98423b3da1b2c5d1f01a7310d",
      "parents": [
        "36fa30636fb84b209210299684e1be66d9e58217"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Fri Sep 09 16:23:45 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 16:39:10 2005 -0700"
      },
      "message": "[PATCH] md: support write-mostly device in raid1\n\nThis allows a device in a raid1 to be marked as \"write mostly\".  Read requests\nwill only be sent if there is no other option.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "36fa30636fb84b209210299684e1be66d9e58217",
      "tree": "28a7473238932f1e7ade1a5a5ec67a113b6d6205",
      "parents": [
        "6a07997fc34ac15a1c5dc650285d79b7604a2276"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Fri Sep 09 16:23:45 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 09 16:39:10 2005 -0700"
      },
      "message": "[PATCH] md: all hot-add and hot-remove of md intent logging bitmaps\n\nBoth file-bitmaps and superblock bitmaps are supported.\n\nIf you add a bitmap file on the array device, you lose.\n\nThis introduces a \u0027default_bitmap_offset\u0027 field in mddev, as the ioctl used\nfor adding a superblock bitmap doesn\u0027t have room for giving an offset.  Later,\nthis value will be setable via sysfs.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "7bfa19f2748000d646dbdf8f48258cfe1d257b52",
      "tree": "2f7e6b0a0cba4ac01d7809224023a7dc73b94840",
      "parents": [
        "a654b9d8f851f4ca02649d5825cbe6c608adb10c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Tue Jun 21 17:17:28 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:47 2005 -0700"
      },
      "message": "[PATCH] md: allow md to update multiple superblocks in parallel.\n\ncurrently, md updates all superblocks (one on each device) in series.  It\nwaits for one write to complete before starting the next.  This isn\u0027t a big\nproblem as superblock updates don\u0027t happen that often.\n\nHowever it is neater to do it in parallel, and if the drives in the array have\ngone to \"sleep\" after a period of idleness, then waking them is parallel is\nfaster (and someone else should be worrying about power drain).\n\nFuther, we will need parallel superblock updates for a future patch which\nkeeps the intent-logging bitmap near the superblock.\n\nAlso remove the silly code that retired superblock updates 100 times.  This\nsimply never made sense.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a654b9d8f851f4ca02649d5825cbe6c608adb10c",
      "tree": "747301647f619a9f1dd48f4d6be96b5e35d2484c",
      "parents": [
        "3d310eb7b3df1252e8595d059d982b0a9825a137"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Tue Jun 21 17:17:27 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:47 2005 -0700"
      },
      "message": "[PATCH] md: allow md intent bitmap to be stored near the superblock.\n\nThis provides an alternate to storing the bitmap in a separate file.  The\nbitmap can be stored at a given offset from the superblock.  Obviously the\ncreator of the array must make sure this doesn\u0027t intersect with data....\nAfter is good for version-0.90 superblocks.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3d310eb7b3df1252e8595d059d982b0a9825a137",
      "tree": "9bca5e7eaa437d60010c1745b9aeb9592439d482",
      "parents": [
        "41158c7eb22312cfaa256744e1553bb4042ff085"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Tue Jun 21 17:17:26 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:46 2005 -0700"
      },
      "message": "[PATCH] md: fix deadlock due to md thread processing delayed requests.\n\nBefore completing a \u0027write\u0027 the md superblock might need to be updated.\nThis is best done by the md_thread.\n\nThe current code schedules this up and queues the write request for later\nhandling by the md_thread.\n\nHowever some personalities (Raid5/raid6) will deadlock if the md_thread\ntries to submit requests to its own array.\n\nSo this patch changes things so the processes submitting the request waits\nfor the superblock to be written and then submits the request itself.\n\nThis fixes a recently-created deadlock in raid5/raid6\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "41158c7eb22312cfaa256744e1553bb4042ff085",
      "tree": "21c28e0630d66fc32d758993299a78088a846562",
      "parents": [
        "289e99e8ed8f36e386bf7de49947311c17ae1482"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Tue Jun 21 17:17:25 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:46 2005 -0700"
      },
      "message": "[PATCH] md: optimise reconstruction when re-adding a recently failed drive.\n\nWhen an array is degraded, bit in the intent-bitmap are never cleared.  So if\na recently failed drive is re-added, we only need to reconstruct the block\nthat are still reflected in the bitmap.\n\nThis patch adds support for this re-adding.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "32a7627cf3a35396a8e834faf34e38ae9f3b1309",
      "tree": "3fe7764f5d8e39d835a397e1099358d924b02981",
      "parents": [
        "57afd89f98a990747445f01c458ecae64263b2f8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Tue Jun 21 17:17:14 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:43 2005 -0700"
      },
      "message": "[PATCH] md: optimised resync using Bitmap based intent logging\n\nWith this patch, the intent to write to some block in the array can be logged\nto a bitmap file.  Each bit represents some number of sectors and is set\nbefore any update happens, and only cleared when all writes relating to all\nsectors are complete.\n\nAfter an unclean shutdown, information in this bitmap can be used to optimise\nresync - only sectors which could be out-of-sync need to be updated.\n\nAlso if a drive is removed and then added back into an array, the recovery can\nmake use of the bitmap to optimise reconstruction.  This is not implemented in\nthis patch.\n\nCurrently the bitmap is stored in a file which must (obviously) be stored on a\nseparate device.\n\nThe patch only provided infrastructure.  It does not update any personalities\nto bitmap intent logging.\n\nMd arrays can still be used with no bitmap file.  This patch has minimal\nimpact on such arrays.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "57afd89f98a990747445f01c458ecae64263b2f8",
      "tree": "cab9f5941f32299bc97936e111f6552ebcee9cf6",
      "parents": [
        "06d91a5fe0b50c9060e70bdf7786f8a3c66249db"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Tue Jun 21 17:17:13 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:43 2005 -0700"
      },
      "message": "[PATCH] md: improve the interface to sync_request\n\n1/ change the return value (which is number-of-sectors synced)\n from \u0027int\u0027 to \u0027sector_t\u0027.\n The number of sectors is usually easily small enough to fit\n in an int, but if resync needs to abort, it may want to return\n the total number of remaining sectors, which could be large.\n Also errors cannot be returned as negative numbers now, so use\n 0 instead\n2/ Add a \u0027skipped\u0027 return parameter to allow the array to report\n that it skipped the sectors.  This allows md to take this into account\n in the speed calculations.\n Currently there is no important skipping, but the bitmap-based-resync\n that is coming will use this.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "06d91a5fe0b50c9060e70bdf7786f8a3c66249db",
      "tree": "95a8b9228534cebb12eb31c1cc9cc0c45f685410",
      "parents": [
        "fca4d848f0e6fafdc2b25f8a0cf1e76935f13ac2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@cse.unsw.edu.au",
        "time": "Tue Jun 21 17:17:12 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Tue Jun 21 19:07:43 2005 -0700"
      },
      "message": "[PATCH] md: improve locking on \u0027safemode\u0027 and move superblock writes\n\nWhen md marks the superblock dirty before a write, it calls\ngeneric_make_request (to write the superblock) from within\ngeneric_make_request (to write the first dirty block), which could cause\nproblems later.\n\nWith this patch, the superblock write is always done by the helper thread, and\nwrite request are delayed until that write completes.\n\nAlso, the locking around marking the array dirty and writing the superblock is\nimproved to avoid possible races.\n\nSigned-off-by: Neil Brown \u003cneilb@cse.unsw.edu.au\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"
    }
  ]
}
