)]}'
{
  "log": [
    {
      "commit": "1a940fcee31ec6c18c2f24dbdad31d54e4c35048",
      "tree": "73de19d505bb0483462eb1445a86a848e5506478",
      "parents": [
        "13ae864bc86ff65547ffe7e966b6433a0d0edb8a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md/raid5: handle manually-added spares in start_reshape.\n\nIt is possible to manually add spares to specific slots before\nstarting a reshape.\nraid5_start_reshape should recognised this possibility and include\nit in the accounting.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "75d3da43cb74d2e5fb87816dbfecb839cd97c7f4",
      "tree": "27074aceb801ada315329591f32c938b36150ed9",
      "parents": [
        "a6ff7e089c7fca813c956ccbed824087e89a3a49"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:34 2011 +1100"
      },
      "message": "md: Don\u0027t let implementation detail of curr_resync leak out through sysfs.\n\nmddev-\u003ecurr_resync has artificial values of \u00271\u0027 and \u00272\u0027 which are used\nby the code which ensures only one resync is happening at a time on\nany given device.\n\nThese values are internal and should never be exposed to user-space\n(except when translated appropriately as in the \u0027pending\u0027 status in\n/proc/mdstat).\n\nUnfortunately they are as -\u003ecurr_resync is assigned to\n-\u003ecurr_resync_completed and that value is directly visible through\nsysfs.\n\nSo change the assignments to -\u003ecurr_resync_completed to get the same\nvalued from elsewhere in a form that doesn\u0027t have the magic \u00271\u0027 or \u00272\u0027\nvalues.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43c73ca43b3e03bb228ff9350b6b44d0e560f262",
      "tree": "2a6fcff1e62c53ba0a95295cf02ae785b1efb501",
      "parents": [
        "0ca69886a8273ac1350143d562280bfcbe4760dc"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md/raid5: use sysfs_notify_dirent_safe to avoid NULL pointer\n\nWith the module parameter \u0027start_dirty_degraded\u0027 set,\nraid5_spare_active() previously called sysfs_notify_dirent() with a NULL\nargument (rdev-\u003esysfs_state) when a rebuild finished.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\n"
    },
    {
      "commit": "067032bc628598606056412594042564fcf09e22",
      "tree": "5e64b6446c2156631cc66f34330ba7b134a451bf",
      "parents": [
        "6c9879101442b08581e8a0e3ae6b7f643a78fd63"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jan 14 09:14:33 2011 +1100"
      },
      "message": "md: Fix single printks with multiple KERN_\u003clevel\u003es\n\nNoticed-by: Russell King \u003clinux@arm.linux.org.uk\u003e\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a167f663243662aa9153c01086580a11cde9ffdc",
      "tree": "886e64787421bbf17a1eab7853d67258b598f050",
      "parents": [
        "2b193363ef68667ad717a6723165e0dccf99470f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 26 18:31:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:36:15 2010 +1100"
      },
      "message": "md: use separate bio pool for each md device.\n\nbio_clone and bio_alloc allocate from a common bio pool.\nIf an md device is stacked with other devices that use this pool, or under\nsomething like swap which uses the pool, then the multiple calls on\nthe pool can cause deadlocks.\n\nSo allocate a local bio pool for each md array and use that rather\nthan the common pool.\n\nThis pool is used both for regular IO and metadata updates.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "57dab0bdf689d42972975ec646d862b0900a4bf3",
      "tree": "d136f69b8a68850e40844397ebaffde31787c988",
      "parents": [
        "4b532c9b8c87eb8e51605c4d08dfb5139c758dc5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 19 10:03:39 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Oct 28 17:32:26 2010 +1100"
      },
      "message": "md: use sector_t in bitmap_get_counter\n\nbitmap_get_counter returns the number of sectors covered\nby the counter in a pass-by-reference variable.\nIn some cases this can be very large, so make it a sector_t\nfor safety.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "e9c7469bb4f502dafc092166201bea1ad5fc0fbf",
      "tree": "04202b0bb88623d3005c909eaafcb280778902da",
      "parents": [
        "7bc9fddab074d6bb630344e1969e28d20b140621"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Sep 03 11:56:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Fri Sep 10 12:35:38 2010 +0200"
      },
      "message": "md: implment REQ_FLUSH/FUA support\n\nThis patch converts md to support REQ_FLUSH/FUA instead of now\ndeprecated REQ_HARDBARRIER.  In the core part (md.c), the following\nchanges are notable.\n\n* Unlike REQ_HARDBARRIER, REQ_FLUSH/FUA don\u0027t interfere with\n  processing of other requests and thus there is no reason to mark the\n  queue congested while FLUSH/FUA is in progress.\n\n* REQ_FLUSH/FUA failures are final and its users don\u0027t need retry\n  logic.  Retry logic is removed.\n\n* Preflush needs to be issued to all member devices but FUA writes can\n  be handled the same way as other writes - their processing can be\n  deferred to request_queue of member devices.  md_barrier_request()\n  is renamed to md_flush_request() and simplified accordingly.\n\nFor linear, raid0 and multipath, the core changes are enough.  raid1,\n5 and 10 need the following conversions.\n\n* raid1: Handling of FLUSH/FUA bio\u0027s can simply be deferred to\n  request_queues of member devices.  Barrier related logic removed.\n\n* raid5: Queue draining logic dropped.  FUA bit is propagated through\n  biodrain and stripe resconstruction such that all the updated parts\n  of the stripe are written out with FUA writes if any of the dirtying\n  writes was FUA.  preread_active_stripes handling in make_request()\n  is updated as suggested by Neil Brown.\n\n* raid10: FUA bit needs to be propagated to write clones.\n\nlinear, raid0, 1, 5 and 10 tested.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nReviewed-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "6b9656205469269c050963c71fca1998b247a560",
      "tree": "9d090d2e363d269cdc55549213025d86af8ef70a",
      "parents": [
        "e6ffbcb6cd0ac471223df24ae77eb486c1ee68cc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:56:59 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 12:04:32 2010 +1000"
      },
      "message": "md: provide appropriate return value for spare_active functions.\n\nmd_check_recovery expects -\u003espare_active to return \u0027true\u0027 if any\nspares were activated, but none of them do, so the consequent change\nin \u0027degraded\u0027 is not notified through sysfs.\n\nSo count the number of spares activated, subtract it from \u0027degraded\u0027\njust once, and return it.\n\nReported-by: Adrian Drzewiecki \u003cadriand@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e6ffbcb6cd0ac471223df24ae77eb486c1ee68cc",
      "tree": "8739230c95a051c8ab95fdbfd90ec2e6ce0bf3c9",
      "parents": [
        "3a3a5ddb7a0f43c3dd0f98673f3d930a456725f8"
      ],
      "author": {
        "name": "Adrian Drzewiecki",
        "email": "adriand@vmware.com",
        "time": "Wed Aug 18 11:49:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 18 11:49:02 2010 +1000"
      },
      "message": "md: Notify sysfs when RAID1/5/10 disk is In_sync.\n\nWhen RAID1 is done syncing disks, it\u0027ll update the state\nof synced rdevs to In_sync. But it neglected to notify\nsysfs that the attribute changed. So any programs that\nare waiting for an rdev\u0027s state to change will not be\nwoken.\n\n(raid5/raid10 added by neilb)\n\nSigned-off-by: Adrian Drzewiecki \u003cadriand@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "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": "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": "9f7c2220017771253d7d10b3cc017cb79eeac0fb",
      "tree": "91e387cc225d59ac975b53590c4a75e20770b5ce",
      "parents": [
        "252ac5221a71be72b7e7c7b7482af91e9c962e8c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:04:13 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:53:10 2010 +1000"
      },
      "message": "md/raid5: export raid5 unplugging interface.\n\nAlso remove remaining accesses to -\u003equeue and -\u003egendisk when -\u003equeue\nis NULL (As it is in a DM target).\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": "11d8a6e3719519fbc0e2c9d61b6fa931b84bf813",
      "tree": "13a075d1423b2caa3d3264db0cf8cd378c545623",
      "parents": [
        "4a5add49951e698073011855d1a8a7306bc9308d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 11:57:07 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:29 2010 +1000"
      },
      "message": "md/raid5: export is_congested test\n\nthe dm module will need this for dm-raid45.\n\nAlso only access -\u003equeue-\u003ebacking_dev_info-\u003econgested_fn\nif -\u003equeue actually exists.  It won\u0027t in a dm target.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4a5add49951e698073011855d1a8a7306bc9308d",
      "tree": "91c098468b96b959f88e1e2a386c6e8911db7c09",
      "parents": [
        "768a418db102bb6aa6064e6090892b5c21ff1f9e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:28 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:27 2010 +1000"
      },
      "message": "raid5: Don\u0027t set read-ahead when there is no queue\n\ndm-raid456 does not provide a \u0027queue\u0027 for raid5 to use,\nso we must make raid5 stop depending on the queue.\n\nFirst: read_ahead\ndm handles read-ahead adjustment fully in userspace, so\nsimply don\u0027t do any readahead adjustments if there is\nno queue.\n\nAlso re-arrange code slightly so all the accesses to -\u003equeue are\ntogether.\n\nFinally, move the blk_queue_merge_bvec function into the \u0027if\u0027 as\nthe -\u003esplit_io setting in dm-raid456 has the same effect.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f4be6b43f1ac60dff00ef0923ee43b0e08872947",
      "tree": "b4fbfed60c0614d97a91638483058a133ddfcbf4",
      "parents": [
        "c41d4ac40df0d01bf9c383ff28f194d1df2d4fd9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 26 12:52:26 2010 +1000"
      },
      "message": "md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk\n\nWe will shortly allow md devices with no gendisk (they are attached to\na dm-target instead).  That will cause mdname() to return \u0027mdX\u0027.\nThere is one place where mdname really needs to be unique: when\ncreating the name for a slab cache.\nSo in that case, if there is no gendisk, you the address of the mddev\nformatted in HEX to provide a unique name.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c41d4ac40df0d01bf9c383ff28f194d1df2d4fd9",
      "tree": "0e22b3cc5e211a3f7dd4b6dea69d2afc1a173543",
      "parents": [
        "00bcb4ac7ee7e557a491b614219142cea0ef16f4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Jun 01 19:37:24 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 21 13:28:15 2010 +1000"
      },
      "message": "md/raid5: factor out code for changing size of stripe cache.\n\nSeparate the actual \u0027change\u0027 code from the sysfs interface\nso that it can eventually be called internally.\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": "3424bf6a772cff606fc4bc24a3639c937afb547f",
      "tree": "be299de834e0f939d19665efec4cacadd74c4914",
      "parents": [
        "2f115882499f3e5eca33d1df07b8876cc752a1ff"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:48:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:36:04 2010 +1000"
      },
      "message": "md/raid5: don\u0027t include \u0027spare\u0027 drives when reshaping to fewer devices.\n\nThere are few situations where it would make any sense to add a spare\nwhen reducing the number of devices in an array, but it is\nconceivable:  A 6 drive RAID6 with two missing devices could be\nreshaped to a 5 drive RAID6, and a spare could become available\njust in time for the reshape, but not early enough to have been\nrecovered first.  \u0027freezing\u0027 recovery can make this easy to\ndo without any races.\n\nHowever doing such a thing is a bad idea.  md will not record the\npartially-recovered state of the \u0027spare\u0027 and when the reshape\nfinished it will think that the spare is still spare.\nEasiest way to avoid this confusion is to simply disallow it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2f115882499f3e5eca33d1df07b8876cc752a1ff",
      "tree": "8f9f1e723be1b4dd0e5fa7592a69245a704d8440",
      "parents": [
        "415e72d034c50520ddb7ff79e7d1792c1306f0c9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:41:03 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:49 2010 +1000"
      },
      "message": "md/raid5: add a missing \u0027continue\u0027 in a loop.\n\nAs the comment says, the tail of this loop only applies to devices\nthat are not fully in sync, so if In_sync was set, we should avoid\nthe rest of the loop.\n\nThis bug will hardly ever cause an actual problem.  The worst it\ncan do is allow an array to be assembled that is dirty and degraded,\nwhich is not generally a good idea (without warning the sysadmin\nfirst).\n\nThis will only happen if the array is RAID4 or a RAID5/6 in an\nintermediate state during a reshape and so has one drive that is\nall \u0027parity\u0027 - no data - while some other device has failed.\n\nThis is certainly possible, but not at all common.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "415e72d034c50520ddb7ff79e7d1792c1306f0c9",
      "tree": "4558df940a15693e477af206b54423d98d9a04b1",
      "parents": [
        "674806d62fb02a22eea948c9f1b5e58e0947b728"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 17 17:25:21 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:39 2010 +1000"
      },
      "message": "md/raid5: Allow recovered part of partially recovered devices to be in-sync\n\nDuring a recovery of reshape the early part of some devices might be\nin-sync while the later parts are not.\nWe we know we are looking at an early part it is good to treat that\npart as in-sync for stripe calculations.\n\nThis is particularly important for a reshape which suffers device\nfailure.  Treating the data as in-sync can mean the difference between\ndata-safety and data-loss.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "674806d62fb02a22eea948c9f1b5e58e0947b728",
      "tree": "3367850a95d62713aa96acd2aecc493b66779398",
      "parents": [
        "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:17:53 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:27 2010 +1000"
      },
      "message": "md/raid5: More careful check for \"has array failed\".\n\nWhen we are reshaping an array, the device failure combinations\nthat cause us to decide that the array as failed are more subtle.\n\nIn particular, any \u0027spare\u0027 will be fully in-sync in the section\nof the array that has already been reshaped, thus failures that\naffect only that section are less critical.\n\nSo encode this subtlety in a new function and call it as appropriate.\n\nThe case that showed this problem was a 4 drive RAID5 to 8 drive RAID6\nconversion where the last two devices failed.\nThis resulted in:\n\n  good good good good incomplete good good failed failed\n\nwhile converting a 5-drive RAID6 to 8 drive RAID5\nThe incomplete device causes the whole array to look bad,\nbad as it was actually good for the section that had been\nconverted to 8-drives, all the data was actually safe.\n\nReported-by: Terry Morris \u003ctbmorris@tbmorris.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "70fffd0bfab1558a8c64c5e903dea1fb84cd9f6b",
      "tree": "126f2ae8faa2cff8f9dde91cc7a07569ff9851cb",
      "parents": [
        "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 17:01:25 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:18 2010 +1000"
      },
      "message": "md: Don\u0027t update -\u003erecovery_offset when reshaping an array to fewer devices.\n\nWhen an array is reshaped to have fewer devices, the reshape proceeds\nfrom the end of the devices to the beginning.\n\nIf a device happens to be non-In_sync (which is possible but rare)\nwe would normally update the -\u003erecovery_offset as the reshape\nprogresses. However that would be wrong as the recover_offset records\nthat the early part of the device is in_sync, while in fact it would\nonly be the later part that is in_sync, and in any case the offset\nnumber would be measured from the wrong end of the device.\n\nRelatedly, if after a reshape a spare is discovered to not be\nrecoverred all the way to the end, not allow spare_active\nto incorporate it in the array.\n\nThis becomes relevant in the following sample scenario:\n\nA 4 drive RAID5 is converted to a 6 drive RAID6 in a combined\noperation.\nThe RAID5-\u003eRAID6 conversion will cause a 5 drive to be included as a\nspare, then the 5drive -\u003e 6drive reshape will effectively rebuild that\nspare as it progresses.  The 6th drive is treated as in_sync the whole\ntime as there is never any case that we might consider reading from\nit, but must not because there is no valid data.\n\nIf we interrupt this reshape part-way through and reverse it to return\nto a 5-drive RAID6 (or event a 4-drive RAID5), we don\u0027t want to update\nthe recovery_offset - as that would be wrong - and we don\u0027t want to\ninclude that spare as active in the 5-drive RAID6 when the reversed\nreshape completed and it will be mostly out-of-sync still.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4e11e385d1e5516ac76c956d6c25e6c2fa1b8d0",
      "tree": "978807084ae3136b20a12efab3720ecec861d0ff",
      "parents": [
        "049d6c1ef983c9ac43aa423dfd752071a5b0002d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jun 16 16:45:16 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 24 13:35:02 2010 +1000"
      },
      "message": "md/raid5: avoid oops when number of devices is reduced then increased.\n\nThe entries in the stripe_cache maintained by raid5 are enlarged\nwhen we increased the number of devices in the array, but not\nshrunk when we reduce the number of devices.\nSo if entries are added after reducing the number of devices, we\nmuch ensure to initialise the whole entry, not just the part that\nis currently relevant.  Otherwise if we enlarge the array again,\nwe will reference uninitialised values.\n\nAs grow_buffers/shrink_buffer now want to use a count that is stored\nexplicity in the raid_conf, they should get it from there rather than\nbeing passed it as a parameter.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "55af6bb509d3ef2696faddd4a734bf024794b337",
      "tree": "4a5f3493957c5c7504b91bf90bedd828a26106c0",
      "parents": [
        "d882ba699dbdd2156891290c31c22dc13d6530e4"
      ],
      "author": {
        "name": "Akinobu Mita",
        "email": "akinobu.mita@gmail.com",
        "time": "Wed May 26 14:43:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 09:12:48 2010 -0700"
      },
      "message": "md: convert cpu notifier to return encapsulate errno value\n\nBy the previous modification, the cpu notifier can return encapsulate\nerrno value.  This converts the cpu notifiers for raid5.\n\nSigned-off-by: Akinobu Mita \u003cakinobu.mita@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "19fdb9eefb21b72edbc365b838502780c392bad6",
      "tree": "deae04c48532d6eab64ed4b0396737bb854b5506",
      "parents": [
        "be6800a73aa2f3dc14744c3b80e676d189789f04",
        "3ff195b011d7decf501a4d55aeed312731094796"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat May 22 08:31:36 2010 +1000"
      },
      "message": "Merge commit \u00273ff195b011d7decf501a4d55aeed312731094796\u0027 into for-linus\n\nConflicts:\n\tdrivers/md/md.c\n\n- Resolved conflict in md_update_sb\n- Added extra \u0027NULL\u0027 arg to new instance of sysfs_get_dirent.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b0bb5368a7195606eca475d9f4e291ab7227052",
      "tree": "2c5b9e5269fb585d0386cf931a0d154bee5d875f",
      "parents": [
        "75a73a29e520a6ce982b0da6dd8b7560ae3faa90"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:28:00 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "0c55e02259115c151e4835dd417cf41467bb02e2",
      "tree": "bcc12cd6c9b2d40b8bc31a4d85cae13103168493",
      "parents": [
        "08fb730ca346ff16598ef31911c88fbca6133bf5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 03 14:09:02 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:58 2010 +1000"
      },
      "message": "md/raid5: improve consistency of error messages.\n\nMany \u0027printk\u0027 messages from the raid456 module mention \u0027raid5\u0027 even\nthough it may be a \u0027raid6\u0027 or even \u0027raid4\u0027 array.  This can cause\nconfusion.\nAlso the actual array name is not always reported and when it is\nit is not reported consistently.\n\nSo change all the messages to start:\n    md/raid:%s:\nwhere \u0027%s\u0027 becomes e.g. md3 to identify the particular array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f1b29bcae116409db5e543622aadab43041c9ae9",
      "tree": "05dff62e747d8f0c91d6bd38ce900c0083dcbc98",
      "parents": [
        "e555190d82c0f58e825e3cbd9e6ebe2e7ac713bd"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat May 01 18:09:05 2010 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:57 2010 +1000"
      },
      "message": "md/raid4: permit raid0 takeover\n\nFor consistency allow raid4 to takeover raid0 in addition to raid5 (with a\nraid4 layout).\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "21a52c6d05c15f862797736393915bfa8cd40ee9",
      "tree": "44ffb633d209457979177a52132761a368fcb976",
      "parents": [
        "cca9cf90c504d98644ace52c474770970729f0eb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Apr 01 15:02:13 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:55 2010 +1000"
      },
      "message": "md: pass mddev to make_request functions rather than request_queue\n\nWe used to pass the personality make_request function direct\nto the block layer so the first argument had to be a queue.\nBut now we have the intermediary md_make_request so it makes\nat lot more sense to pass a struct mddev_s.\nIt makes it possible to have an mddev without its own queue too.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b821eaa572fd737faaf6928ba046e571526c36c6",
      "tree": "0db462a3c7da3dbf42d28e2483a27d78839b4589",
      "parents": [
        "49ce6cea85fb8d25ee59486c919406e9cecf1762"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 29 11:18:15 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:53 2010 +1000"
      },
      "message": "md: remove -\u003echanged and related code.\n\nWe set -\u003echanged to 1 and call check_disk_change at the end\nof md_open so that bd_invalidated would be set and thus\npartition rescan would happen appropriately.\n\nNow that we call revalidate_disk directly, which sets bd_invalidates,\nthat indirection is no longer needed and can be removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "490773268cf64f68da2470e07b52c7944da6312d",
      "tree": "d394aafa7203c316db6b63f128b8894e18993fca",
      "parents": [
        "2b7f22284d71975e37a82db154386348eec0e52c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:20:56 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:52 2010 +1000"
      },
      "message": "md: move io accounting out of personalities into md_make_request\n\nWhile I generally prefer letting personalities do as much as possible,\ngiven that we have a central md_make_request anyway we may as well use\nit to simplify code.\nAlso this centralises knowledge of -\u003egendisk which will help later.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b7f22284d71975e37a82db154386348eec0e52c",
      "tree": "761ac50d75348c43e38745f10b824efa5c3388cd",
      "parents": [
        "a78d38a1a16c8e009aa512caa71d483757fefc1c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Mar 25 16:06:03 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:50 2010 +1000"
      },
      "message": "md/raid5: small tidyup in raid5_align_endio\n\nDiving through -\u003equeue to find mddev is unnecessarily complex - there\nis an easier path to finding mddev, so use that.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a78d38a1a16c8e009aa512caa71d483757fefc1c",
      "tree": "028ba0f1d0d6a18b2710ece1f24639f9ff72e3d2",
      "parents": [
        "5cac7861b2de95a1f714ebdc652813abd0afcc73"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 22 16:53:49 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:49 2010 +1000"
      },
      "message": "md: add support for raid5 to raid4 conversion\n\nThis is unlikely to be wanted, but we may as well provide it\nfor completeness.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n\n"
    },
    {
      "commit": "54071b3808ee3dc8624d9d6f1b06c4fd5308fa3b",
      "tree": "b254ce6625ce3dd472faac0d59edeb9589b30f2b",
      "parents": [
        "84707f38e767ac470fd82af6c45a8cafe2bd1b9a"
      ],
      "author": {
        "name": "Trela Maciej",
        "email": "Maciej.Trela@intel.com",
        "time": "Mon Mar 08 16:02:42 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:47 2010 +1000"
      },
      "message": "md:Add support for Raid0-\u003eRaid5 takeover\n\nSigned-off-by: Maciej Trela \u003cmaciej.trela@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b92813c3c0b6990f14838e3985fb385d2655d0c",
      "tree": "c072a6684185f2c18734e704c488953250e8353a",
      "parents": [
        "696fcd535b5a8cfc0617e9cf1d9d69a13895cc1e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Mon Mar 08 16:02:40 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue May 18 15:27:46 2010 +1000"
      },
      "message": "drivers/md: Remove unnecessary casts of void *\n\nvoid pointers do not need to be cast to other pointer types.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a64c876fd357906a1f7193723866562ad290654c",
      "tree": "077fcdab730d40227585025bf15bf8e027949a29",
      "parents": [
        "b6eb127d274385d81ce8dd45c98190f097bce1b4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Apr 14 17:15:37 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon May 17 14:45:40 2010 +1000"
      },
      "message": "md: manage redundancy group in sysfs when changing level.\n\nSome levels expect the \u0027redundancy group\u0027 to be present,\nothers don\u0027t.\nSo when we change level of an array we might need to\nadd or remove this group.\n\nThis requires fixing up the current practice of overloading -\u003eprivate\nto indicate (when -\u003epers \u003d\u003d NULL) that something needs to be removed.\nSo create a new -\u003eto_remove to fill that role.\n\nWhen changing levels, we may need to add or remove attributes.  When\nchanging RAID5 -\u003e RAID6, we both add and remove the same thing.  It is\nimportant to catch this and optimise it out as the removal is delayed\nuntil a lock is released, so trying to add immediately would cause\nproblems.\n\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "87aa63000c484bfb9909989316f615240dfee018",
      "tree": "ebadeba1c1c03b28e8c2c9036542bd6b75bb9837",
      "parents": [
        "722154e4cacf015161efe60009ae9be23d492296"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 21:10:35 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "6e3b96ed610e5a1838e62ddae9fa0c3463f235fa",
      "tree": "c0c3f0d3e5f16c04d417160e5bca1d4abf562651",
      "parents": [
        "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "message": "md/raid5: fix previous patch.\n\nPrevious patch changes stripe and chunk_number to sector_t but\nmistakenly did not update all of the divisions to use sector_dev().\n\nThis patch changes all the those divisions (actually the \u0027%\u0027 operator)\nto sector_div.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\nTested-by: Stefan Lippers-Hollmann \u003cs.l-h@gmx.de\u003e\n"
    },
    {
      "commit": "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d",
      "tree": "2b4cdbe2824a936f136fa0eb0dbd2db84927b057",
      "parents": [
        "85341c61361cc45a9cc0e11c01e8f4479ef460ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "message": "md/raid5: allow for more than 2^31 chunks.\n\nWith many large drives and small chunk sizes it is possible\nto create a RAID5 with more than 2^31 chunks.  Make sure this\nworks.\n\nReported-by: Brett King \u003cking.br@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "0a135ba14d71fb84c691a5386aff5049691fe6d7",
      "tree": "adb1de887dd6839d69d2fc16ffa2a10ff63298fa",
      "parents": [
        "4850f524b2c4c8a4e9f8ef4dd9c7c4afde2f2b2c",
        "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: add __percpu sparse annotations to what\u0027s left\n  percpu: add __percpu sparse annotations to fs\n  percpu: add __percpu sparse annotations to core kernel subsystems\n  local_t: Remove leftover local.h\n  this_cpu: Remove pageset_notifier\n  this_cpu: Page allocator conversion\n  percpu, x86: Generic inc / dec percpu instructions\n  local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c\n  module: Use this_cpu_xx to dynamically allocate counters\n  local_t: Remove cpu_local_xx macros\n  percpu: refactor the code in pcpu_[de]populate_chunk()\n  percpu: remove compile warnings caused by __verify_pcpu_ptr()\n  percpu: make accessors check for percpu pointer in sparse\n  percpu: add __percpu for sparse.\n  percpu: make access macros universal\n  percpu: remove per_cpu__ prefix.\n"
    },
    {
      "commit": "8a78362c4eefc1deddbefe2c7f38aabbc2429d6b",
      "tree": "c095d95af1aec0f9cee5975b1dcdc6bc1d17d401",
      "parents": [
        "086fa5ff0854c676ec333760f4c0154b3b242616"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:39 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Consolidate phys_segment and hw_segment limits\n\nExcept for SCSI no device drivers distinguish between physical and\nhardware segment limits.  Consolidate the two into a single segment\nlimit.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18",
      "tree": "5a714679aeebd5f7af5d1fc521f0db8639324f6c",
      "parents": [
        "003cb608a2533d0927a83bc4e07e46d7a622eda9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 14:39:15 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 17 11:17:38 2010 +0900"
      },
      "message": "percpu: add __percpu sparse annotations to what\u0027s left\n\nAdd __percpu sparse annotations to places which didn\u0027t make it in one\nof the previous patches.  All converions are trivial.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Borislav Petkov \u003cborislav.petkov@amd.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ef286f6fa673cd7fb367e1b145069d8dbfcc6081",
      "tree": "957760503c1b1a417850db3204d6c010d1ce1a67",
      "parents": [
        "9eb07c259207d048e3ee8be2a77b2a4680b1edd4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 10 11:26:09 2010 +1100"
      },
      "message": "md: fix some lockdep issues between md and sysfs.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nThis fix is related to\n    http://bugzilla.kernel.org/show_bug.cgi?id\u003d15142\nbut does not address that exact issue.\n\u003d\u003d\u003d\u003d\u003d\u003d\n\nsysfs does like attributes being removed while they are being accessed\n(i.e. read or written) and waits for the access to complete.\n\nAs accessing some md attributes takes the same lock that is held while\nremoving those attributes a deadlock can occur.\n\nThis patch addresses 3 issues in md that could lead to this deadlock.\n\nTwo relate to calling flush_scheduled_work while the lock is held.\nThis is probably a bad idea in general and as we use schedule_work to\ndelete various sysfs objects it is particularly bad.\n\nIn one case flush_scheduled_work is called from md_alloc (called by\nmd_probe) called from do_md_run which holds the lock.  This call is\nonly present to ensure that -\u003egendisk is set.  However we can be sure\nthat gendisk is always set (though possibly we couldn\u0027t when that code\nwas originally written.  This is because do_md_run is called in three\ndifferent contexts:\n  1/ from md_ioctl.  This requires that md_open has succeeded, and it\n     fails if -\u003egendisk is not set.\n  2/ from writing a sysfs attribute.  This can only happen if the\n     mddev has been registered in sysfs which happens in md_alloc\n     after -\u003egendisk has been set.\n  3/ from autorun_array which is only called by autorun_devices, which\n     checks for -\u003egendisk to be set before calling autorun_array.\nSo the call to md_probe in do_md_run can be removed, and the check on\n-\u003egendisk can also go.\n\n\nIn the other case flush_scheduled_work is being called in do_md_stop,\npurportedly to wait for all md_delayed_delete calls (which delete the\ncomponent rdevs) to complete.  However there really isn\u0027t any need to\nwait for them - they have already been disconnected in all important\nways.\n\nThe third issue is that raid5-\u003estop() removes some attribute names\nwhile the lock is held.  There is already some infrastructure in place\nto delay attribute removal until after the lock is released (using\nschedule_work).  So extend that infrastructure to remove the\nraid5_attrs_group.\n\nThis does not address all lockdep issues related to the sysfs\n\"s_active\" lock.  The rest can be address by splitting that lockdep\ncontext between symlinks and non-symlinks which hopefully will happen.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9eb07c259207d048e3ee8be2a77b2a4680b1edd4",
      "tree": "aad711b891fd43920c832da2158aab0764c7fe49",
      "parents": [
        "6339204ecc2aa2067a99595522de0403f0854bb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 12:31:47 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:29 2010 +1100"
      },
      "message": "md: fix \u0027degraded\u0027 calculation when starting a reshape.\n\nThis code was written long ago when it was not possible to\nreshape a degraded array.  Now it is so the current level of\ndegraded-ness needs to be taken in to account.  Also newly addded\ndevices should only reduce degradedness if they are deemed to be\nin-sync.\n\nIn particular, if you convert a RAID5 to a RAID6, and increase the\nnumber of devices at the same time, then the 5-\u003e6 conversion will\nmake the array degraded so the current code will produce a wrong\nvalue for \u0027degraded\u0027 - \"-1\" to be precise.\n\nIf the reshape runs to completion end_reshape will calculate a correct\nnew value for \u0027degraded\u0027, but if a device fails during the reshape an\nincorrect decision might be made based on the incorrect value of\n\"degraded\".\n\nThis patch is suitable for 2.6.32-stable and if they are still open,\n2.6.31-stable and 2.6.30-stable as well.\n\nCc: stable@kernel.org\nReported-by: Michael Evans \u003cmjevans1983@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0efb9e6191e1d3d34c1db90b829b742bc36d532e",
      "tree": "5960d97df87a7eeea56d7dbe801259fc43398d5e",
      "parents": [
        "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: add MODULE_DESCRIPTION for all md related modules.\n\nSuggested by  Oren Held \u003corenhe@il.ibm.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "729a18663a30a9c8076e3adc2b3e4c866974f935",
      "tree": "14f8e15ffa09d6a583fccdbe2ddf84c7cb8c2246",
      "parents": [
        "a2826aa92e2e14db372eda01d333267258944033"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:50 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:40 2009 +1100"
      },
      "message": "md/raid5: don\u0027t complete make_request on barrier until writes are scheduled\n\nThe post-barrier-flush is sent by md as soon as make_request on the\nbarrier write completes.  For raid5, the data might not be in the\nper-device queues yet.  So for barrier requests, wait for any\npre-reading to be done so that the request will be in the per-device\nqueues.\n\nWe use the \u0027preread_active\u0027 count to check that nothing is still in\nthe preread phase, and delay the decrement of this count until after\nwrite requests have been submitted to the underlying devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2826aa92e2e14db372eda01d333267258944033",
      "tree": "9cdd3329205bf480a4782705a3db1738e3faae44",
      "parents": [
        "efa593390e70b0e3c39f6b2dca8876b6b1461e41"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "message": "md: support barrier requests on all personalities.\n\nPreviously barriers were only supported on RAID1.  This is because\nother levels requires synchronisation across all devices and so needed\na different approach.\nHere is that approach.\n\nWhen a barrier arrives, we send a zero-length barrier to every active\ndevice.  When that completes - and if the original request was not\nempty -  we submit the barrier request itself (with the barrier flag\ncleared) and then submit a fresh load of zero length barriers.\n\nThe barrier request itself is asynchronous, but any subsequent\nrequest will block until the barrier completes.\n\nThe reason for clearing the barrier flag is that a barrier request is\nallowed to fail.  If we pass a non-empty barrier through a striping\nraid level it is conceivable that part of it could succeed and part\ncould fail.  That would be way too hard to deal with.\nSo if the first run of zero length barriers succeed, we assume all is\nsufficiently well that we send the request and ignore errors in the\nsecond run of barriers.\n\nRAID5 needs extra care as write requests may not have been submitted\nto the underlying devices yet.  So we flush the stripe cache before\nproceeding with the barrier.\n\nNote that the second set of zero-length barriers are submitted\nimmediately after the original request is submitted.  Thus when\na personality finds mddev-\u003ebarrier to be set during make_request,\nit should not return from make_request until the corresponding\nper-device request(s) have been queued.\n\nThat will be done in later patches.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "8553fe7ec731e4f997245e14319572cb15118018",
      "tree": "14cf104937c6260f00420e32e237eb0714db9389",
      "parents": [
        "aa5cbd103887011b4830355f88fb055f9ad2d556"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "message": "md/raid5: remove some sparse warnings.\n\nqd_idx is previously declared and given exactly the same value!\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c148ffdcda00b6599b70f8b65e6a1fadd1dbb127",
      "tree": "3d50cc9dbef926f62a588dc1f45f1df304e1bf31",
      "parents": [
        "7ef90146a14c2bb1de2e22399f147ebec5b74f0b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:47:00 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:47:00 2009 +1100"
      },
      "message": "md/raid5: Allow dirty-degraded arrays to be assembled when only party is degraded.\n\nNormally is it not safe to allow a raid5 that is both dirty and\ndegraded to be assembled without explicit request from that admin, as\nit can cause hidden data corruption.\nThis is because \u0027dirty\u0027 means that the parity cannot be trusted, and\n\u0027degraded\u0027 means that the parity needs to be used.\n\nHowever, if the device that is missing contains only parity, then\nthere is no issue and assembly can continue.\nThis particularly applies when a RAID5 is being converted to a RAID6\nand there is an unclean shutdown while the conversion is happening.\n\nSo check for whether the degraded space only contains parity, and\nin that case, allow the assembly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7ef90146a14c2bb1de2e22399f147ebec5b74f0b",
      "tree": "ab0e97fb85814f174ed5ec0645057bb65dd4bb1d",
      "parents": [
        "0261cd9f1cb42fa44ece314d27868d83742bdf03"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:51 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 13 17:40:51 2009 +1100"
      },
      "message": "Don\u0027t unconditionally set in_sync on newly added device in raid5_reshape\n\nWhen a reshape finds that it can add spare devices into the array,\nthose devices might already be \u0027in_sync\u0027 if they are beyond the old\nsize of the array, or they might not if they are within the array.\n\nThe first case happens when we change an N-drive RAID5 to an\nN+1-drive RAID5.\nThe second happens when we convert an N-drive RAID5 to an\nN+1-drive RAID6.\n\nSo set the flag more carefully.\nAlso, -\u003erecovery_offset is only meaningful when the flag is clear,\nso only set it in that case.\n\nThis change needs the preceding two to ensure that the non-in_sync\ndevice doesn\u0027t get evicted from the array when it is stopped, in the\ncase where v0.90 metadata is used.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8dee7211467a56b7eb4e4359efb0aa4a72e1b6f3",
      "tree": "4ddcb170bd131adcc022477ef96716fba5c1ab07",
      "parents": [
        "24395a85d8efe6eee477ea35c73d045a8dd7a3a1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:29 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Nov 06 14:59:29 2009 +1100"
      },
      "message": "md/raid5: make sure curr_sync_completes is uptodate when reshape starts\n\nThis value is visible through sysfs and is used by mdadm\nwhen it manages a reshape (backing up data that is about to be\nrearranged).  So it is important that it is always correct.\nCurrent it does not get updated properly when a reshape\nstarts which can cause problems when assembling an array\nthat is in the middle of being reshaped.\n\nThis is suitable for 2.6.31.y stable kernels.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6629542e79255e0dbef8ec82eaf644e1b2546c3c",
      "tree": "10878adc7a42868b2ded58acbe5bb4135347b607",
      "parents": [
        "b2141e6951ad56c8f65e70547baeabd5698e390a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Oct 19 18:09:32 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Oct 19 18:09:41 2009 -0700"
      },
      "message": "md/raid6: kill a gcc-4.0.1 \u0027uninitialized variable\u0027 warning\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "5dd33c9a4c29015f6d87568d33521c98931a387e",
      "tree": "a79ac38e1957580743b708410b54694f2b1cbf77",
      "parents": [
        "5e5e3e78ed9038b8f7112835d07084eefb9daa47"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:40:25 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:40:25 2009 +1100"
      },
      "message": "md/async: don\u0027t pass a memory pointer as a page pointer.\n\nmd/raid6 passes a list of \u0027struct page *\u0027 to the async_tx routines,\nwhich then either DMA map them for offload, or take the page_address\nfor CPU based calculations.\n\nFor RAID6 we sometime leave \u0027blanks\u0027 in the list of pages.\nFor CPU based calcs, we want to treat theses as a page of zeros.\nFor offloaded calculations, we simply don\u0027t pass a page to the\nhardware.\n\nCurrently the \u0027blanks\u0027 are encoded as a pointer to\nraid6_empty_zero_page.  This is a 4096 byte memory region, not a\n\u0027struct page\u0027.  This is mostly handled correctly but is rather ugly.\n\nSo change the code to pass and expect a NULL pointer for the blanks.\nWhen taking page_address of a page, we need to check for a NULL and\nin that case use raid6_empty_zero_page.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e5e3e78ed9038b8f7112835d07084eefb9daa47",
      "tree": "afcefac7c0dbafb71f09d90812eecb2c6e4bc766",
      "parents": [
        "e4424fee1815f996dccd36be44d68ca160ec3e1b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:35:30 2009 +1100"
      },
      "message": "md: Fix handling of raid5 array which is being reshaped to fewer devices.\n\nWhen a raid5 (or raid6) array is being reshaped to have fewer devices,\nconf-\u003eraid_disks is the latter and hence smaller number of devices.\nHowever sometimes we want to use a number which is the total number of\ncurrently required devices - the larger of the \u0027old\u0027 and \u0027new\u0027 sizes.\nBefore we implemented reducing the number of devices, this was always\n\u0027new\u0027 i.e. -\u003eraid_disks.\nNow we need max(raid_disks, previous_raid_disks) in those places.\n\nThis particularly affects assembling an array that was shutdown while\nin the middle of a reshape to fewer devices.\n\nmd.c needs a similar fix when interpreting the md metadata.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4424fee1815f996dccd36be44d68ca160ec3e1b",
      "tree": "13e67731367d28451fdb1dcfbf4e085ce236f9b9",
      "parents": [
        "417b8d4ac868cf58d6c68f52d72f7648413e0edc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:27:34 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:27:34 2009 +1100"
      },
      "message": "md: fix problems with RAID6 calculations for DDF.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "417b8d4ac868cf58d6c68f52d72f7648413e0edc",
      "tree": "6eefb8b381fdad5235d2b29fc0054bcf537efbcc",
      "parents": [
        "dce3a7a42d585b74ce68081010b42afe81c8f4c4"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Oct 16 16:25:22 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 16:25:22 2009 +1100"
      },
      "message": "md/raid456: downlevel multicore operations to raid_run_ops\n\nThe percpu conversion allowed a straightforward handoff of stripe\nprocessing to the async subsytem that initially showed some modest gains\n(+4%).  However, this model is too simplistic and leads to stripes\nbouncing between raid5d and the async thread pool for every invocation\nof handle_stripe().  As reported by Holger this can fall into a\npathological situation severely impacting throughput (6x performance\nloss).\n\nBy downleveling the parallelism to raid_run_ops the pathological\nstripe_head bouncing is eliminated.  This version still exhibits an\naverage 11% throughput loss for:\n\n\tmdadm --create /dev/md0 /dev/sd[b-q] -n 16 -l 6\n\techo 1024 \u003e /sys/block/md0/md/stripe_cache_size\n\tdd if\u003d/dev/zero of\u003d/dev/md0 bs\u003d1024k count\u003d2048\n\n...but the results are at least stable and can be used as a base for\nfurther multicore experimentation.\n\nReported-by: Holger Kiehl \u003cHolger.Kiehl@dwd.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f5efd45ae597c96ed017afad5662b67d55b402a0",
      "tree": "32ef979c6882d594890e02466003f5255af00fe3",
      "parents": [
        "1d9d52416c0445019ccc1f0fddb9a227456eb61b"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Oct 16 15:55:38 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:38 2009 +1100"
      },
      "message": "md/raid5: initialize conf-\u003edevice_lock earlier\n\nDeallocating a raid5_conf_t structure requires taking \u0027device_lock\u0027.\nEnsure it is initialized before it is used, i.e. initialize the lock\nbefore attempting any further initializations that might fail.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1442577bf6da1a31ae6555212202be9a2cec5642",
      "tree": "58843618e1fe59ac6c07dd5651dbb3f4a6355106",
      "parents": [
        "7ca263cdf8cf74d0f1c6f48d07d556de92e3bec9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:25 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 16 15:55:25 2009 +1100"
      },
      "message": "Revert \"md: do not progress the resync process if the stripe was blocked\"\n\nThis reverts commit df10cfbc4d7ab93260d997df754219d390d62a9d.\n\nThis patch was based on a misunderstanding and risks introducing a busy-wait loop.\nSo revert it.\n\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "4b3df5668c8ebaebd8d66a5a94374be3e3b2ef0c",
      "tree": "51a231742e211143f5845edf4b09d1712dcd2771",
      "parents": [
        "1ef04fefe2241087d9db7e9615c3f11b516e36cf",
        "1f6672d44c1ae7408b43c06170ec34eb0a0e9b9f"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:31:11 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:31:11 2009 +1000"
      },
      "message": "Merge branch \u0027next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx into for-linus\n"
    },
    {
      "commit": "3fa841d7e7266f6fcc1b3885b905f5153ba897d8",
      "tree": "7afa971a10eddcf52787340ea43fa1e910b5805b",
      "parents": [
        "0da3c6194ec2f32617b272df4505a1cf022faea5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:10:29 2009 +1000"
      },
      "message": "md: report device as congested when suspended\n\nThis should writeback from coming when the device is temporarily\nsuspended.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0da3c6194ec2f32617b272df4505a1cf022faea5",
      "tree": "5864b61b8fac2e7477668bdb9a493d2a64d0b3dd",
      "parents": [
        "ee305acef5c7841dc25cc32e84bb94f744e1e9b9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:09:45 2009 +1000"
      },
      "message": "md: Improve name of threads created by md_register_thread\n\nThe management thread for raid4,5,6 arrays are all called\nmdX_raid5, independent of the actual raid level, which is wrong and\ncan be confusion.\n\nSo change md_register_thread to use the name from the personality\nunless no alternate name (like \u0027resync\u0027 or \u0027reshape\u0027) is given.\n\nThis is simpler and more correct.\n\nCc: Jinzc \u003czhenchengjin@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a9f326ebf22a0de776815240fb76dabe139397ea",
      "tree": "4402ba08931cd0663aca077be4d26e66c91869bd",
      "parents": [
        "7fa07729e439a6184bd824746d06a49cca553f15"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 23 18:06:41 2009 +1000"
      },
      "message": "md: remove sparse waring \"symbol xxx shadows an earlier one\"\n\nRename some variable and remove some duplicate definitions\nto avoid there warnings.  None of them are actual errors.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6c910a78e495b4c1778a8b136b37fe3c05712730",
      "tree": "46bb72265a9ea354e1bb6b043318e93dbf07df5e",
      "parents": [
        "2d6e4ecc87d20299bcb249dd62efbd73496744c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:24:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:24:54 2009 -0700"
      },
      "message": "md/raid6: cleanup ops_run_compute6_2\n\nNeil says:\n\t\"It is correct as it stands, but the fact that every branch in\n\t the \u0027if\u0027 part ends with a \u0027return\u0027 isn\u0027t immediately obvious,\n\t so it is clearer if we are explicit about the if / then / else\n\t structure.\"\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "2d6e4ecc87d20299bcb249dd62efbd73496744c3",
      "tree": "943c2a81e5a7996129978169c2f431b3b0c9f282",
      "parents": [
        "084dac53adcfb910792a66bc0bae720cdde971de"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:11:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Sep 16 12:11:54 2009 -0700"
      },
      "message": "md/raid6: eliminate BUG_ON with side effect\n\nAs pointed out by Neil it should be possible to build a driver with all\nBUG_ON statements deleted.  It\u0027s bad form to have a BUG_ON with a side\neffect.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "1f98a13f623e0ef666690a18c1250335fc6d7ef1",
      "tree": "15ca2dddffaa18a0d1844957f4f8cc707cbb8117",
      "parents": [
        "e7e503aedb1f4d165081cb8d47a58c38f80f0cb4"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:32:04 2009 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Sep 11 14:33:31 2009 +0200"
      },
      "message": "bio: first step in sanitizing the bio-\u003ebi_rw flag testing\n\nGet rid of any functions that test for these bits and make callers\nuse bio_rw_flagged() directly. Then it is at least directly apparent\nwhat variable and flag they check.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "9134d02bc0af4a8747d448d1f811ec5f8eb96df6",
      "tree": "704c3e5dcc10f360815c4868a74711f82fb62e27",
      "parents": [
        "bbb20089a3275a19e475dbc21320c3742e3ca423",
        "80ffb3cceaefa405f2ecd46d66500ed8d53efe74"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:54 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:54 2009 -0700"
      },
      "message": "Merge commit \u0027md/for-linus\u0027 into async-tx-next\n\nConflicts:\n\tdrivers/md/raid5.c\n"
    },
    {
      "commit": "bbb20089a3275a19e475dbc21320c3742e3ca423",
      "tree": "216fdc1cbef450ca688135c5b8969169482d9a48",
      "parents": [
        "3e48e656903e9fd8bc805c6a2c4264d7808d315b",
        "657a77fa7284d8ae28dfa48f1dc5d919bf5b2843"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:21 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:55:21 2009 -0700"
      },
      "message": "Merge branch \u0027dmaengine\u0027 into async-tx-next\n\nConflicts:\n\tcrypto/async_tx/async_xor.c\n\tdrivers/dma/ioat/dma_v2.h\n\tdrivers/dma/ioat/pci.c\n\tdrivers/md/raid5.c\n"
    },
    {
      "commit": "0403e3827788d878163f9ef0541b748b0f88ca5d",
      "tree": "2dc73744bd92c268a1310f24668167f130877278",
      "parents": [
        "f9dd2134374c8de6b911e2b8652c6c9622eaa658"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:50 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:50 2009 -0700"
      },
      "message": "dmaengine: add fence support\n\nSome engines optimize operation by reading ahead in the descriptor chain\nsuch that descriptor2 may start execution before descriptor1 completes.\nIf descriptor2 depends on the result from descriptor1 then a fence is\nrequired (on descriptor2) to disable this optimization.  The async_tx\napi could implicitly identify dependencies via the \u0027depend_tx\u0027\nparameter, but that would constrain cases where the dependency chain\nonly specifies a completion order rather than a data dependency.  So,\nprovide an ASYNC_TX_FENCE to explicitly identify data dependencies.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "f9dd2134374c8de6b911e2b8652c6c9622eaa658",
      "tree": "c1b8f8d622941606b9e7247ab31d811ba4295011",
      "parents": [
        "4b652f0db3be891c7b76b109c3b55003b920fc96",
        "07a3b417dc3d00802bd7b4874c3e811f0b015a7d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:29 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Sep 08 17:42:29 2009 -0700"
      },
      "message": "Merge branch \u0027md-raid6-accel\u0027 into ioat3.2\n\nConflicts:\n\tinclude/linux/dmaengine.h\n"
    },
    {
      "commit": "07a3b417dc3d00802bd7b4874c3e811f0b015a7d",
      "tree": "b3b484067f700a70f3e7d575bad6e7e4ae2742cc",
      "parents": [
        "b774ef491b4edf6876077014ecbb87f10c69c10f"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid456: distribute raid processing over multiple cores\n\nNow that the resources to handle stripe_head operations are allocated\npercpu it is possible for raid5d to distribute stripe handling over\nmultiple cores.  This conversion also adds a call to cond_resched() in\nthe non-multicore case to prevent one core from getting monopolized for\nraid operations.\n\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "b774ef491b4edf6876077014ecbb87f10c69c10f",
      "tree": "a4132f50e29b43c0b23e478001220b3e90ea4731",
      "parents": [
        "6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: remove synchronous infrastructure\n\nThese routines have been replaced by there asynchronous counterparts.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8",
      "tree": "97b01fc8602e7b6d4c495d0f0562ae901d78f58b",
      "parents": [
        "d82dfee0ad8f240fef1b28e2258891c07da57367"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe6\n\n1/ Use STRIPE_OP_BIOFILL to offload completion of read requests to\n   raid_run_ops\n2/ Implement a handler for sh-\u003ereconstruct_state similar to the raid5 case\n   (adds handling of Q parity)\n3/ Prevent handle_parity_checks6 from running concurrently with \u0027compute\u0027\n   operations\n4/ Hook up raid_run_ops\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n"
    },
    {
      "commit": "d82dfee0ad8f240fef1b28e2258891c07da57367",
      "tree": "44431399bef701c52f413c364f80751c18ff1179",
      "parents": [
        "a9b39a741a7e3b262b9f51fefb68e17b32756999"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 13:40:57 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:13 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_parity_check6\n\n[ Based on an original patch by Yuri Tikhonov ]\n\nImplement the state machine for handling the RAID-6 parities check and\nrepair functionality.  Note that the raid6 case does not need to check\nfor new failures, like raid5, as it will always writeback the correct\ndisks.  The raid5 case can be updated to check zero_sum_result to avoid\ngetting confused by new failures rather than retrying the entire check\noperation.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "a9b39a741a7e3b262b9f51fefb68e17b32756999",
      "tree": "659f32a0377ff241627eedb60816bda283e2233f",
      "parents": [
        "5599becca4bee7badf605e41fd5bcde76d51f2a4"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe_dirtying6\n\nIn the synchronous implementation of stripe dirtying we processed a\ndegraded stripe with one call to handle_stripe_dirtying6().  I.e.\ncompute the missing blocks from the other drives, then copy in the new\ndata and reconstruct the parities.\n\nIn the asynchronous case we do not perform stripe operations directly.\nInstead, operations are scheduled with flags to be later serviced by\nraid_run_ops.  So, for the degraded case the final reconstruction step\ncan only be carried out after all blocks have been brought up to date by\nbeing read, or computed.  Like the raid5 case schedule_reconstruction()\nsets STRIPE_OP_RECONSTRUCT to request a parity generation pass and\nthrough operation chaining can handle compute and reconstruct in a\nsingle raid_run_ops pass.\n\n[dan.j.williams@intel.com: fixup handle_stripe_dirtying6 gating]\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "5599becca4bee7badf605e41fd5bcde76d51f2a4",
      "tree": "c2d231dfb073dc19bd9ac7cdbac20e07280b9fb0",
      "parents": [
        "c0f7bddbe60f43578dccf4ffb8d4bff88f625ea7"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous handle_stripe_fill6\n\nModify handle_stripe_fill6 to work asynchronously by introducing\nfetch_block6 as the raid6 analog of fetch_block5 (schedule compute\noperations for missing/out-of-sync disks).\n\n[dan.j.williams@intel.com: compute D+Q in one pass]\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "c0f7bddbe60f43578dccf4ffb8d4bff88f625ea7",
      "tree": "4100908f0a90821b6b1e42b725f25d279525799f",
      "parents": [
        "ac6b53b6e6acab27e4f3e2383f9ac1f0d7c6200b"
      ],
      "author": {
        "name": "Yuri Tikhonov",
        "email": "yur@emcraft.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid5,6: common schedule_reconstruction for raid5/6\n\nExtend schedule_reconstruction5 for reuse by the raid6 path.  Add\nsupport for generating Q and BUG() if a request is made to perform\n\u0027prexor\u0027.\n\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ac6b53b6e6acab27e4f3e2383f9ac1f0d7c6200b",
      "tree": "e9c67502fd32a9eea4902ea382e51eecb09f2a54",
      "parents": [
        "4e7d2c0aefb77f7b24942e5af042a083be4d60bb"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 13:40:19 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:12 2009 -0700"
      },
      "message": "md/raid6: asynchronous raid6 operations\n\n[ Based on an original patch by Yuri Tikhonov ]\n\nThe raid_run_ops routine uses the asynchronous offload api and\nthe stripe_operations member of a stripe_head to carry out xor+pq+copy\noperations asynchronously, outside the lock.\n\nThe operations performed by RAID-6 are the same as in the RAID-5 case\nexcept for no support of STRIPE_OP_PREXOR operations. All the others\nare supported:\nSTRIPE_OP_BIOFILL\n - copy data into request buffers to satisfy a read request\nSTRIPE_OP_COMPUTE_BLK\n - generate missing blocks (1 or 2) in the cache from the other blocks\nSTRIPE_OP_BIODRAIN\n - copy data out of request buffers to satisfy a write request\nSTRIPE_OP_RECONSTRUCT\n - recalculate parity for new data that has entered the cache\nSTRIPE_OP_CHECK\n - verify that the parity is correct\n\nThe flow is the same as in the RAID-5 case, and reuses some routines, namely:\n1/ ops_complete_postxor (renamed to ops_complete_reconstruct)\n2/ ops_complete_compute (updated to set up to 2 targets uptodate)\n3/ ops_run_check (renamed to ops_run_check_p for xor parity checks)\n\n[neilb@suse.de: fixes to get it to pass mdadm regression suite]\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Yuri Tikhonov \u003cyur@emcraft.com\u003e\nSigned-off-by: Ilya Yanok \u003cyanok@emcraft.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n\n"
    },
    {
      "commit": "4e7d2c0aefb77f7b24942e5af042a083be4d60bb",
      "tree": "59d127eac9d9c0ff5feea9d741739ccc6fae65c3",
      "parents": [
        "cb3c82992f62f838e6476a0bff12909158007fc6"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:13:11 2009 -0700"
      },
      "message": "md/raid5: factor out mark_uptodate from ops_complete_compute5\n\nops_complete_compute5 can be reused in the raid6 path if it is updated to\ngenerically handle a second target.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "ad283ea4a3ce82cda2efe33163748a397b31b1eb",
      "tree": "11cd739195f336895abe9e4a62d824e49a41c24f",
      "parents": [
        "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "async_tx: add sum check flags\n\nReplace the flat zero_sum_result with a collection of flags to contain\nthe P (xor) zero-sum result, and the soon to be utilized Q (raid6 reed\nsolomon syndrome) zero-sum result.  Use the SUM_CHECK_ namespace instead\nof DMA_ since these flags will be used on non-dma-zero-sum enabled\nplatforms.\n\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n"
    },
    {
      "commit": "d6f38f31f3ad4b0dd33fe970988f14e7c65ef702",
      "tree": "0b881c68e676376f2f0eccb2eb377dc3561d395f",
      "parents": [
        "36d1c6476be51101778882897b315bd928c8c7b5"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:50:52 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid5,6: add percpu scribble region for buffer lists\n\nUse percpu memory rather than stack for storing the buffer lists used in\nparity calculations.  Include space for dma address conversions and pass\nthat to async_tx via the async_submit_ctl.scribble pointer.\n\n[ Impact: move memory pressure from stack to heap ]\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "36d1c6476be51101778882897b315bd928c8c7b5",
      "tree": "55b4ecd93ce9c22722c9c9da0dd28a2d2f7c082d",
      "parents": [
        "a11034b4282515fd7d9f6fdc0a1380781da461c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:22 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Aug 29 19:09:26 2009 -0700"
      },
      "message": "md/raid6: move the spare page to a percpu allocation\n\nIn preparation for asynchronous handling of raid6 operations move the\nspare page to a percpu allocation to allow multiple simultaneous\nsynchronous raid6 recovery operations.\n\nMake this allocation cpu hotplug aware to maximize allocation\nefficiency.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\n\n\n"
    },
    {
      "commit": "1a67dde0abba36421a1257d01ba9de2f6d1c160a",
      "tree": "c182c31207c46824097be7ce6b8813f05db4eb65",
      "parents": [
        "a639755cf885e437b2fe4168d35157fa90d530ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:49 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:41:49 2009 +1000"
      },
      "message": "md/raid5: Properly remove excess drives after shrinking a raid5/6\n\nWe were removing the drives, from the array, but not\nremoving symlinks from /sys/.... and not marking the device\nas having been removed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a639755cf885e437b2fe4168d35157fa90d530ab",
      "tree": "01d9a04a1c1c0b16863a51ec389470e436e9fb13",
      "parents": [
        "67ac6011db5d2b0c853d573ff474b25c85dfb644"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:13:00 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:13:00 2009 +1000"
      },
      "message": "md/raid5: make sure a reshape restarts at the correct address.\n\nThis \"if\" don\u0027t allow for the possibility that the number of devices\ndoesn\u0027t change, and so sector_nr isn\u0027t set correctly in that case.\nSo change \u0027\u003e\u0027 to \u0027\u003e\u003d\u0027.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "67ac6011db5d2b0c853d573ff474b25c85dfb644",
      "tree": "29b30e5e4eac0564c34e0b0b3d655383ba9c783f",
      "parents": [
        "51d5668cb2e3fd1827a55184e48606fff054c5be"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:06:24 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 13 10:06:24 2009 +1000"
      },
      "message": "md/raid5: allow new reshape modes to be restarted in the middle.\n\nmd/raid5 doesn\u0027t allow a reshape to restart if it involves writing\nover the same part of disk that it would be reading from.\nThis happens at the beginning of a reshape that increases the number\nof devices, at the end of a reshape that decreases the number of\ndevices, and continuously for a reshape that does not change the\nnumber of devices.\n\nThe current code is correct for the \"increase number of devices\"\ncase as the critical section at the start is handled by userspace\nperforming a backup.\n\nIt does not work for reducing the number of devices, or the\nno-change case.\nFor \u0027reducing\u0027, we need to invert the test.  For no-change we cannot\nreally be sure things will be safe, so simply require the array\nto be read-only, which is how the user-space code which carefully\nstarts such arrays works.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "449aad3e25358812c43afc60918c5ad3819488e7",
      "tree": "45fab3b82fc1ed06959537a0801319045cf4c102",
      "parents": [
        "64bd660b51b2da92e99a5e97349f6558349f11c5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: Use revalidate_disk to effect changes in size of device.\n\nAs revalidate_disk calls check_disk_size_change, it will cause\nany capacity change of a gendisk to be propagated to the blockdev\ninode.  So use that instead of mucking about with locks and\ni_size_write.\n\nAlso add a call to revalidate_disk in do_md_run and a few other places\nwhere the gendisk capacity is changed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "64bd660b51b2da92e99a5e97349f6558349f11c5",
      "tree": "d35be79528dc8730b908e9d78357454ff22aee72",
      "parents": [
        "e516402c0d4fc02be4af9fa8c18954d4f9deb44e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:58 2009 +1000"
      },
      "message": "md: allow raid5_quiesce to work properly when reshape is happening.\n\nThe -\u003equiesce method is not supposed to stop resync/recovery/reshape,\njust normal IO.\nBut in raid5 we don\u0027t have a way to know which stripes are being\nused for normal IO and which for resync etc, so we need to wait for\nall stripes to be idle to be sure that all writes have completed.\n\nHowever reshape keeps at least some stripe busy for an extended period\nof time, so a call to raid5_quiesce can block for several seconds\nneedlessly.\nSo arrange for reshape etc to pause briefly while raid5_quiesce is\ntrying to quiesce the array so that the active_stripes count can\ndrop to zero.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e516402c0d4fc02be4af9fa8c18954d4f9deb44e",
      "tree": "8fa40d8f835d643ed903e1a89567a53256acc395",
      "parents": [
        "70471dafe3390243c598a3165dfb86b8b8b3f4fe"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Aug 03 10:59:57 2009 +1000"
      },
      "message": "md/raid5: set reshape_position correctly when reshape starts.\n\nAs the internal reshape_progress counter is the main driver\nfor reshape, the fact that reshape_position sometimes starts with the\nwrong value has minimal effect.  It is visible in sysfs and that\nis all.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "95fc17aac45300f45968aacd97a536ddd8db8101",
      "tree": "9ca3004304165a17c2923f25ee1df196928ce858",
      "parents": [
        "7d3e91b8a1f5179d56a7412d4b499f2d5fc6b25d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jul 31 12:39:15 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 31 12:39:15 2009 +1000"
      },
      "message": "md/raid6: release spare page at -\u003estop()\n\nAdd missing call to safe_put_page from stop() by unifying open coded\nraid5_conf_t de-allocation under free_conf().\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a11034b4282515fd7d9f6fdc0a1380781da461c3",
      "tree": "31731cf11de0f1fbeaa3e818740b83221badee4c",
      "parents": [
        "04ce9ab385dc97eb55299d533cd3af79b8fc7529"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:16 2009 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jul 14 11:48:16 2009 -0700"
      },
      "message": "md/raid6: release spare page at -\u003estop()\n\nAdd missing call to safe_put_page from stop() by unifying open coded\nraid5_conf_t de-allocation under free_conf().\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "e62e58a5ffdc98ac28d8dbd070c857620d541f99",
      "tree": "0ec3471f4e66e3a376ac8cb2da79d6123e7aa2cf",
      "parents": [
        "a5c308d4d1659b1f4833b863394e3e24cdbdfc6e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "message": "md: use interruptible wait when duration is controlled by userspace.\n\nUser space can set various limits on an md array so that resync waits\nwhen it gets to a certain point, or so that I/O is blocked for a short\nwhile.\nWhen md is waiting against one of these limit, it should use an\ninterruptible wait so as not to add to the load average, and so are\nnot to trigger a warning if the wait goes on for too long.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a5c308d4d1659b1f4833b863394e3e24cdbdfc6e",
      "tree": "6affde6f3f03c01f651210cc042a07ba70533d03",
      "parents": [
        "0909dc448c98ed5021c87ffdfc09fb473aa464ab"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 13:15:35 2009 +1000"
      },
      "message": "md/raid5: suspend shouldn\u0027t affect read requests.\n\nmd allows write to regions on an array to be suspended temporarily.\nThis allows user-space to participate is aspects of reshape.\nIn particular, data can be copied with not risk of a race.\nWe should not be blocking read requests though, so don\u0027t.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f6c2e4b325a8e9f8f47febb2fd0ed4fae7d45a9",
      "tree": "6e383e2ec48b5c90fe07325a7f6ab38ea1a97dfa",
      "parents": [
        "5a4f13fad1ab5bd08dea78fc55321e429d83cddf"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Jul 01 11:13:45 2009 +1000"
      },
      "message": "md: Use new topology calls to indicate alignment and I/O sizes\n\nSwitch MD over to the new disk_stack_limits() function which checks for\naligment and adjusts preferred I/O sizes when stacking.\n\nAlso indicate preferred I/O sizes where applicable.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "48606a9f2fc034f0b308d088c1f7ab6d407c462c",
      "tree": "4d1e9f14a3400905ff6c1a6d16c423da013bee8d",
      "parents": [
        "7a3ab908948b6296ee7e81d42f7c176361c51975"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 09:14:12 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 09:14:12 2009 +1000"
      },
      "message": "md/raid5: correctly update sync_completed when we reach max_resync\n\nAt the end of reshape_request we update cyrr_resync_completed\nif we are about to pause due to reaching resync_max.\nHowever we update it to the wrong value.  We need to add the\n\"reshape_sectors\" that have just been reshaped.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7a3ab908948b6296ee7e81d42f7c176361c51975",
      "tree": "61a066da1bda9af8268bb865e609518be8efd024",
      "parents": [
        "495d357301e1de01fabe30ce9a555301fb4675c3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Jun 16 16:00:33 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:50:18 2009 +1000"
      },
      "message": "md/raid5: add missing call to schedule() after prepare_to_wait()\n\nIn the unlikely event that reshape progresses past the current request\nwhile it is waiting for a stripe we need to schedule() before retrying\nfor 2 reasons:\n1/ Prevent list corruption from duplicated list_add() calls without\n   intervening list_del().\n2/ Give the reshape code a chance to make some progress to resolve the\n   conflict.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c6ac868b107ed50a46204f6d14e2ad9443ff146",
      "tree": "a0690ce92ed1993cc3211448948f3964c389c082",
      "parents": [
        "50ac168a6e0a061bf5346d53aa9e7beb94c97527"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:48:06 2009 +1000"
      },
      "message": "md: Push down reconstruction log message to personality code.\n\nCurrently, the md layer checks in analyze_sbs() if the raid level\nsupports reconstruction (mddev-\u003elevel \u003e\u003d 1) and if reconstruction is\nin progress (mddev-\u003erecovery_cp !\u003d MaxSector).\n\nMove that printk into the personality code of those raid levels that\ncare (levels 1, 4, 5, 6, 10).\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "50ac168a6e0a061bf5346d53aa9e7beb94c97527",
      "tree": "4f1eff67793bd8349a1995c921a63e9512be7818",
      "parents": [
        "597a711b69cfff95c4b8f6069037e7ad3fc71f56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:55 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:55 2009 +1000"
      },
      "message": "md: merge reconfig and check_reshape methods.\n\nThe difference between these two methods is artificial.\nBoth check that a pending reshape is valid, and perform any\naspect of it that can be done immediately.\n\u0027reconfig\u0027 handles chunk size and layout.\n\u0027check_reshape\u0027 handles raid_disks.\n\nSo make them just one method.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "597a711b69cfff95c4b8f6069037e7ad3fc71f56",
      "tree": "8c2cfa4c1223827a560de2f14da426d4822151c4",
      "parents": [
        "01ee22b496c41384eaa6dcae983c86d8bc32fbb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:42 2009 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Jun 18 08:47:42 2009 +1000"
      },
      "message": "md: remove unnecessary arguments from -\u003ereconfig method.\n\nPassing the new layout and chunksize as args is not necessary as\nthe mddev has fields for new_check and new_layout.\n\nThis is preparation for combining the check_reshape and reconfig\nmethods\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    }
  ],
  "next": "01ee22b496c41384eaa6dcae983c86d8bc32fbb8"
}
