)]}'
{
  "log": [
    {
      "commit": "3d30701b58970425e1d45994d6cb82f828924fdd",
      "tree": "8b14cf462628bebf8548c1b8c205a674564052d1",
      "parents": [
        "8cbd84f2dd4e52a8771b191030c374ba3e56d291",
        "fd8aa2c1811bf60ccb2d5de0579c6f62aec1772d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Aug 10 15:38:19 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (24 commits)\n  md: clean up do_md_stop\n  md: fix another deadlock with removing sysfs attributes.\n  md: move revalidate_disk() back outside open_mutex\n  md/raid10: fix deadlock with unaligned read during resync\n  md/bitmap:  separate out loading a bitmap from initialising the structures.\n  md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.\n  md/bitmap: optimise scanning of empty bitmaps.\n  md/bitmap: clean up plugging calls.\n  md/bitmap: reduce dependence on sysfs.\n  md/bitmap: white space clean up and similar.\n  md/raid5: export raid5 unplugging interface.\n  md/plug: optionally use plugger to unplug an array during resync/recovery.\n  md/raid5: add simple plugging infrastructure.\n  md/raid5: export is_congested test\n  raid5: Don\u0027t set read-ahead when there is no queue\n  md: add support for raising dm events.\n  md: export various start/stop interfaces\n  md: split out md_rdev_init\n  md: be more careful setting MD_CHANGE_CLEAN\n  md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk\n  ...\n"
    },
    {
      "commit": "6e17b0276452912cb13445e5ea552b599984675f",
      "tree": "1ccac9c3d01f7ea8c6c0061948b92c901253e676",
      "parents": [
        "bb4f1e9d0e2ef93de8e36ca0f5f26625fcd70b7d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Aug 07 21:41:19 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:22:45 2010 +1000"
      },
      "message": "md: clean up do_md_stop\n\nThere is only one error exit from do_md_stop, so make that more\nexplicit and discard the \u0027err\u0027 variable.\nAlso drop the \u0027revalidate\u0027 variable by moving the unlock calls around.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bb4f1e9d0e2ef93de8e36ca0f5f26625fcd70b7d",
      "tree": "7c7edc0d5fa2b5702358f11396d52d07183708c0",
      "parents": [
        "147e0b6a639ac581ca3bf627bedc3f4a6d3eca66"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:18:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:21:27 2010 +1000"
      },
      "message": "md: fix another deadlock with removing sysfs attributes.\n\nMove the deletion of sysfs attributes from reconfig_mutex to\nopen_mutex didn\u0027t really help as a process can try to take\nopen_mutex while holding reconfig_mutex, so the same deadlock can\nhappen, just requiring one more process to be involved in the chain.\n\nI looks like I cannot easily use locking to wait for the sysfs\ndeletion to complete, so don\u0027t.\n\nThe only things that we cannot do while the deletions are still\npending is other things which can change the sysfs namespace: run,\ntakeover, stop.  Each of these can fail with -EBUSY.\nSo set a flag while doing a sysfs deletion, and fail run, takeover,\nstop if that flag is set.\n\nThis is suitable for 2.6.35.x\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "147e0b6a639ac581ca3bf627bedc3f4a6d3eca66",
      "tree": "95ca7cb3b2f06586d678ec33c0e9910d11f3af42",
      "parents": [
        "51e9ac77035a3dfcb6fc0a88a0d80b6f99b5edb1"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Aug 06 18:01:59 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sun Aug 08 21:20:17 2010 +1000"
      },
      "message": "md: move revalidate_disk() back outside open_mutex\n\nCommit b821eaa5 \"md: remove -\u003echanged and related code\" moved\nrevalidate_disk() under open_mutex, and lockdep noticed.\n\n[ INFO: possible circular locking dependency detected ]\n2.6.32-mdadm-locking #1\n-------------------------------------------------------\nmdadm/3640 is trying to acquire lock:\n (\u0026bdev-\u003ebd_mutex){+.+.+.}, at: [\u003cffffffff811acecb\u003e] revalidate_disk+0x5b/0x90\n\nbut task is already holding lock:\n (\u0026mddev-\u003eopen_mutex){+.+...}, at: [\u003cffffffffa055e07a\u003e] do_md_stop+0x4a/0x4d0 [md_mod]\n\nwhich lock already depends on the new lock.\n\nIt is suitable for 2.6.35.x\n\nCc: \u003cstable@kernel.org\u003e\nReported-by: Przemyslaw Czarnowski \u003cprzemyslaw.hawrylewicz.czarnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6e9624b8caec290d28b4c6d9ec75749df6372b87",
      "tree": "47225b544e1da82742795553dc4e8aa70c17afdc",
      "parents": [
        "8a6cfeb6deca3a8fefd639d898b0d163c0b5d368"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:25:34 2010 +0200"
      },
      "message": "block: push down BKL into .open and .release\n\nThe open and release block_device_operations are currently\ncalled with the BKL held. In order to change that, we must\nfirst make sure that all drivers that currently rely\non this have no regressions.\n\nThis blindly pushes the BKL into all .open and .release\noperations for all block drivers to prepare for the\nnext step. The drivers can subsequently replace the BKL\nwith their own locks or remove it completely when it can\nbe shown that it is not needed.\n\nThe functions blkdev_get and blkdev_put are the only\nremaining users of the big kernel lock in the block\nlayer, besides a few uses in the ioctl code, none\nof which need to serialize with blkdev_{get,put}.\n\nMost of these two functions is also under the protection\nof bdev-\u003ebd_mutex, including the actual calls to\n-\u003eopen and -\u003erelease, and the common code does not\naccess any global data structures that need the BKL.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nAcked-by: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "7b6d91daee5cac6402186ff224c3af39d79f4a0e",
      "tree": "b1518cf0b6c301178e0a320f80610cd5b3aa7625",
      "parents": [
        "33659ebbae262228eef4e0fe990f393d1f0ed941"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Sat Aug 07 18:20:39 2010 +0200"
      },
      "message": "block: unify flags for struct bio and struct request\n\nRemove the current bio flags and reuse the request flags for the bio, too.\nThis allows to more easily trace the type of I/O from the filesystem\ndown to the block driver.  There were two flags in the bio that were\nmissing in the requests:  BIO_RW_UNPLUG and BIO_RW_AHEAD.  Also I\u0027ve\nrenamed two request flags that had a superflous RW in them.\n\nNote that the flags are in bio.h despite having the REQ_ name - as\nblkdev.h includes bio.h that is the only way to go for now.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "69e51b449d383e97b1b9f890f8378c96e9e17346",
      "tree": "650123fa4f08e8fa7f348a4ca875c59c129e5d84",
      "parents": [
        "e384e58549a2e9a83071ad80280c1a9053cfd84c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:35 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:34 2010 +1000"
      },
      "message": "md/bitmap:  separate out loading a bitmap from initialising the structures.\n\ndm makes this distinction between -\u003ectr and -\u003eresume, so we need to\ntoo.\n\nAlso get the new bitmap_load to clear out the bitmap first, as this is\nmost consistent with the dm suspend/resume approach\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b63d7c2e29bf9cc94989806f2df0cfca4976b830",
      "tree": "fdb82527ca458769d3c7381375873931bfb23b19",
      "parents": [
        "5ff5afffe6527543866a47ffab12769427283917"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:33 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 13:21:32 2010 +1000"
      },
      "message": "md/bitmap: clean up plugging calls.\n\n1/ use md_unplug in bitmap.c as we will soon be using bitmaps under\n  arrays with no queue attached.\n\n2/ Don\u0027t bother plugging the queue when we set a bit in the bitmap.\n   The reason for this was to encourage as many bits as possible to\n   get set before we unplug and write stuff out.\n   However every personality already plugs the queue after\n   bitmap_startwrite either directly (raid1/raid10) or be setting\n   STRIPE_BIT_DELAY which causes the queue to be plugged later\n   (raid5).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "252ac5221a71be72b7e7c7b7482af91e9c962e8c",
      "tree": "cb9542b1391dabc136ce0052eb28948e77a6e2e5",
      "parents": [
        "2ac8740151b082f045e58010eb92560c3a23a0e9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/plug: optionally use plugger to unplug an array during resync/recovery.\n\nIf an array doesn\u0027t have a \u0027queue\u0027 then md_do_sync cannot\nunplug it.\nIn that case it will have a \u0027plugger\u0027, so make that available\nto the mddev, and use it to unplug the array if needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2ac8740151b082f045e58010eb92560c3a23a0e9",
      "tree": "39bff686e28f033339c6d1cf47042b6dc1586c2f",
      "parents": [
        "11d8a6e3719519fbc0e2c9d61b6fa931b84bf813"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:29 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:08 2010 +1000"
      },
      "message": "md/raid5: add simple plugging infrastructure.\n\nmd/raid5 uses the plugging infrastructure provided by the block layer\nand \u0027struct request_queue\u0027.  However when we plug raid5 under dm there\nis no request queue so we cannot use that.\n\nSo create a similar infrastructure that is much lighter weight and use\nit for raid5.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "768a418db102bb6aa6064e6090892b5c21ff1f9e",
      "tree": "2f33acbf0ca542f43c8014201b539ae8f461ee5c",
      "parents": [
        "390ee602a142a93f2c7eb7bffee8e277058b8e0a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 11:49:55 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: add support for raising dm events.\n\ndm uses scheduled work to raise events to user-space.\nSo allow md device to have work_structs and schedule them on an error.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "390ee602a142a93f2c7eb7bffee8e277058b8e0a",
      "tree": "33a23748dd5ff4ea76b34ed3e458c6da91185376",
      "parents": [
        "e8bb9a839a26f076379e9cb9f46a879d210156f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:27 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: export various start/stop interfaces\n\nexport entry points for starting and stopping md arrays.\nThis will be used by a module to make md/raid5 work under\ndm.\nAlso stop calling md_stop_writes from md_stop, as that won\u0027t\nwork well with dm - it will want to call the two separately.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e8bb9a839a26f076379e9cb9f46a879d210156f1",
      "tree": "4da184e861cc5fea4967089711dfdc4fbb175f43",
      "parents": [
        "676e42d896ab6967859fabbb06f4e11b9615cbcf"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: split out md_rdev_init\n\nThis functionality will be needed separately in a subsequent patch, so\nsplit it into it\u0027s own exported function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "676e42d896ab6967859fabbb06f4e11b9615cbcf",
      "tree": "efab4dffe8e930ec9ef51a5a4d4fd04ffe3749b1",
      "parents": [
        "f4be6b43f1ac60dff00ef0923ee43b0e08872947"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "md: be more careful setting MD_CHANGE_CLEAN\n\nWhen MD_CHANGE_CLEAN is set we might block in md_write_start.\nSo we should only set it when fairly sure that something will clear\nit.\n\nThere are two places where it is set so as to encourage a metadata\nupdate to record the progress of resync/recovery.  This should only\nbe done if the internal metadata update mechanisms are in use, which\ncan be tested by by inspecting \u0027-\u003epersistent\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "00bcb4ac7ee7e557a491b614219142cea0ef16f4",
      "tree": "992cfa1d0e653aa3de8f0865c5e1a5a0fee4f935",
      "parents": [
        "d0c6f6258478e1dba532bf7c28e2cd6e1047d3a4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:23 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 21 13:27:53 2010 +1000"
      },
      "message": "md: reduce dependence on sysfs.\n\nWe will want md devices to live as dm targets where sysfs is not\nvisible.  So allow md to not connect to sysfs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b",
      "tree": "126f2ae8faa2cff8f9dde91cc7a07569ff9851cb",
      "parents": [
        "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:01:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:18 2010 +1000"
      },
      "message": "md: Don\u0027t update -\u003erecovery_offset when reshaping an array to fewer devices.\n\nWhen an array is reshaped to have fewer devices, the reshape proceeds\nfrom the end of the devices to the beginning.\n\nIf a device happens to be non-In_sync (which is possible but rare)\nwe would normally update the -\u003erecovery_offset as the reshape\nprogresses. However that would be wrong as the recover_offset records\nthat the early part of the device is in_sync, while in fact it would\nonly be the later part that is in_sync, and in any case the offset\nnumber would be measured from the wrong end of the device.\n\nRelatedly, if after a reshape a spare is discovered to not be\nrecoverred all the way to the end, not allow spare_active\nto incorporate it in the array.\n\nThis becomes relevant in the following sample scenario:\n\nA 4 drive RAID5 is converted to a 6 drive RAID6 in a combined\noperation.\nThe RAID5-\u003eRAID6 conversion will cause a 5 drive to be included as a\nspare, then the 5drive -\u003e 6drive reshape will effectively rebuild that\nspare as it progresses.  The 6th drive is treated as in_sync the whole\ntime as there is never any case that we might consider reading from\nit, but must not because there is no valid data.\n\nIf we interrupt this reshape part-way through and reverse it to return\nto a 5-drive RAID6 (or event a 4-drive RAID5), we don\u0027t want to update\nthe recovery_offset - as that would be wrong - and we don\u0027t want to\ninclude that spare as active in the 5-drive RAID6 when the reversed\nreshape completed and it will be mostly out-of-sync still.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e93f68a1fc6244c05ad8fae28e75835ec74ab34e",
      "tree": "d282978aac8f6fcec512be2a6e61287bbb6241b1",
      "parents": [
        "0544a21db02c1d8883158fd6f323364f830a120a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 15 09:36:03 2010 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:33:24 2010 +1000"
      },
      "message": "md: fix handling of array level takeover that re-arranges devices.\n\nMost array level changes leave the list of devices largely unchanged,\npossibly causing one at the end to become redundant.\nHowever conversions between RAID0 and RAID10 need to renumber\nall devices (except 0).\n\nThis renumbering is currently being done in the -\u003erun method when the\nnew personality takes over.  However this is too late as the common\ncode in md.c might already have invalidated some of the devices if\nthey had a -\u003eraid_disk number that appeared to high.\n\nMoving it into the -\u003etakeover method is too early as the array is\nstill active at that time and wrong -\u003eraid_disk numbers could cause\nconfusion.\n\nSo add a -\u003enew_raid_disk field to mdk_rdev_s and use it to communicate\nthe new raid_disk number.\nNow the common code knows exactly which devices need to be renumbered,\nand which can be invalidated, and can do it all at a convenient time\nwhen the array is suspend.\nIt can also update some symlinks in sysfs which previously were not be\nupdated correctly.\n\nReported-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f3b99be19ded511a1bf05a148276239d9f13eefa",
      "tree": "c9e59617e67e7a43e38b5c41f3307d54f4279c13",
      "parents": [
        "7e27d6e778cd87b6f2415515d7127eba53fe5d02"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:31:03 2010 +1000"
      },
      "message": "Restore partition detection of newly created md arrays.\n\nCommit  b821eaa572fd737faaf6928ba046e571526c36c6 broke partition\ndetection for md arrays.\n\nThe logic was almost right.  However if revalidate_disk is called\nwhen the device is not yet open, bdev-\u003ebd_disk won\u0027t be set, so the\nflush_disk() Call will not set bd_invalidated.\n\nSo when md_open is called we still need to ensure that\n-\u003ebd_invalidated gets set.  This is easily done with a call to\ncheck_disk_size_change in the place where the offending commit removed\ncheck_disk_change.  At the important times, the size will have changed\nfrom 0 to non-zero, so check_disk_size_change will set bd_invalidated.\n\nTested-by: Duncan \u003c1i5t5.duncan@cox.net\u003e\nReported-by: Duncan \u003c1i5t5.duncan@cox.net\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3ff195b011d7decf501a4d55aeed312731094796",
      "tree": "8cfdc330abbf82893955f2d7d6e96efee81bfd7c",
      "parents": [
        "bc451f2058238013e1cdf4acd443c01734d332f0"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 30 11:31:26 2010 -0700"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Fri May 21 09:37:31 2010 -0700"
      },
      "message": "sysfs: Implement sysfs tagged directory support.\n\nThe problem.  When implementing a network namespace I need to be able\nto have multiple network devices with the same name.  Currently this\nis a problem for /sys/class/net/*, /sys/devices/virtual/net/*, and\npotentially a few other directories of the form /sys/ ... /net/*.\n\nWhat this patch does is to add an additional tag field to the\nsysfs dirent structure.  For directories that should show different\ncontents depending on the context such as /sys/class/net/, and\n/sys/devices/virtual/net/ this tag field is used to specify the\ncontext in which those directories should be visible.  Effectively\nthis is the same as creating multiple distinct directories with\nthe same name but internally to sysfs the result is nicer.\n\nI am calling the concept of a single directory that looks like multiple\ndirectories all at the same path in the filesystem tagged directories.\n\nFor the networking namespace the set of directories whose contents I need\nto filter with tags can depend on the presence or absence of hotplug\nhardware or which modules are currently loaded.  Which means I need\na simple race free way to setup those directories as tagged.\n\nTo achieve a reace free design all tagged directories are created\nand managed by sysfs itself.\n\nUsers of this interface:\n- define a type in the sysfs_tag_type enumeration.\n- call sysfs_register_ns_types with the type and it\u0027s operations\n- sysfs_exit_ns when an individual tag is no longer valid\n\n- Implement mount_ns() which returns the ns of the calling process\n  so we can attach it to a sysfs superblock.\n- Implement ktype.namespace() which returns the ns of a syfs kobject.\n\nEverything else is left up to sysfs and the driver layer.\n\nFor the network namespace mount_ns and namespace() are essentially\none line functions, and look to remain that.\n\nTags are currently represented a const void * pointers as that is\nboth generic, prevides enough information for equality comparisons,\nand is trivial to create for current users, as it is just the\nexisting namespace pointer.\n\nThe work needed in sysfs is more extensive.  At each directory\nor symlink creating I need to check if the directory it is being\ncreated in is a tagged directory and if so generate the appropriate\ntag to place on the sysfs_dirent.  Likewise at each symlink or\ndirectory removal I need to check if the sysfs directory it is\nbeing removed from is a tagged directory and if so figure out\nwhich tag goes along with the name I am deleting.\n\nCurrently only directories which hold kobjects, and\nsymlinks are supported.  There is not enough information\nin the current file attribute interfaces to give us anything\nto discriminate on which makes it useless, and there are\nno potential users which makes it an uninteresting problem\nto solve.\n\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\nSigned-off-by: Benjamin Thery \u003cbenjamin.thery@bull.net\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "be6800a73aa2f3dc14744c3b80e676d189789f04",
      "tree": "7db76b4488ad45e923223748c41fa8a61a09aa25",
      "parents": [
        "a8707c08f4f718bb0ed65499d3f43201f6e41455"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 10:17:09 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: don\u0027t insist on valid event count for spare devices.\n\nDevices which know that they are spares do not really need to have\nan event count that matches the rest of the array, so there are no\ndata-in-sync issues. It is enough that the uuid matches.\nSo remove the requirement that the event count is up-to-date.\n\nWe currently still write out and event count on spares, but this\nallows us in a year or 3 to stop doing that completely.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a8707c08f4f718bb0ed65499d3f43201f6e41455",
      "tree": "8fc3ea9ea924ebc4f28012c11f3c1e70ad60bcb2",
      "parents": [
        "7b0bb5368a7195606eca475d9f4e291ab7227052"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 09:28:43 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:01 2010 +1000"
      },
      "message": "md: simplify updating of event count to sometimes avoid updating spares.\n\nWhen updating the event count for a simple clean \u003c-\u003e dirty transition,\nwe try to avoid updating the spares so they can safely spin-down.\nAs the event_counts across an array must be +/- 1, this means\ndecrementing the event_count on a dirty-\u003eclean transition.\nThis is not always safe and we have to avoid the unsafe time.\nWe current do this with a misguided idea about it being safe or\nnot depending on whether the event_count is odd or even.  This\napproach only works reliably in a few common instances, but easily\nfalls down.\n\nSo instead, simply keep internal state concerning whether it is safe\nor not, and always assume it is not safe when an array is first\nassembled.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "75a73a29e520a6ce982b0da6dd8b7560ae3faa90",
      "tree": "1bcb14b69e2ae7673bf29be6b3f27aee6e896070",
      "parents": [
        "af3a2cd6b8a479345786e7fe5e199ad2f6240e56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 19:44:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md: restore ability of spare drives to spin down.\n\nSome time ago we stopped the clean/active metadata updates\nfrom being written to a \u0027spare\u0027 device in most cases so that\nit could spin down and say spun down.  Device failure/removal\netc are still recorded on spares.\n\nHowever commit 51d5668cb2e3fd1827a55 broke this 50% of the time,\ndepending on whether the event count is even or odd.\nThe change log entry said:\n\n   This means that the alignment between \u0027odd/even\u0027 and\n    \u0027clean/dirty\u0027 might take a little longer to attain,\n\nhow ever the code makes no attempt to create that alignment, so it\ncould take arbitrarily long.\n\nSo when we find that clean/dirty is not aligned with odd/even,\nforce a second metadata-update immediately.  There are already cases\nwhere a second metadata-update is needed immediately (e.g. when a\ndevice fails during the metadata update).  We just piggy-back on that.\n\nReported-by: Joe Bryant \u003ctenminjoe@yahoo.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "f2859af6716ce99cac7f35c5a0c6b7fed346312f",
      "tree": "37d1af49ce710098bc35d45c7a9aec6e6f8eb5d9",
      "parents": [
        "bb7f8d2217d8753ab5008c78f16697d9e697d570"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sun May 02 10:04:16 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md: allow integers to be passed to md/level\n\ne.g. allow md to interpret \u0027echo 4 \u003e md/level\u0027 as a request for raid4.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "bb7f8d2217d8753ab5008c78f16697d9e697d570",
      "tree": "5717c254192b171215bbb8358f68646c3b2e1326",
      "parents": [
        "f1b29bcae116409db5e543622aadab43041c9ae9"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:14:57 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md: notify mdstat waiters of level change\n\nLevel modifications change the output of mdstat.  The mdmon manager\nthread is interested in these events for external metadata management.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "9e35b99c7efacfddc748c89a0c53b1122b0ee72c",
      "tree": "5ef48fad2c5de4269cdacdb83a01e41e64683ae5",
      "parents": [
        "fafd7fb052182e087b5a3c6c408e4ac8c2b5fa14"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 06 14:23:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:56 2010 +1000"
      },
      "message": "md: don\u0027t unregister the thread in mddev_suspend\n\nThis is\n - unnecessary because mddev_suspend is always followed by a call to\n   -\u003estop, and each -\u003estop unregisters the thread, and\n - a problem as it makes it awkwards to suspend and then resume a\n   device as we will want later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fafd7fb052182e087b5a3c6c408e4ac8c2b5fa14",
      "tree": "0071eab25a38b69a792fb25c3efffbd98609fc18",
      "parents": [
        "21a52c6d05c15f862797736393915bfa8cd40ee9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:55:30 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: factor out init code for an mddev\n\nThis is a simple factorisation that makes mddev_find easier to read.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "21a52c6d05c15f862797736393915bfa8cd40ee9",
      "tree": "44ffb633d209457979177a52132761a368fcb976",
      "parents": [
        "cca9cf90c504d98644ace52c474770970729f0eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:02:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: pass mddev to make_request functions rather than request_queue\n\nWe used to pass the personality make_request function direct\nto the block layer so the first argument had to be a queue.\nBut now we have the intermediary md_make_request so it makes\nat lot more sense to pass a struct mddev_s.\nIt makes it possible to have an mddev without its own queue too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cca9cf90c504d98644ace52c474770970729f0eb",
      "tree": "d825b55dc2f8742b210479d2af1804b5b31dd791",
      "parents": [
        "a4bd82d0d03b1485975579f131ccfd0aad6b7d6e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 12:08:16 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:54 2010 +1000"
      },
      "message": "md: call md_stop_writes from md_stop\n\nThis moves the call to the other side of set_readonly, but that should\nnot be an issue.\nThis encapsulates in \u0027md_stop\u0027 all of the functionality for internally\nstopping the array, leaving all the interactions with externalities\n(sysfs, request_queue, gendisk) in do_md_stop.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a4bd82d0d03b1485975579f131ccfd0aad6b7d6e",
      "tree": "7e560963b71f26fc487a1cd932f4b684bd3b3e62",
      "parents": [
        "a047e125403112ceb4d41e68307a2e7498ddba4e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 13:23:10 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:54 2010 +1000"
      },
      "message": "md: split md_set_readonly out of do_md_stop\n\nUsing do_md_stop to set an array to read-only is a little confusing.\nNow most of the common code has been factored out, split\nmd_set_readonly off in to a separate function.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a047e125403112ceb4d41e68307a2e7498ddba4e",
      "tree": "392928f408e3a6a2d40a7c3b6a178fbb3c411e06",
      "parents": [
        "6177b472ab14e1ac88896960370dd54ba577d926"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 12:07:53 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:54 2010 +1000"
      },
      "message": "md: factor md_stop_writes out of do_md_stop.\n\nFurther refactoring of do_md_stop.\nThis one requires some explanation as it takes code from different\nplaces in do_md_stop, so some re-ordering happens.\n\nWe only get into this part of do_md_stop if there are no active opens\nof the device, so no writes can be happening and the device must have\nbeen flushed.  In md_stop_writes we want to stop any internal sources\nof writes - i.e. resync - and flush out the metadata.\n\nThe only code that was previously before some of this code is\ncode to clean up the queue, the mddev, the gendisk, or sysfs, all\nof which is probably better after code that makes active changes (i.e.\ntriggers writes).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6177b472ab14e1ac88896960370dd54ba577d926",
      "tree": "387eec24b0ac82e028edfdd77d8b425077ca0bfb",
      "parents": [
        "fe60b0142813002be16dfae28780d9779ee22473"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:37:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: start to refactor do_md_stop\n\ndo_md_stop is large and clunky, so hard to understand.\n\nThis is a first step of refactoring, pulling two simple\nsub-functions out.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fe60b0142813002be16dfae28780d9779ee22473",
      "tree": "1b2337036bbb30857531cd2d54729d38fdd75a3a",
      "parents": [
        "b821eaa572fd737faaf6928ba046e571526c36c6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:10:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: factor do_md_run to separate accesses to -\u003egendisk\n\nAs part of relaxing the binding between an mddev and gendisk,\nwe separate do_md_run into two functions.\n  md_run does all the work internal to md\n  do_md_run calls md_run and makes and changes to gendisk\n     that are required.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b821eaa572fd737faaf6928ba046e571526c36c6",
      "tree": "0db462a3c7da3dbf42d28e2483a27d78839b4589",
      "parents": [
        "49ce6cea85fb8d25ee59486c919406e9cecf1762"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:18:15 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: remove -\u003echanged and related code.\n\nWe set -\u003echanged to 1 and call check_disk_change at the end\nof md_open so that bd_invalidated would be set and thus\npartition rescan would happen appropriately.\n\nNow that we call revalidate_disk directly, which sets bd_invalidates,\nthat indirection is no longer needed and can be removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "49ce6cea85fb8d25ee59486c919406e9cecf1762",
      "tree": "36ff1804090759c0b43593feb8880b15121d13e9",
      "parents": [
        "490773268cf64f68da2470e07b52c7944da6312d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 10:51:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: don\u0027t reference gendisk in getgeo\n\nUsing -\u003earray_sectors rather than get_capacity() is more\ndirect and is a step towards relaxing the tight connection\nbetween mddev and gendisk.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "490773268cf64f68da2470e07b52c7944da6312d",
      "tree": "d394aafa7203c316db6b63f128b8894e18993fca",
      "parents": [
        "2b7f22284d71975e37a82db154386348eec0e52c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:20:56 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: move io accounting out of personalities into md_make_request\n\nWhile I generally prefer letting personalities do as much as possible,\ngiven that we have a central md_make_request anyway we may as well use\nit to simplify code.\nAlso this centralises knowledge of -\u003egendisk which will help later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5cac7861b2de95a1f714ebdc652813abd0afcc73",
      "tree": "552bc6200817c6872f403ab54a50e8c5f7a594fa",
      "parents": [
        "233fca36bb439eadcad28500b5139fed7c64a0ae"
      ],
      "author": {
        "name": "Maciej Trela",
        "email": "Maciej.Trela@intel.com",
        "time": "Wed Apr 14 17:17:39 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:49 2010 +1000"
      },
      "message": "md: notify level changes through sysfs.\n\nLevel changes can be very significant, so make sure\nto notify them via sysfs.\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "233fca36bb439eadcad28500b5139fed7c64a0ae",
      "tree": "dfaec050a24564da4d05ec0e21cd814375eae1e8",
      "parents": [
        "b71031076e1169e89bdac1b245ad1488587e4730"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 14 17:02:09 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:49 2010 +1000"
      },
      "message": "md: Relax checks on -\u003emax_disks when external metadata handling is used.\n\nWhen metadata is being managed by user-space, md doesn\u0027t know\nwhat the maximum number of devices allowed in an array is\nso -\u003emax_disks is 0.  In this case we should allow any (+ve)\nnumber of disks.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b71031076e1169e89bdac1b245ad1488587e4730",
      "tree": "b67a3ffc0263a7e380a9545ca066aea7cc46003b",
      "parents": [
        "dab8b29248b3f14f456651a2a6ee9b8fd16d1b3c"
      ],
      "author": {
        "name": "Maciej Trela",
        "email": "Maciej.Trela@intel.com",
        "time": "Wed Apr 14 16:58:16 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:48 2010 +1000"
      },
      "message": "md: Correctly handle device removal via sysfs\n\nWriting \"none\" to \"../md/dev-xx/slot\" removes that device\nfrom being an active part of the array, but it didn\u0027t\nset -\u003eraid_disk to -1 to record this fact.\n\n\nSigned-off-by: Maciej Trela \u003cMaciej.Trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9af204cf720cedf369cf823bbd806c350201f7ea",
      "tree": "6aa684772cc1ba978e9dd0f67c3e0d5592588ca3",
      "parents": [
        "54071b3808ee3dc8624d9d6f1b06c4fd5308fa3b"
      ],
      "author": {
        "name": "Trela, Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:44 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:48 2010 +1000"
      },
      "message": "md: Add support for Raid5-\u003eRaid0 and Raid10-\u003eRaid0 takeover\n\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "54071b3808ee3dc8624d9d6f1b06c4fd5308fa3b",
      "tree": "b254ce6625ce3dd472faac0d59edeb9589b30f2b",
      "parents": [
        "84707f38e767ac470fd82af6c45a8cafe2bd1b9a"
      ],
      "author": {
        "name": "Trela Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:47 2010 +1000"
      },
      "message": "md:Add support for Raid0-\u003eRaid5 takeover\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c0cc75f84e0e413bce2dcabea74ef418da45c7c1",
      "tree": "f5723fbd0f5828cadaeec650abb8066ad52fad71",
      "parents": [
        "7b92813c3c0b6990f14838e3985fb385d2655d0c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 22 10:28:51 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:47 2010 +1000"
      },
      "message": "md: discard StateChanged device flag.\n\nThis was needed when sysfs files could only be \u0027notified\u0027\nfrom process context.  Now that we have sys_notify_direct,\nwe can call it directly from an interrupt.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a64c876fd357906a1f7193723866562ad290654c",
      "tree": "077fcdab730d40227585025bf15bf8e027949a29",
      "parents": [
        "b6eb127d274385d81ce8dd45c98190f097bce1b4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 14 17:15:37 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:45:40 2010 +1000"
      },
      "message": "md: manage redundancy group in sysfs when changing level.\n\nSome levels expect the \u0027redundancy group\u0027 to be present,\nothers don\u0027t.\nSo when we change level of an array we might need to\nadd or remove this group.\n\nThis requires fixing up the current practice of overloading -\u003eprivate\nto indicate (when -\u003epers \u003d\u003d NULL) that something needs to be removed.\nSo create a new -\u003eto_remove to fill that role.\n\nWhen changing levels, we may need to add or remove attributes.  When\nchanging RAID5 -\u003e RAID6, we both add and remove the same thing.  It is\nimportant to catch this and optimise it out as the removal is delayed\nuntil a lock is released, so trying to add immediately would cause\nproblems.\n\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b6eb127d274385d81ce8dd45c98190f097bce1b4",
      "tree": "a78eb14056ade77c0026b1106e9a2cd486a762e6",
      "parents": [
        "ef2f80ff7325b2c1888ff02ead28957b5840bf51"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 15 10:13:47 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:40:07 2010 +1000"
      },
      "message": "md: remove unneeded sysfs files more promptly\n\nWhen an array is stopped we need to remove some\nsysfs files which are dependent on the type of array.\n\nWe need to delay that deletion as deleting them while holding\nreconfig_mutex can lead to deadlocks.\n\nWe currently delay them until the array is completely destroyed.\nHowever it is possible to deactivate and then reactivate the array.\nIt is also possible to need to remove sysfs files when changing level,\nwhich can potentially happen several times before an array is\ndestroyed.\n\nSo we need to delete these files more promptly: as soon as\nreconfig_mutex is dropped.\n\nWe need to ensure this happens before do_md_run can restart the array,\nso we use open_mutex for some extra locking.  This is not deadlock\nprone.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e2218350465e7e0931676b4849b594c978437bce",
      "tree": "395398081c277c533d28edd70d08a9394e7d8597",
      "parents": [
        "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed May 12 08:25:37 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed May 12 08:25:37 2010 +1000"
      },
      "message": "md: set mddev readonly flag on blkdev BLKROSET ioctl\n\nWhen the user sets the block device to readwrite then the mddev should\nfollow suit.  Otherwise, the BUG_ON in md_write_start() will be set to\ntrigger.\n\nThe reverse direction, setting mddev-\u003ero to match a set readonly\nrequest, can be ignored because the blkdev level readonly flag precludes\nthe need to have mddev-\u003ero set correctly.  Nevermind the fact that\nsetting mddev-\u003ero to 1 may fail if the array is in use.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1176568de7e066c0be9e46c37503b9fd4730edcf",
      "tree": "8af6ab7cd59ef6a615048ef31d922aee76cadd57",
      "parents": [
        "87aa63000c484bfb9909989316f615240dfee018"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 19:44:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 21:10:57 2010 +1000"
      },
      "message": "md: restore ability of spare drives to spin down.\n\nSome time ago we stopped the clean/active metadata updates\nfrom being written to a \u0027spare\u0027 device in most cases so that\nit could spin down and say spun down.  Device failure/removal\netc are still recorded on spares.\n\nHowever commit 51d5668cb2e3fd1827a55 broke this 50% of the time,\ndepending on whether the event count is even or odd.\nThe change log entry said:\n\n   This means that the alignment between \u0027odd/even\u0027 and\n    \u0027clean/dirty\u0027 might take a little longer to attain,\n\nhow ever the code makes no attempt to create that alignment, so it\ncould take arbitrarily long.\n\nSo when we find that clean/dirty is not aligned with odd/even,\nforce a second metadata-update immediately.  There are already cases\nwhere a second metadata-update is needed immediately (e.g. when a\ndevice fails during the metadata update).  We just piggy-back on that.\n\nReported-by: Joe Bryant \u003ctenminjoe@yahoo.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "ef286f6fa673cd7fb367e1b145069d8dbfcc6081",
      "tree": "957760503c1b1a417850db3204d6c010d1ce1a67",
      "parents": [
        "9eb07c259207d048e3ee8be2a77b2a4680b1edd4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 10 11:26:09 2010 +1100"
      },
      "message": "md: fix some lockdep issues between md and sysfs.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nThis fix is related to\n    http://bugzilla.kernel.org/show_bug.cgi?id\u003d15142\nbut does not address that exact issue.\n\u003d\u003d\u003d\u003d\u003d\u003d\n\nsysfs does like attributes being removed while they are being accessed\n(i.e. read or written) and waits for the access to complete.\n\nAs accessing some md attributes takes the same lock that is held while\nremoving those attributes a deadlock can occur.\n\nThis patch addresses 3 issues in md that could lead to this deadlock.\n\nTwo relate to calling flush_scheduled_work while the lock is held.\nThis is probably a bad idea in general and as we use schedule_work to\ndelete various sysfs objects it is particularly bad.\n\nIn one case flush_scheduled_work is called from md_alloc (called by\nmd_probe) called from do_md_run which holds the lock.  This call is\nonly present to ensure that -\u003egendisk is set.  However we can be sure\nthat gendisk is always set (though possibly we couldn\u0027t when that code\nwas originally written.  This is because do_md_run is called in three\ndifferent contexts:\n  1/ from md_ioctl.  This requires that md_open has succeeded, and it\n     fails if -\u003egendisk is not set.\n  2/ from writing a sysfs attribute.  This can only happen if the\n     mddev has been registered in sysfs which happens in md_alloc\n     after -\u003egendisk has been set.\n  3/ from autorun_array which is only called by autorun_devices, which\n     checks for -\u003egendisk to be set before calling autorun_array.\nSo the call to md_probe in do_md_run can be removed, and the check on\n-\u003egendisk can also go.\n\n\nIn the other case flush_scheduled_work is being called in do_md_stop,\npurportedly to wait for all md_delayed_delete calls (which delete the\ncomponent rdevs) to complete.  However there really isn\u0027t any need to\nwait for them - they have already been disconnected in all important\nways.\n\nThe third issue is that raid5-\u003estop() removes some attribute names\nwhile the lock is held.  There is already some infrastructure in place\nto delay attribute removal until after the lock is released (using\nschedule_work).  So extend that infrastructure to remove the\nraid5_attrs_group.\n\nThis does not address all lockdep issues related to the sysfs\n\"s_active\" lock.  The rest can be address by splitting that lockdep\ncontext between symlinks and non-symlinks which hopefully will happen.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "404e4b43fdd6daa7b4a9f81bc7e4358281d763fa",
      "tree": "7a013e233db56b7c90cf0857d6c3bc74c19cf07f",
      "parents": [
        "7fb9dadc91948ddd16d1d32e414b5e71ec63b97b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:25:23 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:25:23 2009 +1100"
      },
      "message": "md: allow a resync that is waiting for other resync to complete, to be aborted.\n\nIf two arrays share a device, then they will not both resync at the\nsame time.  One will wait for the other to complete.\nWhile waiting, the MD_RECOVERY_INTR flag is not checked so a device\nfailure, which would make the resync pointless, does not cause the\nresync to abort, so the failed device cannot be removed (as it cannot\nbe remove while a resync is happening).\n\nSo add a test for MD_RECOVERY_INTR.\n\nReported-by: Brett Russ \u003cbruss@netezza.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7fb9dadc91948ddd16d1d32e414b5e71ec63b97b",
      "tree": "d64379c9b336a2792f1877383bdcdd92e837070b",
      "parents": [
        "a2d79c324ac0c26ae9995a312a7731067a7f01fc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:19:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:43 2009 +1100"
      },
      "message": "md: remove unnecessary code from do_md_run\n\nSince commit dfc7064500061677720fa26352963c772d3ebe6b,\n-\u003ehot_remove_disks has not removed non-failed devices from\nan array until recovery is no longer possible.\nSo the code in do_md_run to get around the fact that\nmd_check_recovery (which calls -\u003ehot_remove_disks) would\nremove partially-in-sync devices is no longer needed.\n\nSo remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2d79c324ac0c26ae9995a312a7731067a7f01fc",
      "tree": "bf9418f4fe8ab86eaf5519be6f1beb363dc64bda",
      "parents": [
        "0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Dec 21 18:18:36 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:31 2009 +1100"
      },
      "message": "md: make recovery started by do_md_run() visible via sync_action\n\nBy default md_do_sync() will perform recovery if no other actions are\nspecified.  However, action_show() relies on MD_RECOVERY_RECOVER to be\nset otherwise it returns \u0027idle\u0027.  So, add a missing set\nMD_RECOVERY_RECOVER when starting recovery.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9",
      "tree": "14f29af551fc226dc4451f1089d4f08dc2611c0d",
      "parents": [
        "cbd1998377504df005302ac90d49db72a48552a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:50 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:12 2009 +1100"
      },
      "message": "md: fix small irregularity with start_ro module parameter\n\nThe start_ro modules parameter can be used to force arrays to be\nstarted in \u0027auto-readonly\u0027 in which they are read-only until the first\nwrite.  This ensures that no resync/recovery happens until something\nelse writes to the device.  This is important for resume-from-disk\noff an md array.\n\nHowever if an array is started \u0027readonly\u0027 (by writing \u0027readonly\u0027 to\nthe \u0027array_state\u0027 sysfs attribute) we want it to be really \u0027readonly\u0027,\nnot \u0027auto-readonly\u0027.\n\nSo strengthen the condition to only set auto-readonly if the\narray is not already read-only.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cbd1998377504df005302ac90d49db72a48552a6",
      "tree": "f5c0d83ebe8534477bd252204da804640fd5413b",
      "parents": [
        "6b7b284958d47b77d06745b36bc7f36dab769d9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:49 2009 +1100"
      },
      "message": "md: Fix unfortunate interaction with evms\n\nevms configures md arrays by:\n  open device\n  send ioctl\n  close device\n\nfor each different ioctl needed.\nSince 2.6.29, the device can disappear after the \u0027close\u0027\nunless a significant configuration has happened to the device.\nThe change made by \"SET_ARRAY_INFO\" can too minor to stop the device\nfrom disappearing, but important enough that losing the change is bad.\n\nSo: make sure SET_ARRAY_INFO sets mddev-\u003ectime, and keep the device\nactive as long as ctime is non-zero (it gets zeroed with lots of other\nthings when the array is stopped).\n\nThis is suitable for -stable kernels since 2.6.29.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org"
    },
    {
      "commit": "7b75c2f8cf6d938b571d3bc3f566f883ab7472c4",
      "tree": "480a924c730a56dfb06a0bec92b63e9086aa8287",
      "parents": [
        "bc058f65e8c7d83c139692e1c26513d3187dd744"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:01:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:33 2009 -0800"
      },
      "message": "drivers/md/md.c: use %pU to print UUIDs\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7d2860b690d4f3bed6824757c540579638e3d1e",
      "tree": "84268ee28893256fd6a6a7e1d4474f61dbee74e7",
      "parents": [
        "84c95c9acf088c99d8793d78036b67faa5d0b851"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:01:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:32 2009 -0800"
      },
      "message": "tree-wide: convert open calls to remove spaces to skip_spaces() lib function\n\nMakes use of skip_spaces() defined in lib/string.c for removing leading\nspaces from strings all over the tree.\n\nIt decreases lib.a code size by 47 bytes and reuses the function tree-wide:\n   text    data     bss     dec     hex filename\n  64688     584     592   65864   10148 (TOTALS-BEFORE)\n  64641     584     592   65817   10119 (TOTALS-AFTER)\n\nAlso, while at it, if we see (*str \u0026\u0026 isspace(*str)), we can be sure to\nremove the first condition (*str) as the second one (isspace(*str)) also\nevaluates to 0 whenever *str \u003d\u003d 0, making it redundant. In other words,\n\"a char equals zero is never a space\".\n\nJulia Lawall tried the semantic patch (http://coccinelle.lip6.fr) below,\nand found occurrences of this pattern on 3 more files:\n    drivers/leds/led-class.c\n    drivers/leds/ledtrig-timer.c\n    drivers/video/output.c\n\n@@\nexpression str;\n@@\n\n( // ignore skip_spaces cases\nwhile (*str \u0026\u0026  isspace(*str)) { \\(str++;\\|++str;\\) }\n|\n- *str \u0026\u0026\nisspace(*str)\n)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Richard Purdie \u003crpurdie@rpsys.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Takashi Iwai \u003ctiwai@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": "06e3c817b750c131a20e82eed57a17841ea88ed2",
      "tree": "55da529f662c29da5b5fd202b5ece9fb907aa431",
      "parents": [
        "4e59ca7da05f0d5d3ad40365c502c8b0fd24c7e3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Dec 12 21:17:12 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:58:57 2009 +1100"
      },
      "message": "md: add \u0027recovery_start\u0027 per-device sysfs attribute\n\nEnable external metadata arrays to manage rebuild checkpointing via a\nmd/dev-XXX/recovery_start attribute which reflects rdev-\u003erecovery_offset\n\nAlso update resync_start_store to allow \u0027none\u0027 to be written, for\nconsistency.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e"
    },
    {
      "commit": "4e59ca7da05f0d5d3ad40365c502c8b0fd24c7e3",
      "tree": "d5ddc749ec13db16c1ed7a054546c2ea482c0e1e",
      "parents": [
        "93be75ffde6dfd1ad17cc3ff1dbd135bd711baf4"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Dec 12 21:17:06 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:57:43 2009 +1100"
      },
      "message": "md: rcu_read_lock() walk of mddev-\u003edisks in md_do_sync()\n\nOther walks of this list are either under rcu_read_lock() or the list\nmutation lock (mddev_lock()).  This protects against the improbable case of a\ndisk being removed from the array at the start of md_do_sync().\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "93be75ffde6dfd1ad17cc3ff1dbd135bd711baf4",
      "tree": "56006efccad176da1b806978faf60d77c817e6ac",
      "parents": [
        "aa98aa31987ad9831711ae71ea2270228ab62532"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:50:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: integrate spares into array at earliest opportunity.\n\nAs v1.x metadata can record that a member of the array is\nnot completely recovered, it make sense to record that a\nspare has become a regular member of the array at the earliest\nopportunity.\nSo remove the tests on \"recovery_offset \u003e 0\" in super_1_sync\nas they really aren\u0027t needed, and schedule a metadata update\nimmediately after adding spares to a degraded array.\n\nThis means that if a crash happens immediately after a recovery\nstarts, the new device will be included in the array and recovery will\ncontinue from wherever it was up to.  Previously this didn\u0027t happen\nunless recovery was at least 1/16 of the way through.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aa98aa31987ad9831711ae71ea2270228ab62532",
      "tree": "736036691f07fe4b7d18064aaa0ace5d76b73cf6",
      "parents": [
        "93bd89a6d5f268acbdb8d775e40d3a280b07b5bd"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Dec 14 12:50:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: move compat_ioctl handling into md.c\n\nThe RAID ioctls are only implemented in md.c, so the\nhandling for them should also be moved there from\nfs/compat_ioctl.c.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Andre Noll \u003cmaan@systemlinux.org\u003e\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0efb9e6191e1d3d34c1db90b829b742bc36d532e",
      "tree": "5960d97df87a7eeea56d7dbe801259fc43398d5e",
      "parents": [
        "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: add MODULE_DESCRIPTION for all md related modules.\n\nSuggested by  Oren Held \u003corenhe@il.ibm.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d",
      "tree": "7a722ad6f56c61a6173493f1cd44d809c8b1bd8d",
      "parents": [
        "67b8dc4b06b0e97df55fd76e209f34f9a52e820e"
      ],
      "author": {
        "name": "Robert Becker",
        "email": "Rob.Becker@riverbed.com",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "raid: improve MD/raid10 handling of correctable read errors.\n\nWe\u0027ve noticed severe lasting performance degradation of our raid\narrays when we have drives that yield large amounts of media errors.\nThe raid10 module will queue each failed read for retry, and also\nwill attempt call fix_read_error() to perform the read recovery.\nRead recovery is performed while the array is frozen, so repeated\nrecovery attempts can degrade the performance of the array for\nextended periods of time.\n\nWith this patch I propose adding a per md device max number of\ncorrected read attempts.  Each rdev will maintain a count of\nread correction attempts in the rdev-\u003eread_errors field (not\nused currently for raid10). When we enter fix_read_error()\nwe\u0027ll check to see when the last read error occurred, and\ndivide the read error count by 2 for every hour since the\nlast read error. If at that point our read error count\nexceeds the read error threshold, we\u0027ll fail the raid device.\n\nIn addition in this patch I add sysfs nodes (get/set) for\nthe per md max_read_errors attribute, the rdev-\u003eread_errors\nattribute, and added some printk\u0027s to indicate when\nfix_read_error fails to repair an rdev.\n\nFor testing I used debugfs-\u003efail_make_request to inject\nIO errors to the rdev while doing IO to the raid array.\n\nSigned-off-by: Robert Becker \u003cRob.Becker@riverbed.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43a705076e51c5af21ec4260a35699775ea298f5",
      "tree": "ff8e161d841c41992dbbcca2a844816411941c3c",
      "parents": [
        "72e02075a33f739e21430262f71da8e82db9dbb3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:55 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: support updating bitmap parameters via sysfs.\n\nA new attribute directory \u0027bitmap\u0027 in \u0027md\u0027 is created which\ncontains files for configuring the bitmap.\n\u0027location\u0027 identifies where the bitmap is, either \u0027none\u0027,\nor \u0027file\u0027 or \u0027sector offset from metadata\u0027.\nWriting \u0027location\u0027 can create or remove a bitmap.\nAdding a \u0027file\u0027 bitmap this way is not yet supported.\n\u0027chunksize\u0027 and \u0027time_base\u0027 must be set before \u0027location\u0027\ncan be set.\n\n\u0027chunksize\u0027 can be set before creating a bitmap, but is\ncurrently always over-ridden by the bitmap superblock.\n\n\u0027time_base\u0027 and \u0027backlog\u0027 can be updated at any time.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "72e02075a33f739e21430262f71da8e82db9dbb3",
      "tree": "04a87a16751b714fe0fb41f28ccc54af9f820de1",
      "parents": [
        "f6af949c5672115313cc3c976d85b0533f607d7e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:55 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: factor out parsing of fixed-point numbers\n\nsafe_delay_store can parse fixed point numbers (for fractions\nof a second).  We will want to do that for another sysfs\nfile soon, so factor out the code.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "42a04b5078ce73a32f85762551d5703c5bd646a1",
      "tree": "3ef384933cd33d000516c292712da9a99e273360",
      "parents": [
        "c3d9714e88c8685cf9bc837c3241fc005f95fb82"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:53 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: move offset, daemon_sleep and chunksize out of bitmap structure\n\n... and into bitmap_info.  These are all configuration parameters\nthat need to be set before the bitmap is created.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c3d9714e88c8685cf9bc837c3241fc005f95fb82",
      "tree": "dd11e16ec911983bb7452bb4fb092769ba612e3b",
      "parents": [
        "709ae4879ae33628ded276ce7da8cd5acfec476b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:52 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: collect bitmap-specific fields into one structure.\n\nIn preparation for making bitmap fields configurable via sysfs,\nstart tidying up by making a single structure to contain the\nconfiguration fields.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2826aa92e2e14db372eda01d333267258944033",
      "tree": "9cdd3329205bf480a4782705a3db1738e3faae44",
      "parents": [
        "efa593390e70b0e3c39f6b2dca8876b6b1461e41"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "message": "md: support barrier requests on all personalities.\n\nPreviously barriers were only supported on RAID1.  This is because\nother levels requires synchronisation across all devices and so needed\na different approach.\nHere is that approach.\n\nWhen a barrier arrives, we send a zero-length barrier to every active\ndevice.  When that completes - and if the original request was not\nempty -  we submit the barrier request itself (with the barrier flag\ncleared) and then submit a fresh load of zero length barriers.\n\nThe barrier request itself is asynchronous, but any subsequent\nrequest will block until the barrier completes.\n\nThe reason for clearing the barrier flag is that a barrier request is\nallowed to fail.  If we pass a non-empty barrier through a striping\nraid level it is conceivable that part of it could succeed and part\ncould fail.  That would be way too hard to deal with.\nSo if the first run of zero length barriers succeed, we assume all is\nsufficiently well that we send the request and ignore errors in the\nsecond run of barriers.\n\nRAID5 needs extra care as write requests may not have been submitted\nto the underlying devices yet.  So we flush the stripe cache before\nproceeding with the barrier.\n\nNote that the second set of zero-length barriers are submitted\nimmediately after the original request is submitted.  Thus when\na personality finds mddev-\u003ebarrier to be set during make_request,\nit should not return from make_request until the corresponding\nper-device request(s) have been queued.\n\nThat will be done in later patches.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "efa593390e70b0e3c39f6b2dca8876b6b1461e41",
      "tree": "99c6071381f14f5ff59130779d988672aa78ee67",
      "parents": [
        "c07b70ad32ed0a5ec9735cafb1aa10b3a2298b7d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "message": "md: don\u0027t reset curr_resync_completed after an interrupted resync\n\nIf a resync/recovery/check/repair is interrupted for some reason, it\ncan be useful to know exactly where it got up to.\nSo in that case, do not clear curr_resync_completed.\nInitialise it when starting a resync/recovery/... instead.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c07b70ad32ed0a5ec9735cafb1aa10b3a2298b7d",
      "tree": "451d88cd7e44ee8217a294335a04594bd573b828",
      "parents": [
        "7820f9e1dddcfebae2698fb2a245d04ce3aa6e74"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:48 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:48 2009 +1100"
      },
      "message": "md: adjust resync_min usefully when resync aborts.\n\nWhen a \u0027check\u0027 or \u0027repair\u0027 finished we should clear resync_min\nso that a future check/repair will cover the whole array (by default).\nHowever if it is interrupted, we should update resync_min to\nwhere we got up to, so that when the check/repair continues it\njust does the remainder of the array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aa5cbd103887011b4830355f88fb055f9ad2d556",
      "tree": "92ef7c80999c6d0bfc6fef9a9cd3e4a75ee16c06",
      "parents": [
        "f40542532e96dda5506eb76badea322f2ae4731c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:46 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:46 2009 +1100"
      },
      "message": "md/bitmap: protect against bitmap removal while being updated.\n\nA write intent bitmap can be removed from an array while the\narray is active.\nWhen this happens, all IO is suspended and flushed before the\nbitmap is removed.\nHowever it is possible that bitmap_daemon_work is still running to\nclear old bits from the bitmap.  If it is, it can dereference the\nbitmap after it has been freed.\n\nSo introduce a new mutex to protect bitmap_daemon_work and get it\nbefore destroying a bitmap.\n\nThis is suitable for any current -stable kernel.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "1557d33007f63dd96e5d15f33af389378e5f2e54",
      "tree": "06d05722b2ba5d2a67532f779fa8a88efe3c88f1",
      "parents": [
        "6ec22f9b037fc0c2e00ddb7023fad279c365324d",
        "c656ae95d1c5c8ed5763356263ace2d03087efec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 07:38:50 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 08 07:38:50 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/sysctl-2.6: (43 commits)\n  security/tomoyo: Remove now unnecessary handling of security_sysctl.\n  security/tomoyo: Add a special case to handle accesses through the internal proc mount.\n  sysctl: Drop \u0026 in front of every proc_handler.\n  sysctl: Remove CTL_NONE and CTL_UNNUMBERED\n  sysctl: kill dead ctl_handler definitions.\n  sysctl: Remove the last of the generic binary sysctl support\n  sysctl net: Remove unused binary sysctl code\n  sysctl security/tomoyo: Don\u0027t look at ctl_name\n  sysctl arm: Remove binary sysctl support\n  sysctl x86: Remove dead binary sysctl support\n  sysctl sh: Remove dead binary sysctl support\n  sysctl powerpc: Remove dead binary sysctl support\n  sysctl ia64: Remove dead binary sysctl support\n  sysctl s390: Remove dead sysctl binary support\n  sysctl frv: Remove dead binary sysctl support\n  sysctl mips/lasat: Remove dead binary sysctl support\n  sysctl drivers: Remove dead binary sysctl support\n  sysctl crypto: Remove dead binary sysctl support\n  sysctl security/keys: Remove dead binary sysctl support\n  sysctl kernel: Remove binary sysctl logic\n  ...\n"
    },
    {
      "commit": "6d4561110a3e9fa742aeec6717248a491dfb1878",
      "tree": "689e2abf19940416ce597ba56ed31026ff59bd21",
      "parents": [
        "86926d0096279b9739ceeff40f68d3c33b9119a9"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Mon Nov 16 03:11:48 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Wed Nov 18 08:37:40 2009 -0800"
      },
      "message": "sysctl: Drop \u0026 in front of every proc_handler.\n\nFor consistency drop \u0026 in front of every proc_handler.  Explicity\ntaking the address is unnecessary and it prevents optimizations\nlike stubbing the proc_handlers to NULL.\n\nCc: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "bb9074ff58fe745e4f244f76209241909c82ec9c",
      "tree": "cf6be00ab88b1e315f6b74a896a370440f677599",
      "parents": [
        "4739a9748e1bd7459f22f7e94e7d85710ca83954",
        "156171c71a0dc4bce12b4408bb1591f8fe32dc1a"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Nov 17 01:01:34 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Nov 17 01:01:34 2009 -0800"
      },
      "message": "Merge commit \u0027v2.6.32-rc7\u0027\n\nResolve the conflict between v2.6.32-rc7 where dn_def_dev_handler\ngets a small bug fix and the sysctl tree where I am removing all\nsysctl strategy routines.\n"
    },
    {
      "commit": "0261cd9f1cb42fa44ece314d27868d83742bdf03",
      "tree": "95954fb2e1a10ee1b20198b8fbefd7a8392dc896",
      "parents": [
        "5e8651060cea6b44844521ddcac665e2c021f5d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:48 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:48 2009 +1100"
      },
      "message": "md: allow v0.91 metadata to record devices as being active but not in-sync.\n\nThis is a combination that didn\u0027t really make sense before.\nHowever when a reshape is converting e.g. raid5 -\u003e raid6, the extra\ndevice is not fully in-sync, but is certainly active and contains\nimportant data.\nSo allow that start to be meaningful and in particular get\nthe \u0027recovery_offset\u0027 value (which is needed for any non-in-sync\nactive device) from the reshape_position.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "894d2491153a9f8270dbed21175d06fde4eba6c7",
      "tree": "e49698028c4a953f4b31363a0225c7fab28cffc0",
      "parents": [
        "c2a86a67fadd9dddc58f55ce6323c04dde59ebed"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 05 14:34:02 2009 -0800"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Thu Nov 12 02:04:58 2009 -0800"
      },
      "message": "sysctl drivers: Remove dead binary sysctl support\n\nNow that sys_sysctl is a wrapper around /proc/sys all of\nthe binary sysctl support elsewhere in the tree is\ndead code.\n\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Corey Minyard \u003cminyard@acm.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\nCc: Matt Mackall \u003cmpm@selenic.com\u003e\nCc: Herbert Xu \u003cherbert@gondor.apana.org.au\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"James E.J. Bottomley\" \u003cJames.Bottomley@suse.de\u003e\nAcked-by: Clemens Ladisch \u003cclemens@ladisch.de\u003e for drivers/char/hpet.c\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "5e8651060cea6b44844521ddcac665e2c021f5d8",
      "tree": "56a2a3de85fae3f7e210c54a9cda305b0341c334",
      "parents": [
        "8dee7211467a56b7eb4e4359efb0aa4a72e1b6f3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 12 12:08:04 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Nov 12 12:08:04 2009 +1100"
      },
      "message": "md: factor out updating of \u0027recovery_offset\u0027.\n\nEach device has its own \u0027recovery_offset\u0027 showing how far\nrecovery has progressed on the device.\nAs the only real significance of this is that fact that it can\nbe stored in the metadata and recovered at restart, and as\nonly 1.x metadata can do this, we were only updating\n\u0027recovery_offset\u0027 to \u0027curr_resync_completed\u0027 when updating\nv1.x metadata.\nBut this is wrong, and we will shortly make limited use of this\nfield in v0.90 metadata.\n\nSo move the update into common code.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "24395a85d8efe6eee477ea35c73d045a8dd7a3a1",
      "tree": "eeb32daee4f1d44eaae636cfd19cc2c8e8af686a",
      "parents": [
        "b6727b12dd2ffb4a890eb5b13a298230c29ba45d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:27 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:27 2009 +1100"
      },
      "message": "md: don\u0027t clear endpoint for resync when resync is interrupted.\n\nIf a \u0027sync_max\u0027 has been set (via sysfs), it is wrong to clear it\nuntil a resync (or reshape or recovery ...) actually reached that\npoint.\nSo if a resync is interrupted (e.g. by device failure),\nleave \u0027resync_max\u0027 unchanged.\n\nThis is particularly important for \u0027reshape\u0027 operations that do not\nchange the size of the array.  For such operations mdadm needs to\nmonitor the reshape taking rolling backups of the section being\nreshaped.  If resync_max gets cleared, the reshape can get ahead of\nmdadm and then the backups that mdadm creates are useless.\n\nThis is suitable for 2.6.31.y stable kernels.\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e5e3e78ed9038b8f7112835d07084eefb9daa47",
      "tree": "afcefac7c0dbafb71f09d90812eecb2c6e4bc766",
      "parents": [
        "e4424fee1815f996dccd36be44d68ca160ec3e1b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "message": "md: Fix handling of raid5 array which is being reshaped to fewer devices.\n\nWhen a raid5 (or raid6) array is being reshaped to have fewer devices,\nconf-\u003eraid_disks is the latter and hence smaller number of devices.\nHowever sometimes we want to use a number which is the total number of\ncurrently required devices - the larger of the \u0027old\u0027 and \u0027new\u0027 sizes.\nBefore we implemented reducing the number of devices, this was always\n\u0027new\u0027 i.e. -\u003eraid_disks.\nNow we need max(raid_disks, previous_raid_disks) in those places.\n\nThis particularly affects assembling an array that was shutdown while\nin the middle of a reshape to fewer devices.\n\nmd.c needs a similar fix when interpreting the md metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3fa841d7e7266f6fcc1b3885b905f5153ba897d8",
      "tree": "7afa971a10eddcf52787340ea43fa1e910b5805b",
      "parents": [
        "0da3c6194ec2f32617b272df4505a1cf022faea5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "message": "md: report device as congested when suspended\n\nThis should writeback from coming when the device is temporarily\nsuspended.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0da3c6194ec2f32617b272df4505a1cf022faea5",
      "tree": "5864b61b8fac2e7477668bdb9a493d2a64d0b3dd",
      "parents": [
        "ee305acef5c7841dc25cc32e84bb94f744e1e9b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "message": "md: Improve name of threads created by md_register_thread\n\nThe management thread for raid4,5,6 arrays are all called\nmdX_raid5, independent of the actual raid level, which is wrong and\ncan be confusion.\n\nSo change md_register_thread to use the name from the personality\nunless no alternate name (like \u0027resync\u0027 or \u0027reshape\u0027) is given.\n\nThis is simpler and more correct.\n\nCc: Jinzc \u003czhenchengjin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a9f326ebf22a0de776815240fb76dabe139397ea",
      "tree": "4402ba08931cd0663aca077be4d26e66c91869bd",
      "parents": [
        "7fa07729e439a6184bd824746d06a49cca553f15"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "message": "md: remove sparse waring \"symbol xxx shadows an earlier one\"\n\nRename some variable and remove some duplicate definitions\nto avoid there warnings.  None of them are actual errors.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "83d5cde47dedf01b6a4a4331882cbc0a7eea3c2e",
      "tree": "f8ba5e263717d35cd444fcc65898d2ed352af1ae",
      "parents": [
        "7b021967c5e1463936042c8da72b550d3cabe9ac"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:13 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:25 2009 -0700"
      },
      "message": "const: make block_device_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "80ffb3cceaefa405f2ecd46d66500ed8d53efe74",
      "tree": "867d6ec951663255076ea42fab29a31eac4e51c0",
      "parents": [
        "4d484a4a7a5126410eed5f8dd329a33f6eeed068"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 18 10:35:26 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 18 10:35:26 2009 +1000"
      },
      "message": "Fix new incorrect error return from do_md_stop.\n\nRecent commit c8c00a6915a2e3d10416e8bdd3138429beb96210\nchanged the exit paths in do_md_stop and was not quite\ncareful enough.  There is one path were \u0027err\u0027 now needs\nto be cleared but it isn\u0027t.\nSo setting an array to readonly (with mdadm --readonly) will\nwork, but will incorrectly report and error: ENXIO.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4d484a4a7a5126410eed5f8dd329a33f6eeed068",
      "tree": "9fe49a23117adc2d475711f39a16c1718bab4b7f",
      "parents": [
        "1a67dde0abba36421a1257d01ba9de2f6d1c160a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:50 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:50 2009 +1000"
      },
      "message": "md: allow upper limit for resync/reshape to be set when array is read-only\n\nNormally we only allow the upper limit for a reshape to be decreased\nwhen the array not performing a sync/recovery/reshape, otherwise there\ncould be races.  But if an array is part-way through a reshape when it\nis assembled the reshape is started immediately leaving no window\nto set an upper bound.\n\nIf the array is started read-only, the reshape will be suspended until\nthe array becomes writable, so that provides a window during which it\nis perfectly safe to reduce the upper limit of a reshape.\n\nSo: allow the upper limit (sync_max) to be reduced even if the reshape\nthread is running, as long as the array is still read-only.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "51d5668cb2e3fd1827a55184e48606fff054c5be",
      "tree": "117824cc3a25c04c939856578105c6c93af6ac8b",
      "parents": [
        "c8c00a6915a2e3d10416e8bdd3138429beb96210"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 09:54:02 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 09:54:02 2009 +1000"
      },
      "message": "md: never advance \u0027events\u0027 counter by more than 1.\n\nWhen assembling arrays, md allows two devices to have different event\ncounts as long as the difference is only \u00271\u0027.  This is to cope with\na system failure between updating the metadata on two difference\ndevices.\n\nHowever there are currently times when we update the event count by\n2.  This was done to keep the event count even when the array is clean\nand odd when it is dirty, which allows us to avoid writing common\nupdate to spare devices and so allow those spares to go to sleep.\n\nThis is bad for the above reason.  So change it to never increase by\ntwo.  This means that the alignment between \u0027odd/even\u0027 and\n\u0027clean/dirty\u0027 might take a little longer to attain, but that is only a\nsmall cost.  The spares will get a few more updates but that will\nstill be spared (;-) most updates and can still go to sleep.\n\nPrior to this patch there was a small chance that after a crash an\narray would fail to assemble due to the overly large event count\nmismatch.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c8c00a6915a2e3d10416e8bdd3138429beb96210",
      "tree": "ecf06a9e2b08edefe707da450b52a69f818ec7d6",
      "parents": [
        "7b2aa037e878c939676675969983284a02958ae3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 10 12:50:52 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 10 12:50:52 2009 +1000"
      },
      "message": "Remove deadlock potential in md_open\n\nA recent commit:\n  commit 449aad3e25358812c43afc60918c5ad3819488e7\n\nintroduced the possibility of an A-B/B-A deadlock between\nbd_mutex and reconfig_mutex.\n\n__blkdev_get holds bd_mutex while calling md_open which takes\n   reconfig_mutex,\ndo_md_run is always called with reconfig_mutex held, and it now\n   takes bd_mutex in the call the revalidate_disk.\n\nThis potential deadlock was not caught by lockdep due to the\nuse of mutex_lock_interruptible_nexted which was introduced\nby\n   commit d63a5a74dee87883fda6b7d170244acaac5b05e8\ndo avoid a warning of an impossible deadlock.\n\nIt is quite possible to split reconfig_mutex in to two locks.\nOne protects the array data structures while it is being\nreconfigured, the other ensures that an array is never even partially\nopen while it is being deactivated.\nIn particular, the second lock prevents an open from completing\nbetween the time when do_md_stop checks if there are any active opens,\nand the time when the array is either set read-only, or when -\u003epers is\nset to NULL.  So we can be certain that no IO is in flight as the\narray is being destroyed.\n\nSo create a new lock, open_mutex, just to ensure exclusion between\n\u0027open\u0027 and \u0027stop\u0027.\n\nThis avoids the deadlock and also avoids the lockdep warning mentioned\nin commit d63a5a74d\n\nReported-by: \"Mike Snitzer\" \u003csnitzer@gmail.com\u003e\nReported-by: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "449aad3e25358812c43afc60918c5ad3819488e7",
      "tree": "45fab3b82fc1ed06959537a0801319045cf4c102",
      "parents": [
        "64bd660b51b2da92e99a5e97349f6558349f11c5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: Use revalidate_disk to effect changes in size of device.\n\nAs revalidate_disk calls check_disk_size_change, it will cause\nany capacity change of a gendisk to be propagated to the blockdev\ninode.  So use that instead of mucking about with locks and\ni_size_write.\n\nAlso add a call to revalidate_disk in do_md_run and a few other places\nwhere the gendisk capacity is changed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70471dafe3390243c598a3165dfb86b8b8b3f4fe",
      "tree": "febb8dfdbbb981370e1ea046714628bf6b790e5a",
      "parents": [
        "3673f305faf1bc66ead751344f8262ace851ff44"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "message": "md: Handle growth of v1.x metadata correctly.\n\nThe v1.x metadata does not have a fixed size and can grow\nwhen devices are added.\nIf it grows enough to require an extra sector of storage,\nwe need to update the \u0027sb_size\u0027 to match.\n\nWithout this, md can write out an incomplete superblock with a\nbad checksum, which will be rejected when trying to re-assemble\nthe array.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3673f305faf1bc66ead751344f8262ace851ff44",
      "tree": "4cbdd23d9af20632678e95b3e8f02ede241a3917",
      "parents": [
        "3a981b03f38dc3b8a69b77cbc679e66c1318a44a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:56 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:56 2009 +1000"
      },
      "message": "md: avoid array overflow with bad v1.x metadata\n\nWe trust the \u0027desc_nr\u0027 field in v1.x metadata enough to use it\nas an index in an array.  This isn\u0027t really safe.\nSo range-check the value first.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3a981b03f38dc3b8a69b77cbc679e66c1318a44a",
      "tree": "7f8b0747385a02c793edd7df30d34c4c9c95b1a5",
      "parents": [
        "ac5e7113e74872928844d00085bd47c988f12728"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:55 2009 +1000"
      },
      "message": "md: when a level change reduces the number of devices, remove the excess.\n\nWhen an array is changed from RAID6 to RAID5, fewer drives are\nneeded.  So any device that is made superfluous by the level\nconversion must be marked as not-active.\nFor the RAID6-\u003eRAID5 conversion, this will be a drive which only\nhas \u0027Q\u0027 blocks on it.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac5e7113e74872928844d00085bd47c988f12728",
      "tree": "dabce6a99c2af9f00b33660f6b2d906cce836764",
      "parents": [
        "95fc17aac45300f45968aacd97a536ddd8db8101"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Aug 03 10:59:47 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:47 2009 +1000"
      },
      "message": "md: Push down data integrity code to personalities.\n\nThis patch replaces md_integrity_check() by two new public functions:\nmd_integrity_register() and md_integrity_add_rdev() which are both\npersonality-independent.\n\nmd_integrity_register() is called from the -\u003erun and -\u003ehot_remove\nmethods of all personalities that support data integrity.  The\nfunction iterates over the component devices of the array and\ndetermines if all active devices are integrity capable and if their\nprofiles match. If this is the case, the common profile is registered\nfor the mddev via blk_integrity_register().\n\nThe second new function, md_integrity_add_rdev() is called from the\n-\u003ehot_add_disk methods, i.e. whenever a new device is being added\nto a raid array. If the new device does not support data integrity,\nor has a profile different from the one already registered, data\nintegrity for the mddev is disabled.\n\nFor raid0 and linear, only the call to md_integrity_register() from\nthe -\u003erun method is necessary.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ad361c9884e809340f6daca80d56a9e9c871690a",
      "tree": "7ec02c9934964fecdc791a0df0fc722d3bda5c53",
      "parents": [
        "e3288775ff63900fbb7db505f2b9a1bee98f07df"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Jul 06 13:05:40 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 08 10:30:03 2009 -0700"
      },
      "message": "Remove multiple KERN_ prefixes from printk formats\n\nCommit 5fd29d6ccbc98884569d6f3105aeca70858b3e0f (\"printk: clean up\nhandling of log-levels and newlines\") changed printk semantics.  printk\nlines with multiple KERN_\u003clevel\u003e prefixes are no longer emitted as\nbefore the patch.\n\n\u003clevel\u003e is now included in the output on each additional use.\n\nRemove all uses of multiple KERN_\u003clevel\u003es in formats.\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e62e58a5ffdc98ac28d8dbd070c857620d541f99",
      "tree": "0ec3471f4e66e3a376ac8cb2da79d6123e7aa2cf",
      "parents": [
        "a5c308d4d1659b1f4833b863394e3e24cdbdfc6e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "message": "md: use interruptible wait when duration is controlled by userspace.\n\nUser space can set various limits on an md array so that resync waits\nwhen it gets to a certain point, or so that I/O is blocked for a short\nwhile.\nWhen md is waiting against one of these limit, it should use an\ninterruptible wait so as not to add to the load average, and so are\nnot to trigger a warning if the wait goes on for too long.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0909dc448c98ed5021c87ffdfc09fb473aa464ab",
      "tree": "17c48d146c0f9eb7367a0d0feafea29838eae8eb",
      "parents": [
        "1ec22eb2b4a2e1a763106bce36b11c02eaa84e61"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "message": "md: tidy up error paths in md_alloc\n\nAs the recent bug in md_alloc showed, having a single exit path for\nunlocking and putting is a good idea.  So restructure md_alloc to have\na single mutex_unlock and mddev_put, and use gotos where necessary.\n\nFound-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1ec22eb2b4a2e1a763106bce36b11c02eaa84e61",
      "tree": "2aa6e6539342a28263417f6a2f2551d541e9ead9",
      "parents": [
        "b8d966efd9a46a9a35beac50cbff6e30565125ef"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 12:27:21 2009 +1000"
      },
      "message": "md: fix error path when duplicate name is found on md device creation.\n\nWhen an md device is created by name (rather than number) we need to\ncheck that the name is not already in use.  If this check finds a\nduplicate, we return an error without dropping the lock or freeing\nthe newly create mddev.\nThis patch fixes that.\n\nCc: stable@kernel.org\nFound-by: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b8d966efd9a46a9a35beac50cbff6e30565125ef",
      "tree": "d1c59125e8ee9677e8594bdc4ab223e692a87e50",
      "parents": [
        "8f6c2e4b325a8e9f8f47febb2fd0ed4fae7d45a9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:14:04 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:14:04 2009 +1000"
      },
      "message": "md: avoid dereferencing NULL pointer when accessing suspend_* sysfs attributes.\n\nIf we try to modify one of the md/ sysfs files\n  suspend_lo or suspend_hi\nwhen the array is not active, we dereference a NULL.\nProtect against that.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0894cc3066aaa3e75a99383c0d25feebf9b688ac",
      "tree": "651664e6b288e36dc9553443e334e650139851c8",
      "parents": [
        "8190e754e0723de7cecb80bdd9eb93911dfa04a1"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:49:23 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:49:23 2009 +1000"
      },
      "message": "md: Move check for bitmap presence to personality code.\n\nIf the superblock of a component device indicates the presence of a\nbitmap but the corresponding raid personality does not support bitmaps\n(raid0, linear, multipath, faulty), then something is seriously wrong\nand we\u0027d better refuse to run such an array.\n\nCurrently, this check is performed while the superblocks are examined,\ni.e. before entering personality code. Therefore the generic md layer\nmust know which raid levels support bitmaps and which do not.\n\nThis patch avoids this layer violation without adding identical code\nto various personalities. This is accomplished by introducing a new\npublic function to md.c, md_check_no_bitmap(), which replaces the\nhard-coded checks in the superblock loading functions.\n\nA call to md_check_no_bitmap() is added to the -\u003erun method of each\npersonality which does not support bitmaps and assembly is aborted\nif at least one component device contains a bitmap.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8190e754e0723de7cecb80bdd9eb93911dfa04a1",
      "tree": "6fbd0edd64cb767b9421103301e198804c3aa40b",
      "parents": [
        "13f2682b7216ebebd72b3d5868fe7fccec91a92d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:58 2009 +1000"
      },
      "message": "md: remove chunksize rounding from common code.\n\nIt is easiest to round sizes to multiples of chunk size in\nthe personality code for those personalities which care.\nThose personalities now do the rounding, so we can\nremove that function from common code.\n\nAlso remove the upper bound on the size of a chunk, and the lower\nbound on the size of a device (1 chunk), neither of which really buy\nus anything.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1b57f132231593923cb4ab99943ddd777e8745bc",
      "tree": "b76f936d08e5ef72430c6fbcf9352f53721481ec",
      "parents": [
        "8c6ac868b107ed50a46204f6d14e2ad9443ff146"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:19 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:19 2009 +1000"
      },
      "message": "md: move assignment of -\u003eutime so that it never gets skipped.\n\nCurrently the assignment to utime gets skipped for \u0027external\u0027\nmetadata.  So move it to the top of the function so that it\nalways gets effected.\nThis is of largely cosmetic interest.  Nothing actually depends\non -\u003eutime being right for external arrays.\n\"mdadm --monitor\" does use it for 0.90 and 1.x arrays, but with\nmdadm-3.0, this is not important for external metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c6ac868b107ed50a46204f6d14e2ad9443ff146",
      "tree": "a0690ce92ed1993cc3211448948f3964c389c082",
      "parents": [
        "50ac168a6e0a061bf5346d53aa9e7beb94c97527"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "message": "md: Push down reconstruction log message to personality code.\n\nCurrently, the md layer checks in analyze_sbs() if the raid level\nsupports reconstruction (mddev-\u003elevel \u003e\u003d 1) and if reconstruction is\nin progress (mddev-\u003erecovery_cp !\u003d MaxSector).\n\nMove that printk into the personality code of those raid levels that\ncare (levels 1, 4, 5, 6, 10).\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "50ac168a6e0a061bf5346d53aa9e7beb94c97527"
}
