)]}'
{
  "log": [
    {
      "commit": "56ac36d722d0d27c03599d1245ac0ab59e474e5c",
      "tree": "e65f4d860549532a570b92995906f3c3dec9c529",
      "parents": [
        "0310fa216decc3ecfab41f327638fa48a81f3735"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Aug 07 10:02:47 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Aug 07 10:02:47 2008 -0700"
      },
      "message": "md: cancel check/repair requests when recovery is needed\n\nIf a \u0027repair\u0027 is requested when an array is in a position to \u0027recover\u0027 raid1\nwill perform the repair while md believes a recovery is happening.  Address\nthis at both ends, i.e. cancel check/repair requests upon detecting a\nrecover condition and do not call -\u003espare_active after completing a\ncheck/repair.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "0310fa216decc3ecfab41f327638fa48a81f3735",
      "tree": "86fc2736802c55de2e21a4e223c34d9e8a1e93a2",
      "parents": [
        "c89a8eee61540df04fc83f32f51ef0f46ec018b1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:14 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Allow raid10 resync to happening in larger chunks.\n\nThe raid10 resync/recovery code currently limits the amount of\nin-flight resync IO to 2Meg.  This was copied from raid1 where\nit seems quite adequate.  However for raid10, some layouts require\na bit of seeking to perform a resync, and allowing a larger buffer\nsize means that the seeking can be significantly reduced.\n\nThere is probably no real need to limit the amount of in-flight\nIO at all.  Any shortage of memory will naturally reduce the\namount of buffer space available down to a set minimum, and any\nconcurrent normal IO will quickly cause resync IO to back off.\n\nThe only problem would be that normal IO has to wait for all resync IO\nto finish, so a very large amount of resync IO could cause unpleasant\nlatency when normal IO starts up.\n\nSo: increase RESYNC_DEPTH to allow 32Meg of buffer (if memory is\navailable) which seems to be a good amount.  Also reduce the amount\nof memory reserved as there is no need to keep 2Meg just for resync if\nmemory is tight.\n\nThanks to Keld for the suggestion.\n\nCc: Keld Jørn Simonsen \u003ckeld@dkuug.dk\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c89a8eee61540df04fc83f32f51ef0f46ec018b1",
      "tree": "7bffba40357f654de8ed31bc6a0e7468daa61234",
      "parents": [
        "ac4090d24c6a26211bc4523d920376e054d4f3f8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Allow faulty devices to be removed from a readonly array.\n\nRemoving faulty devices from an array is a two stage process.\nFirst the device is moved from being a part of the active array\nto being similar to a spare device.  Then it can be removed\nby a request from user space.\n\nThe first step is currently not performed for read-only arrays,\nso the second step can never succeed.\n\nSo allow readonly arrays to remove failed devices (which aren\u0027t\nblocked).\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ac4090d24c6a26211bc4523d920376e054d4f3f8",
      "tree": "5aabdbb2448967cbfc23be2fa6714d1c1bbf29dc",
      "parents": [
        "dba034eef2456d2a9f9a76806846c97acf6c3ad1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Don\u0027t let a blocked_rdev interfere with read request in raid5/6\n\nWhen we have externally managed metadata, we need to mark a failed\ndevice as \u0027Blocked\u0027 and not allow any writes until that device\nhave been marked as faulty in the metadata and the Blocked flag has\nbeen removed.\n\nHowever it is perfectly OK to allow read requests when there is a\nBlocked device, and with a readonly array, there may not be any\nmetadata-handler watching for blocked devices.\n\nSo in raid5/raid6 only allow a Blocked device to interfere with\nWrite request or resync.  Read requests go through untouched.\n\nraid1 and raid10 already differentiate between read and write\nproperly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "dba034eef2456d2a9f9a76806846c97acf6c3ad1",
      "tree": "3cf51b72fc5be671e986a39c389aa5332994e2a2",
      "parents": [
        "2b25000bf5157c28d8591f03f0575248a8cbd900"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:32 2008 +1000"
      },
      "message": "Fail safely when trying to grow an array with a write-intent bitmap.\n\nWe cannot currently change the size of a write-intent bitmap.\nSo if we change the size of an array which has such a bitmap, it\ntries to set bits beyond the end of the bitmap.\n\nFor now, simply reject any request to change the size of an array\nwhich has a bitmap.  mdadm can remove the bitmap and add a new one\nafter the array has changed size.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b25000bf5157c28d8591f03f0575248a8cbd900",
      "tree": "f01260723348738076becc9f62872d87819f3159",
      "parents": [
        "19052c0e85a3e9d3b7d190b29fcdbf0e6c105381"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:31 2008 +1000"
      },
      "message": "Restore force switch of md array to readonly at reboot time.\n\nA recent patch allowed do_md_stop to know whether it was being called\nvia an ioctl or not, and thus where to allow for an extra open file\ndescriptor when checking if it is in use.\nThis broke then switch to readonly performed by the shutdown notifier,\nwhich needs to work even when the array is still (apparently) active\n(as md doesn\u0027t get told when the filesystem becomes readonly).\n\nSo restore this feature by pretending that there can be lots of\nfile descriptors open, but we still want do_md_stop to switch to\nreadonly.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "19052c0e85a3e9d3b7d190b29fcdbf0e6c105381",
      "tree": "6f61eacfe7ade13f0bf06adba5efac052e1038c0",
      "parents": [
        "2b12a4c524812fb3f6ee590a02e65b95c8c32229"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:54:13 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 05 15:56:31 2008 +1000"
      },
      "message": "Make writes to md/safe_mode_delay immediately effective.\n\nIf we reduce the \u0027safe_mode_delay\u0027, it could still wait for the old\ndelay to completely expire before doing anything about safe_mode.\nThus the effect if the change is delayed.\n\nTo make the effect more immediate, run the timeout function\nimmediately if the delay was reduced.  This may cause it to run\nslightly earlier that required, but that is the safer option.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1e24b15b267293567a8d752721c7ae63f281325a",
      "tree": "ee63644d2dc59899e42ec0802c201140e3a92e5e",
      "parents": [
        "63a16f90167850010864a9e8ebb71d216983090f",
        "388667bed591b2359713bb17d5de0cf56e961447"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 11:56:07 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 11:56:07 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: raid10: wake up frozen array\n  md: do not count blocked devices as spares\n  md: do not progress the resync process if the stripe was blocked\n  md: delay notification of \u0027active_idle\u0027 to the recovery thread\n  md: fix merge error\n  md: move async_tx_issue_pending_all outside spin_lock_irq\n"
    },
    {
      "commit": "b17b3d479c4c43c3a980ee553c3be3ca456523de",
      "tree": "6715c10bfe1301eb3c112b17a858b541ce14aef5",
      "parents": [
        "31582b094d640fdab3fd29237b348a4c7c8646fb",
        "93769f58078e2a066b56217cae1e343ac5a6b78c"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 11:46:00 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Aug 01 11:46:00 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block:\n  md: the bitmap code needs to use blk_plug_device_unlocked()\n  block: add a blk_plug_device_unlocked() that grabs the queue lock\n"
    },
    {
      "commit": "93769f58078e2a066b56217cae1e343ac5a6b78c",
      "tree": "71ed73834f6163701f368324de46f4b6713390ed",
      "parents": [
        "6c5e0c4d518a37e1d5d794c14433e80284415079"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 01 20:32:31 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Aug 01 20:32:31 2008 +0200"
      },
      "message": "md: the bitmap code needs to use blk_plug_device_unlocked()\n\nIt doesn\u0027t hold the queue lock, so it\u0027s both racey on the queue flags\nand thus spews a warning.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "d5686b444ff3f72808d2b3fbd58672a86cdf38e7",
      "tree": "d3cdebc042269641f7134556e2f8d263d526581a",
      "parents": [
        "a95164d979c5ca061f15bcaadc829c146693d4d9"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 01 05:00:11 2008 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Aug 01 11:25:31 2008 -0400"
      },
      "message": "[PATCH] switch mtd and dm-table to lookup_bdev()\n\nNo need to open-code it...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "388667bed591b2359713bb17d5de0cf56e961447",
      "tree": "aa8a28db549719fecc540c9c0faf5bba58827ab2",
      "parents": [
        "e542713529e323ff09d7aeb5806cf29f6f160f53"
      ],
      "author": {
        "name": "Arthur Jones",
        "email": "ajones@riverbed.com",
        "time": "Fri Jul 25 12:03:38 2008 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Aug 01 12:55:14 2008 +1000"
      },
      "message": "md: raid10: wake up frozen array\n\nWhen rescheduling a bio in raid10, we wake up\nthe md thread, but if the array is frozen, this\nwill have no effect.  This causes the array to\nremain frozen for eternity.  We add a wake_up\nto allow the array to de-freeze.  This code is\nnearly identical to the raid1 code, which has\nthis fix already.\n\nSigned-off-by: Arthur Jones \u003cajones@riverbed.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e542713529e323ff09d7aeb5806cf29f6f160f53",
      "tree": "751dffc2043342eb6f76b0c37a07a698462b5516",
      "parents": [
        "df10cfbc4d7ab93260d997df754219d390d62a9d"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 28 23:28:06 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 28 17:52:44 2008 -0700"
      },
      "message": "md: do not count blocked devices as spares\n\nremove_and_add_spares() assumes that failed devices have been hot-removed\nfrom the array.  Removal is skipped in the \u0027blocked\u0027 case so do not count a\ndevice in this state as \u0027spare\u0027.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "df10cfbc4d7ab93260d997df754219d390d62a9d",
      "tree": "23908d827de85f16f9404875859e51babb966856",
      "parents": [
        "d8e64406a037a64444175730294e449c9e21f5ec"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 28 23:10:39 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jul 28 17:52:37 2008 -0700"
      },
      "message": "md: do not progress the resync process if the stripe was blocked\n\nhandle_stripe will take no action on a stripe when waiting for userspace\nto unblock the array, so do not report completed sectors.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "ae11b1b36da726a8a93409b896704edc6b4f3402",
      "tree": "737e3602cb426c87f64ad26ccbfc12ce707d7b9e",
      "parents": [
        "057ea7c9683c3d684128cced796f03c179ecf1c2"
      ],
      "author": {
        "name": "Hannes Reinecke",
        "email": "hare@suse.de",
        "time": "Thu Jul 17 17:49:02 2008 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Sat Jul 26 15:14:53 2008 -0400"
      },
      "message": "[SCSI] scsi_dh: attach to hardware handler from dm-mpath\n\nmultipath keeps a separate device table which may be\nmore current than the built-in one.\nSo we should make sure to always call -\u003eattach whenever\na multipath map with hardware handler is instantiated.\nAnd we should call -\u003edetach on removal, too.\n\n[sekharan: update as per comments from agk]\nSigned-off-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "d8e64406a037a64444175730294e449c9e21f5ec",
      "tree": "5ac7525899ebc1d2fd9a83a6e19cd0b1b1b1711d",
      "parents": [
        "2339788376e2d69a9154130e4dacd5b21ce63094"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 13:09:48 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 13:09:48 2008 -0700"
      },
      "message": "md: delay notification of \u0027active_idle\u0027 to the recovery thread\n\nsysfs_notify might sleep, so do not call it from md_safemode_timeout.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "2339788376e2d69a9154130e4dacd5b21ce63094",
      "tree": "ed8f21a7a726472fd089365b8913f0e950edf12a",
      "parents": [
        "c9f21aaff1d1fb5629325130af469532d19beb93"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 20:05:34 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 13:09:45 2008 -0700"
      },
      "message": "md: fix merge error\n\nThe original STRIPE_OP_IO removal patch had the following hunk:\n\n-               for (i \u003d conf-\u003eraid_disks; i--; ) {\n+               for (i \u003d conf-\u003eraid_disks; i--; )\n                        set_bit(R5_Wantwrite, \u0026sh-\u003edev[i].flags);\n-                       if (!test_and_set_bit(STRIPE_OP_IO, \u0026sh-\u003eops.pending))\n-                               sh-\u003eops.count++;\n-               }\n\nHowever it appears the hunk became broken after merging:\n-               for (i \u003d conf-\u003eraid_disks; i--; ) {\n+               for (i \u003d conf-\u003eraid_disks; i--; )\n                        set_bit(R5_Wantwrite, \u0026sh-\u003edev[i].flags);\n                        set_bit(R5_LOCKED, \u0026dev-\u003eflags);\n                        s.locked++;\n-                       if (!test_and_set_bit(STRIPE_OP_IO, \u0026sh-\u003eops.pending))\n-                               sh-\u003eops.count++;\n-               }\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "c9f21aaff1d1fb5629325130af469532d19beb93",
      "tree": "41bb8d2e9d0416d76698d7610b2cbda5ea496cda",
      "parents": [
        "4b80991c6cb9efa607bc4fd6f3ecdf5511c31bb0"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 12:05:51 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Jul 23 12:05:51 2008 -0700"
      },
      "message": "md: move async_tx_issue_pending_all outside spin_lock_irq\n\nSome dma drivers need to call spin_lock_bh in their device_issue_pending\nroutines.  This change avoids:\n\nWARNING: at kernel/softirq.c:136 local_bh_enable_ip+0x3a/0x85()\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "b7e6f62fe259187f2578d00960ef1b0e6ff6afd5",
      "tree": "796fd3c878a2f8d8d55ea1e52ef236742a48c3dd",
      "parents": [
        "8a392625b665c676a77c62f8608d10ff430bcb83",
        "d41e26b901111f4e540aa2c27ec7a1681c782be9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 21 10:30:10 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 21 10:30:10 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:\n  dm crypt: add merge\n  dm table: remove merge_bvec sector restriction\n  dm: linear add merge\n  dm: introduce merge_bvec_fn\n  dm snapshot: use per device mempools\n  dm snapshot: fix race during exception creation\n  dm snapshot: track snapshot reads\n  dm mpath: fix test for reinstate_path\n  dm mpath: return parameter error\n  dm io: remove struct padding\n  dm log: make dm_dirty_log init and exit static\n  dm mpath: free path selector on invalid args\n"
    },
    {
      "commit": "8a392625b665c676a77c62f8608d10ff430bcb83",
      "tree": "4000a65d61baed73200e47f91dea5263ed16edd0",
      "parents": [
        "519f0141f1c42e2b8b59c7dea005cbf6095358e8",
        "4b80991c6cb9efa607bc4fd6f3ecdf5511c31bb0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 21 10:29:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 21 10:29:12 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (52 commits)\n  md: Protect access to mddev-\u003edisks list using RCU\n  md: only count actual openers as access which prevent a \u0027stop\u0027\n  md: linear: Make array_size sector-based and rename it to array_sectors.\n  md: Make mddev-\u003earray_size sector-based.\n  md: Make super_type-\u003erdev_size_change() take sector-based sizes.\n  md: Fix check for overlapping devices.\n  md: Tidy up rdev_size_store a bit:\n  md: Remove some unused macros.\n  md: Turn rdev-\u003esb_offset into a sector-based quantity.\n  md: Make calc_dev_sboffset() return a sector count.\n  md: Replace calc_dev_size() by calc_num_sectors().\n  md: Make update_size() take the number of sectors.\n  md: Better control of when do_md_stop is allowed to stop the array.\n  md: get_disk_info(): Don\u0027t convert between signed and unsigned and back.\n  md: Simplify restart_array().\n  md: alloc_disk_sb(): Return proper error value.\n  md: Simplify sb_equal().\n  md: Simplify uuid_equal().\n  md: sb_equal(): Fix misleading printk.\n  md: Fix a typo in the comment to cmd_match().\n  ...\n"
    },
    {
      "commit": "d41e26b901111f4e540aa2c27ec7a1681c782be9",
      "tree": "7f05c209b92c0dfc2a96daeac3a4812f34b70b10",
      "parents": [
        "9980c638a666ecd88acaf0a7ab91043d4a3f44d1"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jul 21 12:00:40 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:40 2008 +0100"
      },
      "message": "dm crypt: add merge\n\nThis patch implements biovec merge function for crypt target.\n\nIf the underlying device has merge function defined, call it.\nIf not, keep precomputed value.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9980c638a666ecd88acaf0a7ab91043d4a3f44d1",
      "tree": "89434f8d20d4e330400d8663dcc53188a9956f8c",
      "parents": [
        "7bc3447b692185c5ea78bee93d0ef1dee2fd7ce7"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jul 21 12:00:39 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:39 2008 +0100"
      },
      "message": "dm table: remove merge_bvec sector restriction\n\nRemove max_sector restriction - merge function replaced it.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7bc3447b692185c5ea78bee93d0ef1dee2fd7ce7",
      "tree": "f30ddd021bcbb333f12b1a57a6969e0d52b7cdab",
      "parents": [
        "f6fccb1213ba3d661baeb2a5eee0a9701dc03e1b"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jul 21 12:00:38 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:38 2008 +0100"
      },
      "message": "dm: linear add merge\n\nThis patch implements biovec merge function for linear target.\n\nIf the underlying device has merge function defined, call it.\nIf not, keep precomputed value.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f6fccb1213ba3d661baeb2a5eee0a9701dc03e1b",
      "tree": "456671e791f8a61b40e0d622591b902ca1351ae7",
      "parents": [
        "92e868122edf08b9fc06b112e7e0c80ab94c1f93"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Mon Jul 21 12:00:37 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:37 2008 +0100"
      },
      "message": "dm: introduce merge_bvec_fn\n\nIntroduce a bvec merge function for device mapper devices\nfor dynamic size restrictions.\n\nThis code ensures the requested biovec lies within a single\ntarget and then calls a target-specific function to check\nagainst any constraints imposed by underlying devices.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "92e868122edf08b9fc06b112e7e0c80ab94c1f93",
      "tree": "9cd2e5e2f15adcaf1b8d3f8f55d5a676ad40bfd6",
      "parents": [
        "a8d41b59f3f5a7ac19452ef442a7fc1b5fa17366"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:35 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:35 2008 +0100"
      },
      "message": "dm snapshot: use per device mempools\n\nChange snapshot per-module mempool to per-device mempool.\n\nPer-module mempools could cause a deadlock if multiple\nsnapshot devices are stacked above each other.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a8d41b59f3f5a7ac19452ef442a7fc1b5fa17366",
      "tree": "f9435bed2d582e4cd3e91e4d6fb18a18f62aa019",
      "parents": [
        "cd45daffd1f7b53aac0835b23e97f814ec3f10dc"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:34 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:34 2008 +0100"
      },
      "message": "dm snapshot: fix race during exception creation\n\nFix a race condition that returns incorrect data when a write causes an\nexception to be allocated whilst a read is still in flight.\n\nThe race condition happens as follows:\n* A read to non-reallocated sector in the snapshot is submitted so that the\n  read is routed to the original device.\n* A write to the original device is submitted. The write causes an exception\n  that reallocates the block.  The write proceeds.\n* The original read is dequeued and reads the wrong data.\n\nThis race can be triggered with CFQ scheduler and one thread writing and\nmultiple threads reading simultaneously.\n\n(This patch relies upon the earlier dm-kcopyd-per-device.patch to avoid a\ndeadlock.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "cd45daffd1f7b53aac0835b23e97f814ec3f10dc",
      "tree": "17d35682a8a97f3a73f513531f08ba7e0c8cd718",
      "parents": [
        "def052d21c4e77975bb75cf212f018ec913f8e2f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:32 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:32 2008 +0100"
      },
      "message": "dm snapshot: track snapshot reads\n\nWhenever a snapshot read gets mapped through to the origin, track it in\na per-snapshot hash table indexed by chunk number, using memory allocated\nfrom a new per-snapshot mempool.\n\nWe need to track these reads to avoid race conditions which will be fixed\nby patches that follow.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "def052d21c4e77975bb75cf212f018ec913f8e2f",
      "tree": "88a7bcd180f23d33b0e4f7728476b7b241df1f34",
      "parents": [
        "148acff615b403168cdf39e55bfcfaa6e4a7d233"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:31 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:31 2008 +0100"
      },
      "message": "dm mpath: fix test for reinstate_path\n\nFix test for reinstate_path method before attempting to use it.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\n"
    },
    {
      "commit": "148acff615b403168cdf39e55bfcfaa6e4a7d233",
      "tree": "e9879aecb1403f89ec1a6d37d2608dd9bf51e2ef",
      "parents": [
        "6ae2fa6718c398290be29ef740873640d25058b6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:30 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:30 2008 +0100"
      },
      "message": "dm mpath: return parameter error\n\nReturn a specific error message if there are an invalid number of multipath\narguments.\n\nThis invalid command returns an \"Unknown error\" because the ti-\u003eerror field is\nnot set\n\ndmsetup create --table \u00270 2 multipath 0 0 1 1 round-robin 0 1 1 /dev/sdh\u0027 mpath0\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6ae2fa6718c398290be29ef740873640d25058b6",
      "tree": "057e8601891ed77fecbdb968033cc9dc06f8b788",
      "parents": [
        "c8da2f8dd86d70559ec4e50251f6a755b42bd5b4"
      ],
      "author": {
        "name": "Richard Kennedy",
        "email": "richard@rsk.demon.co.uk",
        "time": "Mon Jul 21 12:00:28 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:28 2008 +0100"
      },
      "message": "dm io: remove struct padding\n\nRearrange struct dm_io.\nShrinks size from 40 -\u003e 32 allowing more objects/slab.\n\nSigned-off-by: Richard Kennedy \u003crichard@rsk.demon.co.uk\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c8da2f8dd86d70559ec4e50251f6a755b42bd5b4",
      "tree": "1991d27441d08a727160d75d7b2723b5514b19e1",
      "parents": [
        "371b2e348b7731a548b0a7432ca2ba32e90dd16f"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@kernel.org",
        "time": "Mon Jul 21 12:00:27 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:27 2008 +0100"
      },
      "message": "dm log: make dm_dirty_log init and exit static\n\ndm_dirty_log_{init,exit}() can now become static.\n\nSigned-off-by: Adrian Bunk \u003cbunk@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "371b2e348b7731a548b0a7432ca2ba32e90dd16f",
      "tree": "d7adce2fcaf95bfbbdfd4779d0e03e2980308b65",
      "parents": [
        "5b664cb235e97afbf34db9c4d77f08ebd725335e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Jul 21 12:00:24 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jul 21 12:00:24 2008 +0100"
      },
      "message": "dm mpath: free path selector on invalid args\n\nFree path selector if the arguments are invalid.\n\nThis command (note that it is invalid) causes reference leak on module\n\"dm_round_robin\" and prevents the module from being removed.\n\ndmsetup create --table \u00270 2 multipath 0 0 1 1 round-robin /dev/sdh\u0027 mpath0\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4b80991c6cb9efa607bc4fd6f3ecdf5511c31bb0",
      "tree": "5e2ba7d509af245c29bdf04b00960cc367972c44",
      "parents": [
        "f2ea68cf42aafdd93393b6b8b20fc3c2b5f4390c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: Protect access to mddev-\u003edisks list using RCU\n\nAll modifications and most access to the mddev-\u003edisks list are made\nunder the reconfig_mutex lock.  However there are three places where\nthe list is walked without any locking.  If a reconfig happens at this\ntime, havoc (and oops) can ensue.\n\nSo use RCU to protect these accesses:\n  - wrap them in rcu_read_{,un}lock()\n  - use list_for_each_entry_rcu\n  - add to the list with list_add_rcu\n  - delete from the list with list_del_rcu\n  - delay the \u0027free\u0027 with call_rcu rather than schedule_work\n\nNote that export_rdev did a list_del_init on this list.  In almost all\ncases the entry was not in the list anymore so it was a no-op and so\nsafe.  It is no longer safe as after list_del_rcu we may not touch\nthe list_head.\nAn audit shows that export_rdev is called:\n  - after unbind_rdev_from_array, in which case the delete has\n     already been done,\n  - after bind_rdev_to_array fails, in which case the delete isn\u0027t needed.\n  - before the device has been put on a list at all (e.g. in\n      add_new_disk where reading the superblock fails).\n  - and in autorun devices after a failure when the device is on a\n      different list.\n\nSo remove the list_del_init call from export_rdev, and add it back\nimmediately before the called to export_rdev for that last case.\n\nNote also that -\u003esame_set is sometimes used for lists other than\nmddev-\u003elist (e.g. candidates).  In these cases rcu is not needed.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f2ea68cf42aafdd93393b6b8b20fc3c2b5f4390c",
      "tree": "00b025b91898ff32dba742b5075dd290fec4dc91",
      "parents": [
        "d6e2215052810678bc9782fd980b52706fc71f50"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: only count actual openers as access which prevent a \u0027stop\u0027\n\nOpen isn\u0027t the only thing that increments -\u003eactive.  e.g. reading\n/proc/mdstat will increment it briefly.  So to avoid false positives\nin testing for concurrent access, introduce a new counter that counts\njust the number of times the md device it open.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d6e2215052810678bc9782fd980b52706fc71f50",
      "tree": "63f355d1e072b6c4c48913e114c0154a5b08d792",
      "parents": [
        "f233ea5c9e0d8b95e4283bf6a3436b88f6fd3586"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:25 2008 +1000"
      },
      "message": "md: linear: Make array_size sector-based and rename it to array_sectors.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f233ea5c9e0d8b95e4283bf6a3436b88f6fd3586",
      "tree": "8a36b621de46da23f3957c6e3ea4d653c2937544",
      "parents": [
        "15f4a5fdf3aa07b53f6a7969664741db5882e485"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 17:05:22 2008 +1000"
      },
      "message": "md: Make mddev-\u003earray_size sector-based.\n\nThis patch renames the array_size field of struct mddev_s to array_sectors\nand converts all instances to use units of 512 byte sectors instead of 1k\nblocks.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "15f4a5fdf3aa07b53f6a7969664741db5882e485",
      "tree": "1bd897fbbcf512d3c0c3b2b55633ae590558f314",
      "parents": [
        "d07bd3bcc456228b56a790897162a634691fed9b"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 14:42:12 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 14:42:12 2008 +1000"
      },
      "message": "md: Make super_type-\u003erdev_size_change() take sector-based sizes.\n\nAlso, change the type of the size parameter from unsigned long long to\nsector_t and rename it to num_sectors.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d07bd3bcc456228b56a790897162a634691fed9b",
      "tree": "cabb0feee45a7b3383fff4202adc35793c8bdbb1",
      "parents": [
        "d7027458d68b2f1752a28016dcf2ffd0a7e8f567"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Mon Jul 21 14:42:07 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 14:42:07 2008 +1000"
      },
      "message": "md: Fix check for overlapping devices.\n\nThe checks in overlaps() expect all parameters either in block-based\nor sector-based quantities. However, its single caller passes two\nrdev-\u003edata_offset arguments as well as two rdev-\u003esize arguments, the\nformer being sector counts while the latter are measured in 1K blocks.\n\nThis could cause rdev_size_store() to accept an invalid size from user\nspace. Fix it by passing only sector-based quantities to overlaps().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d7027458d68b2f1752a28016dcf2ffd0a7e8f567",
      "tree": "03bb7d75f4951eba4eff21926d1ce71c6d728260",
      "parents": [
        "7e93a89251d4ed7bd4475db62616ccd03ddfd01a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Sat Jul 12 10:37:50 2008 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Jul 21 14:22:18 2008 +1000"
      },
      "message": "md: Tidy up rdev_size_store a bit:\n\n - used strict_strtoull in place of simple_strtoull\n - use my_mddev in place of rdev-\u003emddev (they have the same value)\nand more significantly,\n - don\u0027t adjust mddev-\u003esize to fit, rather reject changes which make\n   rdev-\u003esize smaller than mddev-\u003esize\n\nAdjusting mddev-\u003esize is a hangover from bind_rdev_to_array which\ndoes a similar thing.  But it really is a better design to insist that\nmddev-\u003esize is set as required, then the rdev-\u003esizes are set to allow\nfor that.  The previous way invites confusion.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "89a93f2f4834f8c126e8d9dd6b368d0b9e21ec3d",
      "tree": "e731456fec0cab1225ad3e806dc8d3efefa0a78b",
      "parents": [
        "260eddf4391f162a69d1d163729249635fa7a78f",
        "fe9233fb6914a0eb20166c967e3020f7f0fba2c9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 18:58:04 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 15 18:58:04 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (102 commits)\n  [SCSI] scsi_dh: fix kconfig related build errors\n  [SCSI] sym53c8xx: Fix bogus sym_que_entry re-implementation of container_of\n  [SCSI] scsi_cmnd.h: remove double inclusion of linux/blkdev.h\n  [SCSI] make struct scsi_{host,target}_type static\n  [SCSI] fix locking in host use of blk_plug_device()\n  [SCSI] zfcp: Cleanup external header file\n  [SCSI] zfcp: Cleanup code in zfcp_erp.c\n  [SCSI] zfcp: zfcp_fsf cleanup.\n  [SCSI] zfcp: consolidate sysfs things into one file.\n  [SCSI] zfcp: Cleanup of code in zfcp_aux.c\n  [SCSI] zfcp: Cleanup of code in zfcp_scsi.c\n  [SCSI] zfcp: Move status accessors from zfcp to SCSI include file.\n  [SCSI] zfcp: Small QDIO cleanups\n  [SCSI] zfcp: Adapter reopen for large number of unsolicited status\n  [SCSI] zfcp: Fix error checking for ELS ADISC requests\n  [SCSI] zfcp: wait until adapter is finished with ERP during auto-port\n  [SCSI] ibmvfc: IBM Power Virtual Fibre Channel Adapter Client Driver\n  [SCSI] sg: Add target reset support\n  [SCSI] lib: Add support for the T10 (SCSI) Data Integrity Field CRC\n  [SCSI] sd: Move scsi_disk() accessor function to sd.h\n  ...\n"
    },
    {
      "commit": "fe9233fb6914a0eb20166c967e3020f7f0fba2c9",
      "tree": "45d6f25301e41ff9323f2eee20fce6ae341cda7f",
      "parents": [
        "d7f305e9a08040649b0800245e67708df58cdb55"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Fri May 23 18:16:40 2008 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Tue Jul 15 09:16:43 2008 -0500"
      },
      "message": "[SCSI] scsi_dh: fix kconfig related build errors\n\nDo not automatically \"select\" SCSI_DH for dm-multipath. If SCSI_DH\ndoesn\u0027t exist,just do not allow  hardware handlers to be used.\n\nHandle SCSI_DH being a module also. Make sure it doesn\u0027t allow DM_MULTIPATH\nto be compiled in when SCSI_DH is a module.\n\n[jejb: added comment for Kconfig syntax]\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nReported-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nReported-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "dddec01eb8e2b56267b37a6f9f0997a64b4e0b2a",
      "tree": "b6d8bfbce9abd105384b9d116499afbe306b9c22",
      "parents": [
        "7daf705f362e349983e92037a198b8821db198af",
        "32502b8413a77b54b9e19809404109590c32dfb7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 13:15:14 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Jul 14 13:15:14 2008 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-2.6-block: (37 commits)\n  splice: fix generic_file_splice_read() race with page invalidation\n  ramfs: enable splice write\n  drivers/block/pktcdvd.c: avoid useless memset\n  cdrom: revert commit 22a9189 (cdrom: use kmalloced buffers instead of buffers on stack)\n  scsi: sr avoids useless buffer allocation\n  block: blk_rq_map_kern uses the bounce buffers for stack buffers\n  block: add blk_queue_update_dma_pad\n  DAC960: push down BKL\n  pktcdvd: push BKL down into driver\n  paride: push ioctl down into driver\n  block: use get_unaligned_* helpers\n  block: extend queue_flag bitops\n  block: request_module(): use format string\n  Add bvec_merge_data to handle stacked devices and -\u003emerge_bvec()\n  block: integrity flags can\u0027t use bit ops on unsigned short\n  cmdfilter: extend default read filter\n  sg: fix odd style (extra parenthesis) introduced by cmd filter patch\n  block: add bounce support to blk_rq_map_user_iov\n  cfq-iosched: get rid of enable_idle being unused warning\n  allow userspace to modify scsi command filter on per device basis\n  ...\n"
    },
    {
      "commit": "0f420358e3a2abc028320ace7783e2e38cae77bf",
      "tree": "99b068212ad1dd8c5e97b151d796d66f53d1f3bb",
      "parents": [
        "b73df2d3d629aefa187a0a3574fd81455e026bc8"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Turn rdev-\u003esb_offset into a sector-based quantity.\n\nRename it to sb_start to make sure all users have been converted.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b73df2d3d629aefa187a0a3574fd81455e026bc8",
      "tree": "87e2a32c602c99cf69c298d3ed6e145a6202b481",
      "parents": [
        "e7debaa4951b37d6c9ace4c6b984cd4805c5bfbb"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Make calc_dev_sboffset() return a sector count.\n\nAs BLOCK_SIZE_BITS is 10 and\n\n\tMD_NEW_SIZE_SECTORS(2 * x) \u003d 2 * NEW_SIZE_BLOCKS(x),\n\nthe return value of calc_dev_sboffset() doubles. Fix up all three\ncallers accordingly.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e7debaa4951b37d6c9ace4c6b984cd4805c5bfbb",
      "tree": "9d61e2341af2161c0298c1396e6a85a1d4437eef",
      "parents": [
        "d71f9f88d74166dcdef743a057f9222d64d2d509"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:23 2008 +1000"
      },
      "message": "md: Replace calc_dev_size() by calc_num_sectors().\n\nNumber of sectors is the preferred unit for sizes of raid devices,\nso change calc_dev_size() so that it returns this unit instead of\nthe number of 1K blocks.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d71f9f88d74166dcdef743a057f9222d64d2d509",
      "tree": "af2c0a93855347bce2fc24ecffa27be035bc8ef0",
      "parents": [
        "df5b20cf68f9c90204c5fd36b7b090635cee3cdf"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "message": "md: Make update_size() take the number of sectors.\n\nChanging the internal representations of sizes of raid devices\nfrom 1K blocks to sector counts (512B units) is desirable because\nit allows to get rid of many divisions/multiplications and unnecessary\ncasts that are present in the current code.\n\nThis patch is a first step in this direction. It replaces the old\n1K-based \"size\" argument of update_size() by \"num_sectors\" and\nfixes up its two callers.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "df5b20cf68f9c90204c5fd36b7b090635cee3cdf",
      "tree": "d3d5690609085352485e8ddcc1650833df4be224",
      "parents": [
        "26ef379f53993b1da3c19b63257cd47e1d9cd672"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:22 2008 +1000"
      },
      "message": "md: Better control of when do_md_stop is allowed to stop the array.\n\ndo_md_stop check the number of active users before allowing the array\nto be stopped.\nTwo problems:\n  1/ it assumes the request is coming through an open file descriptor\n     (via ioctl) so it allows for that.  This is not always the case.\n  2/ it doesn\u0027t do the check it the array hasn\u0027t been activated.\n     This is not good for cases when we use an inactive array to hold\n     some devices in a container.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "26ef379f53993b1da3c19b63257cd47e1d9cd672",
      "tree": "c02f2acfb14c6b8294e101f53fb10a9d978844bb",
      "parents": [
        "80fab1d77b2852711917baa437e4fdab31c21fef"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "message": "md: get_disk_info(): Don\u0027t convert between signed and unsigned and back.\n\nThe current code copies a signed int from user space, converts it to\nunsigned and passes the unsigned value to find_rdev_nr() which expects\na signed value. Simply pass the signed value from user space directly.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "80fab1d77b2852711917baa437e4fdab31c21fef",
      "tree": "ee5fb082245d49780a890c09a3ba23c714fc4359",
      "parents": [
        "ebc243372842a81dddbe00bd047a25b8ee7d8b87"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:21 2008 +1000"
      },
      "message": "md: Simplify restart_array().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ebc243372842a81dddbe00bd047a25b8ee7d8b87",
      "tree": "8c362c91d8628b1362b7abb8abcd0a1e7ca7803c",
      "parents": [
        "ce0c8e05f8ef93d991d665aade8c4bf35806ea1a"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "message": "md: alloc_disk_sb(): Return proper error value.\n\nIf alloc_page() fails, ENOMEM is a more suitable error value\nthan EINVAL.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ce0c8e05f8ef93d991d665aade8c4bf35806ea1a",
      "tree": "e3fb5bb279452161aca0351993f76b98ffbbb662",
      "parents": [
        "05710466c9ef2e3ee55166934c801a2393c32f80"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "message": "md: Simplify sb_equal().\n\nThe only caller of sb_equal() tests the return value against\nzero, so it\u0027s OK to return the negated return value of memcmp().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "05710466c9ef2e3ee55166934c801a2393c32f80",
      "tree": "a0560ff7920fcb4de9af3b054dc40033b429701f",
      "parents": [
        "0306d5efbf897c7d410fd30b89fc7d97372aa501"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Fri Jul 11 22:02:20 2008 +1000"
      },
      "message": "md: Simplify uuid_equal().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2283af5b0b99565f516eacd756df2b1ddf9f4f85",
      "tree": "4930014b56cb1773e175cbeb8e7833584e3074bb",
      "parents": [
        "6329d3021bcfa9038621e6e917d98929421d8ec8",
        "7a1fc53c5adb910751a9b212af90302eb4ffb527"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 10 09:49:46 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 10 09:49:46 2008 -0700"
      },
      "message": "Merge branch \u0027for-2.6.26\u0027 of git://neil.brown.name/md\n\n* \u0027for-2.6.26\u0027 of git://neil.brown.name/md:\n  md: ensure all blocks are uptodate or locked when syncing\n"
    },
    {
      "commit": "7a1fc53c5adb910751a9b212af90302eb4ffb527",
      "tree": "9006ecc4323f2a55e6e16f2e19e41ec3c4c3a1ea",
      "parents": [
        "9bbbca3a0ee09293108b67835c6bdf6196d7bcb3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Jul 10 04:54:57 2008 -0700"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Thu Jul 10 15:25:18 2008 +1000"
      },
      "message": "md: ensure all blocks are uptodate or locked when syncing\n\nRemove the dubious attempt to prefer \u0027compute\u0027 over \u0027read\u0027.  Not only is it\nwrong given commit c337869d (md: do not compute parity unless it is on a failed\ndrive), but it can trigger a BUG_ON in handle_parity_checks5().\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "35020f1a06edade6f52fc8349e150d95cdf7fd90",
      "tree": "97941f31c713ddb4a5882a81af891fc1e9cc92e3",
      "parents": [
        "7f6ce7692807ad60d9341e41d565a7888a5bc2dd"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Sun Mar 23 15:10:33 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:53:20 2008 +1000"
      },
      "message": "md: sb_equal(): Fix misleading printk.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7f6ce7692807ad60d9341e41d565a7888a5bc2dd",
      "tree": "35ba61e02f4287c93c43a4c789000f67aed2b410",
      "parents": [
        "910d8cb3f4ef2c4a5914176592d2f2bc3cd94cdd"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Sun Mar 23 18:34:54 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:53:00 2008 +1000"
      },
      "message": "md: Fix a typo in the comment to cmd_match().\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "910d8cb3f4ef2c4a5914176592d2f2bc3cd94cdd",
      "tree": "3f3a692af0b19088762a9f2f7327f025243fb42a",
      "parents": [
        "9687a60c78bbf5649d9acbde1e8818be4c8c8b94"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 25 21:00:53 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:45 2008 +1000"
      },
      "message": "md: Fix typo in array_state comment.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9687a60c78bbf5649d9acbde1e8818be4c8c8b94",
      "tree": "df518b5c38d064c838e9304ceca5b2dbc9d4b903",
      "parents": [
        "13e53df354caea8986df951dcb6353c823e1f858"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Tue Mar 25 22:24:09 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:26 2008 +1000"
      },
      "message": "md: sync_speed_show(): Trivial cleanups.\n\n- Remove superfluous parentheses.\n- Make format string match the type of the variable that is printed.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13e53df354caea8986df951dcb6353c823e1f858",
      "tree": "16c6c2cde80cea148d467cffe7d08bfee042091e",
      "parents": [
        "2f9618ce63cb049c5587f5c650f2725c0035aa96"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Wed Mar 26 00:07:03 2008 +0100"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:15 2008 +1000"
      },
      "message": "md: do_md_run(): Fix misleading error message.\n\nIn case pers-\u003erun() succeeds but creating the bitmap fails, we\nprint an error message stating that pers-\u003erun() has failed.\n\nPrint this message only if pers-\u003erun() really failed.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2f9618ce63cb049c5587f5c650f2725c0035aa96",
      "tree": "87dbc733f7bc0fcbe753854055e42e1002d6f8bd",
      "parents": [
        "bb57fc64b251d2696900d8a8f25ad5272d5d9c2a"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Apr 25 18:57:58 2008 +0200"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:52:00 2008 +1000"
      },
      "message": "md: md_getgeo(): Move comment to proper position.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bb57fc64b251d2696900d8a8f25ad5272d5d9c2a",
      "tree": "62192d4c890c41e7a75307b0fcf586c7c4d00d56",
      "parents": [
        "0529613a1970fef1ba82ded431e2e2ee35b658af"
      ],
      "author": {
        "name": "Andre Noll",
        "email": "maan@systemlinux.org",
        "time": "Fri Apr 25 19:06:35 2008 +0200"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Tue Jul 08 10:51:29 2008 +1000"
      },
      "message": "md: md_ioctl(): Fix misleading indentation.\n\nSigned-off-by: Andre Noll \u003cmaan@systemlinux.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0529613a1970fef1ba82ded431e2e2ee35b658af",
      "tree": "63d9e89424fa5fe9aef6bf0b6f0ab63f4fe886be",
      "parents": [
        "5b1a4bf220a8f6f2650fdfdfebfda0f22f674d97",
        "b5470dc5fc18a8ff6517c3bb538d1479e58ecb02"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Tue Jul 08 10:13:28 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Tue Jul 08 10:13:28 2008 +1000"
      },
      "message": "Merge branch \u0027for-neil\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/md into for-next\n"
    },
    {
      "commit": "5b1a4bf220a8f6f2650fdfdfebfda0f22f674d97",
      "tree": "a1f22225aace571661c29e59ebd024bc4619e054",
      "parents": [
        "1fe797e67fb07d605b82300934d0de67068a0aca",
        "b7279469d66b55119784b8b9529c99c1955fe747"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Tue Jul 08 10:11:50 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Tue Jul 08 10:11:50 2008 +1000"
      },
      "message": "Merge branch \u0027master\u0027 into for-next\n"
    },
    {
      "commit": "cc371e66e340f35eed8dc4651c7c18e754c7fb26",
      "tree": "5a2d6727eb07a05999c531a90da43ab1c36b713e",
      "parents": [
        "b24498d477a14680fc3bb3ad884fa9fa76a2d237"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Jul 03 09:53:43 2008 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu Jul 03 13:21:15 2008 +0200"
      },
      "message": "Add bvec_merge_data to handle stacked devices and -\u003emerge_bvec()\n\nWhen devices are stacked, one device\u0027s merge_bvec_fn may need to perform\nthe mapping and then call one or more functions for its underlying devices.\n\nThe following bio fields are used:\n  bio-\u003ebi_sector\n  bio-\u003ebi_bdev\n  bio-\u003ebi_size\n  bio-\u003ebi_rw  using bio_data_dir()\n\nThis patch creates a new struct bvec_merge_data holding a copy of those\nfields to avoid having to change them directly in the struct bio when\ngoing down the stack only to have to change them back again on the way\nback up.  (And then when the bio gets mapped for real, the whole\nexercise gets repeated, but that\u0027s a problem for another day...)\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "cefcade9e7b2331110fdd709b5871ebcc5f9a40f",
      "tree": "d70257c00c11ae2c4aa4b045d03d2e73dcd7c1d7",
      "parents": [
        "c6b96d195a0fd132d6e8c783216d1d3f686e5ba8",
        "c7f1b2044191a82e7f0a1a674751ed582289e2e0"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 02 18:55:17 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Jul 02 18:55:17 2008 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:\n  dm crypt: use cond_resched\n"
    },
    {
      "commit": "c7f1b2044191a82e7f0a1a674751ed582289e2e0",
      "tree": "c200c19aca2faf22ad5c8636a3a783f8e26ef289",
      "parents": [
        "e1441b9a41c33aa9236008a7cfe49a8e723fb397"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Wed Jul 02 09:34:28 2008 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Jul 02 09:34:28 2008 +0100"
      },
      "message": "dm crypt: use cond_resched\n\nAdd cond_resched() to prevent monopolising CPU when processing large bios.\n\ndm-crypt processes encryption of bios in sector units.  If the bio request\nis big it can spend a long time in the encryption call.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nTested-by: Yan Li \u003celliot.li.tech@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b5470dc5fc18a8ff6517c3bb538d1479e58ecb02",
      "tree": "37b0eb3a4691bdbe58dc5c6c73b2dc8d3925b332",
      "parents": [
        "1fe797e67fb07d605b82300934d0de67068a0aca"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri Jun 27 21:44:04 2008 -0700"
      },
      "committer": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Jun 30 17:18:19 2008 -0700"
      },
      "message": "md: resolve external metadata handling deadlock in md_allow_write\n\nmd_allow_write() marks the metadata dirty while holding mddev-\u003elock and then\nwaits for the write to complete.  For externally managed metadata this causes a\ndeadlock as userspace needs to take the lock to communicate that the metadata\nupdate has completed.\n\nChange md_allow_write() in the \u0027external\u0027 case to start the \u0027mark active\u0027\noperation and then return -EAGAIN.  The expected side effects while waiting for\nuserspace to write \u0027active\u0027 to \u0027array_state\u0027 are holding off reshape (code\ncurrently handles -ENOMEM), cause some \u0027stripe_cache_size\u0027 change requests to\nfail, cause some GET_BITMAP_FILE ioctl requests to fall back to GFP_NOIO, and\ncause updates to \u0027raid_disks\u0027 to fail.  Except for \u0027stripe_cache_size\u0027 changes\nthese failures can be mitigated by coordinating with mdmon.\n\nmd_write_start() still prevents writes from occurring until the metadata\nhandler has had a chance to take action as it unconditionally waits for\nMD_CHANGE_CLEAN to be cleared.\n\n[neilb@suse.de: return -EAGAIN, try GFP_NOIO]\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "1fe797e67fb07d605b82300934d0de67068a0aca",
      "tree": "b34186b86f446bfaafec0fda3f1f42d2f3a47613",
      "parents": [
        "7b3a871ed995270268a481404454ceafe1a87478"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 09:16:30 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 09:16:30 2008 +1000"
      },
      "message": "md: rationalize raid5 function names\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nCommit a4456856 refactored some of the deep code paths in raid5.c into separate\nfunctions.  The names chosen at the time do not consistently indicate what is\ngoing to happen to the stripe.  So, update the names, and since a stripe is a\ncache element use cache semantics like fill, dirty, and clean.\n\n(also, fix up the indentation in fetch_block5)\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7b3a871ed995270268a481404454ceafe1a87478",
      "tree": "1d86a84bd885f6c24213dd84b5406a38597b457e",
      "parents": [
        "d8ee0728b5b30d7a6f62c399a95e953616d31f23"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:32:09 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:32:09 2008 +1000"
      },
      "message": "md: handle operation chaining in raid5_run_ops\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nNeil said:\n\u003e At the end of ops_run_compute5 you have:\n\u003e         /* ack now if postxor is not set to be run */\n\u003e         if (tx \u0026\u0026 !test_bit(STRIPE_OP_POSTXOR, \u0026s-\u003eops_run))\n\u003e                 async_tx_ack(tx);\n\u003e\n\u003e It looks odd having that test there.  Would it fit in raid5_run_ops\n\u003e better?\n\nThe intended global interpretation is that raid5_run_ops can build a chain\nof xor and memcpy operations.  When MD registers the compute-xor it tells\nasync_tx to keep the operation handle around so that another item in the\ndependency chain can be submitted. If we are just computing a block to\nsatisfy a read then we can terminate the chain immediately.  raid5_run_ops\ngives a better context for this test since it cares about the entire chain.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d8ee0728b5b30d7a6f62c399a95e953616d31f23",
      "tree": "7f9fcf2b0f6222b2a2b8ee44d69af1fd6990064d",
      "parents": [
        "600aa10993012ff2dd5617720dac081e4f992017"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:32:06 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:32:06 2008 +1000"
      },
      "message": "md: replace R5_WantPrexor with R5_WantDrain, add \u0027prexor\u0027 reconstruct_states\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nCurrently ops_run_biodrain and other locations have extra logic to determine\nwhich blocks are processed in the prexor and non-prexor cases.  This can be\neliminated if handle_write_operations5 flags the blocks to be processed in all\ncases via R5_Wantdrain.  The presence of the prexor operation is tracked in\nsh-\u003ereconstruct_state.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "600aa10993012ff2dd5617720dac081e4f992017",
      "tree": "ead3e928aaa45e68bc65ea9aedc513c5b9c3d2d6",
      "parents": [
        "976ea8d475675da6e86bd434328814ccbf5ae641"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:32:05 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:32:05 2008 +1000"
      },
      "message": "md: replace STRIPE_OP_{BIODRAIN,PREXOR,POSTXOR} with \u0027reconstruct_states\u0027\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nTrack the state of reconstruct operations (recalculating the parity block\nusually due to incoming writes, or as part of array expansion)  Reduces the\nscope of the STRIPE_OP_{BIODRAIN,PREXOR,POSTXOR} flags to only tracking whether\na reconstruct operation has been requested via the ops_request field of struct\nstripe_head_state.\n\nThis is the final step in the removal of ops.{pending,ack,complete,count}, i.e.\nthe STRIPE_OP_{BIODRAIN,PREXOR,POSTXOR} flags only request an operation and do\nnot track the state of the operation.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "976ea8d475675da6e86bd434328814ccbf5ae641",
      "tree": "087b3c8a44b6cfce0ff085faab0bc66871c455fb",
      "parents": [
        "83de75cc92be599850e5ef3928e07cd840833499"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:32:03 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:32:03 2008 +1000"
      },
      "message": "md: replace STRIPE_OP_COMPUTE_BLK with STRIPE_COMPUTE_RUN\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nTrack the state of compute operations (recalculating a block from all the other\nblocks in a stripe) with a state flag.  Reduces the scope of the\nSTRIPE_OP_COMPUTE_BLK flag to only tracking whether a compute operation has\nbeen requested via the ops_request field of struct stripe_head_state.\n\nNote, the compute operation that is performed in the course of doing a \u0027repair\u0027\noperation (check the parity block, recalculate it and write it back if the\ncheck result is not zero) is tracked separately with the \u0027check_state\u0027\nvariable.  Compute operations are held off while a \u0027check\u0027 is in progress, and\nmoving this check out to handle_issuing_new_read_requests5 the helper routine\n__handle_issuing_new_read_requests5 can be simplified.\n\nThis is another step towards the removal of ops.{pending,ack,complete,count},\ni.e. STRIPE_OP_COMPUTE_BLK only requests an operation and does not track the\nstate of the operation.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "83de75cc92be599850e5ef3928e07cd840833499",
      "tree": "19995f66767debc27bf207ad1ec73280c31ca8fc",
      "parents": [
        "ecc65c9b3f9b9d740a5deade3d85b39be56401b6"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:31:58 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:58 2008 +1000"
      },
      "message": "md: replace STRIPE_OP_BIOFILL with STRIPE_BIOFILL_RUN\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nTrack the state of read operations (copying data from the stripe cache to bio\nbuffers outside the lock) with a state flag.  Reduce the scope of the\nSTRIPE_OP_BIOFILL flag to only tracking whether a biofill operation has been\nrequested via the ops_request field of struct stripe_head_state.\n\nThis is another step towards the removal of ops.{pending,ack,complete,count},\ni.e. STRIPE_OP_BIOFILL only requests an operation and does not track the state\nof the operation.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ecc65c9b3f9b9d740a5deade3d85b39be56401b6",
      "tree": "e6b4e827befc6849716689f573c89aa0a41e5d26",
      "parents": [
        "f0e43bcdebf709d747a3effb210aff1941e819ab"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:31:57 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:57 2008 +1000"
      },
      "message": "md: replace STRIPE_OP_CHECK with \u0027check_states\u0027\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nThe STRIPE_OP_* flags record the state of stripe operations which are\nperformed outside the stripe lock.  Their use in indicating which\noperations need to be run is straightforward; however, interpolating what\nthe next state of the stripe should be based on a given combination of\nthese flags is not straightforward, and has led to bugs.  An easier to read\nimplementation with minimal degrees of freedom is needed.\n\nTowards this goal, this patch introduces explicit states to replace what was\npreviously interpolated from the STRIPE_OP_* flags.  For now this only converts\nthe handle_parity_checks5 path, removing a user of the\nops.{pending,ack,complete,count} fields of struct stripe_operations.\n\nThis conversion also found a remaining issue with the current code.  There is\na small window for a drive to fail between when we schedule a repair and when\nthe parity calculation for that repair completes.  When this happens we will\nwriteback to \u0027failed_num\u0027 when we really want to write back to \u0027pd_idx\u0027.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f0e43bcdebf709d747a3effb210aff1941e819ab",
      "tree": "3d95952224a1e31a49f9e635470aad3cdf6a707a",
      "parents": [
        "c4e5ac0a22e664eecf29249553cf16c2433f5f25"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:31:55 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:55 2008 +1000"
      },
      "message": "md: unify raid5/6 i/o submission\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nLet the raid6 path call ops_run_io to get pending i/o submitted.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c4e5ac0a22e664eecf29249553cf16c2433f5f25",
      "tree": "898a3b7f4b80d54d15d5b415397b1f4dd588e116",
      "parents": [
        "2b7497f0e0a0b9cf21d822e427d5399b2056501a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:31:53 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:53 2008 +1000"
      },
      "message": "md: use stripe_head_state in ops_run_io()\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nIn handle_stripe after taking sh-\u003elock we sample some bits into \u0027s\u0027 (struct\nstripe_head_state):\n\n\ts.syncing \u003d test_bit(STRIPE_SYNCING, \u0026sh-\u003estate);\n\ts.expanding \u003d test_bit(STRIPE_EXPAND_SOURCE, \u0026sh-\u003estate);\n\ts.expanded \u003d test_bit(STRIPE_EXPAND_READY, \u0026sh-\u003estate);\n\nUse these values from \u0027s\u0027 in ops_run_io() rather than re-sampling the bits.\nThis ensures a consistent snapshot (as seen under sh-\u003elock) is used.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b7497f0e0a0b9cf21d822e427d5399b2056501a",
      "tree": "8cf4d8e056ddafe48d49af0d8afe600868d2d21b",
      "parents": [
        "b203886edbcaac3ca427cf4dbcb50b18bdb346fd"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:31:52 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:52 2008 +1000"
      },
      "message": "md: kill STRIPE_OP_IO flag\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nThe R5_Want{Read,Write} flags already gate i/o.  So, this flag is\nsuperfluous and we can unconditionally call ops_run_io().\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b203886edbcaac3ca427cf4dbcb50b18bdb346fd",
      "tree": "d96cf939fd3a7ab454f61110b91b3a928eb5fe7c",
      "parents": [
        "0cd17fec983b6bca505eecee1af33138687220b6"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Jun 28 08:31:50 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:50 2008 +1000"
      },
      "message": "md: kill STRIPE_OP_MOD_DMA in raid5 offload\n\nFrom: Dan Williams \u003cdan.j.williams@intel.com\u003e\n\nThis micro-optimization allowed the raid code to skip a re-read of the\nparity block after checking parity.  It took advantage of the fact that\nxor-offload-engines have their own internal result buffer and can check\nparity without writing to memory.  Remove it for the following reasons:\n\n1/ It is a layering violation for MD to need to manage the DMA and\n   non-DMA paths within async_xor_zero_sum\n2/ Bad precedent to toggle the \u0027ops\u0027 flags outside the lock\n3/ Hard to realize a performance gain as reads will not need an updated\n   parity block and writes will dirty it anyways.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0cd17fec983b6bca505eecee1af33138687220b6",
      "tree": "0b2209223c9aeeff0415e9a11c58f8801607006b",
      "parents": [
        "526647320e696f434647f38421a6ecf65b859c43"
      ],
      "author": {
        "name": "Chris Webb",
        "email": "chris@arachsys.com",
        "time": "Sat Jun 28 08:31:46 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:46 2008 +1000"
      },
      "message": "Support changing rdev size on running arrays.\n\nFrom: Chris Webb \u003cchris@arachsys.com\u003e\n\nAllow /sys/block/mdX/md/rdY/size to change on running arrays, moving the\nsuperblock if necessary for this metadata version. We prevent the available\nspace from shrinking to less than the used size, and allow it to be set to zero\nto fill all the available space on the underlying device.\n\nSigned-off-by: Chris Webb \u003cchris@arachsys.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "526647320e696f434647f38421a6ecf65b859c43",
      "tree": "aa6bf13e6aa766051ba32a8b64157f4adf9fcd3e",
      "parents": [
        "a99ac97113d5bc25ddc4d17f404c2024ac6c57f9"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:44 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:44 2008 +1000"
      },
      "message": "Make sure all changes to md/dev-XX/state are notified\n\nThe important state change happens during an interrupt\nin md_error.  So just set a flag there and call sysfs_notify\nlater in process context.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a99ac97113d5bc25ddc4d17f404c2024ac6c57f9",
      "tree": "b1848af670eb9f67961f7abc7cd5a19a07b9b37e",
      "parents": [
        "72a23c211e4587859d5bf61ac4962d76e593fb02"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:43 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:43 2008 +1000"
      },
      "message": "Make sure all changes to md/degraded are notified.\n\nWhen a device fails, when a spare is activated, when\nan array is reshaped, or when an array is started,\nthe extent to which the array is degraded can change.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "72a23c211e4587859d5bf61ac4962d76e593fb02",
      "tree": "b35b554d7eb9c4b3a2cbc4d9378d362e5e56e44f",
      "parents": [
        "0fd62b861eac7d2dea9b7e939953b20f37186ea1"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:41 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:41 2008 +1000"
      },
      "message": "Make sure all changes to md/sync_action are notified.\n\nWhen the \u0027resync\u0027 thread starts or stops, when we explicitly\nset sync_action, or when we determine that there is definitely nothing\nto do, we notify sync_action.\n\nTo stop \"sync_action\" from occasionally showing the wrong value,\nwe introduce a new flags - MD_RECOVERY_RECOVER - to say that a\nrecovery is probably needed or happening, and we make sure\nthat we set MD_RECOVERY_RUNNING before clearing MD_RECOVERY_NEEDED.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0fd62b861eac7d2dea9b7e939953b20f37186ea1",
      "tree": "c15b1481076244c7093f6a0368c3cbc85fc9b7c6",
      "parents": [
        "c7d0c941ae7f82940a13f785be70dc3097d96687"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:36 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:36 2008 +1000"
      },
      "message": "Make sure all changes to md/array_state are notified.\n\nChanges in md/array_state could be of interest to a monitoring\nprogram.  So make sure all changes trigger a notification.\n\nExceptions:\n   changing active_idle to active is not reported because it\n      is frequent and not interesting.\n   changing active to active_idle is only reported on arrays\n      with externally managed metadata, as it is not interesting\n      otherwise.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c7d0c941ae7f82940a13f785be70dc3097d96687",
      "tree": "3d9a59ae9367f3b8955580dd31d5927e7b6d1f42",
      "parents": [
        "199050ea1ff2270174ee525b73bc4c3323098897"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:34 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:34 2008 +1000"
      },
      "message": "Don\u0027t reject HOT_REMOVE_DISK request for an array that is not yet started.\n\nThere is really no need for this test here, and there are valid\ncases for selectively removing devices from an array that\nit not actually active.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "199050ea1ff2270174ee525b73bc4c3323098897",
      "tree": "b2a7851511b2ddb943b9ff7ce7c8a96c3ac2a8bb",
      "parents": [
        "6c2fce2ef6b4821c21b5c42c7207cb9cf8c87eda"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:33 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:33 2008 +1000"
      },
      "message": "rationalise return value for -\u003ehot_add_disk method.\n\nFor all array types but linear, -\u003ehot_add_disk returns 1 on\nsuccess, 0 on failure.\nFor linear, it returns 0 on success and -errno on failure.\n\nThis doesn\u0027t cause a functional problem because the -\u003ehot_add_disk\nfunction of linear is used quite differently to the others.\nHowever it is confusing.\n\nSo convert all to return 0 for success or -errno on failure\nand fix call sites to match.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6c2fce2ef6b4821c21b5c42c7207cb9cf8c87eda",
      "tree": "726b16f46c039df387f7cdfe0d195821d8955532",
      "parents": [
        "8ed0a5216a0238f53b482ec88ce4aeed4b9f0da1"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:31 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:31 2008 +1000"
      },
      "message": "Support adding a spare to a live md array with external metadata.\n\ni.e. extend the \u0027md/dev-XXX/slot\u0027 attribute so that you can\ntell a device to fill an vacant slot in an and md array.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8ed0a5216a0238f53b482ec88ce4aeed4b9f0da1",
      "tree": "31383b73c6d471dc8620b0bda044d5d514fd1d8b",
      "parents": [
        "1a0fd497733bd029a7d5f2e5c69b1dff715b7792"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:29 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:29 2008 +1000"
      },
      "message": "Enable setting of \u0027offset\u0027 and \u0027size\u0027 of a hot-added spare.\n\noffset_store and rdev_size_store allow control of the region of a\ndevice which is to be using in an md/raid array.\nThey only allow these values to be set when an array is being assembled,\nas changing them on an active array could be dangerous.\nHowever when adding a spare device to an array, we might need to\nset the offset and size before starting recovery.  So allow\nthese values to be set also if \"-\u003eraid_disk \u003c 0\" which indicates that\nthe device is still a spare.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1a0fd497733bd029a7d5f2e5c69b1dff715b7792",
      "tree": "30f7d07f1ae8cdbebc757d3dfb3fe81e0406e2b5",
      "parents": [
        "f48ed538386cb41559282d989354e8f5d442d71c"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:27 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:27 2008 +1000"
      },
      "message": "Don\u0027t try to make md arrays dirty if that is not meaningful.\n\nArrays personalities such as \u0027raid0\u0027 and \u0027linear\u0027 have no redundancy,\nand so marking them as \u0027clean\u0027 or \u0027dirty\u0027 is not meaningful.\nSo always allow write requests without requiring a superblock update.\n\nSuch arrays types are detected by -\u003esync_request being NULL.  If it is\nnot possible to send a sync request we don\u0027t need a \u0027dirty\u0027 flag because\nall a dirty flag does is trigger some sync_requests.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f48ed538386cb41559282d989354e8f5d442d71c",
      "tree": "3faa24718c098f19b7e331eae0ba29f145e902da",
      "parents": [
        "5e96ee65c8bd629ce093da67a066d3946468298a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:26 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:26 2008 +1000"
      },
      "message": "Close race in md_probe\n\nThere is a possible race in md_probe.  If two threads call md_probe\nfor the same device, then one could exit (having checked that\n-\u003egendisk exists) before the other has called kobject_init_and_add,\nthus returning an incomplete kobj which will cause problems when\nwe try to add children to it.\n\nSo extend the range of protection of disks_mutex slightly to\navoid this possibility.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5e96ee65c8bd629ce093da67a066d3946468298a",
      "tree": "e1ff9e4984d71ffaa842e7e1d19c282fa9e01bcd",
      "parents": [
        "a0da84f35b25875870270d16b6eccda4884d61a7"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:24 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:24 2008 +1000"
      },
      "message": "Allow setting start point for requested check/repair\n\nThis makes it possible to just resync a small part of an array.\ne.g. if a drive reports that it has questionable sectors,\na \u0027repair\u0027 of just the region covering those sectors will\ncause them to be read and, if there is an error, re-written\nwith correct data.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a0da84f35b25875870270d16b6eccda4884d61a7",
      "tree": "3c092bcef7a8c8704054b02197156e1c803306b2",
      "parents": [
        "0e13fe23a00ad88c737d91d94a050707c6139ce4"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:22 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:22 2008 +1000"
      },
      "message": "Improve setting of \"events_cleared\" for write-intent bitmaps.\n\nWhen an array is degraded, bits in the write-intent bitmap are not\ncleared, so that if the missing device is re-added, it can be synced\nby only updated those parts of the device that have changed since\nit was removed.\n\nThe enable this a \u0027events_cleared\u0027 value is stored. It is the event\ncounter for the array the last time that any bits were cleared.\n\nSometimes - if a device disappears from an array while it is \u0027clean\u0027 -\nthe events_cleared value gets updated incorrectly (there are subtle\nordering issues between updateing events in the main metadata and the\nbitmap metadata) resulting in the missing device appearing to require\na full resync when it is re-added.\n\nWith this patch, we update events_cleared precisely when we are about\nto clear a bit in the bitmap.  We record events_cleared when we clear\nthe bit internally, and copy that to the superblock which is written\nout before the bit on storage.  This makes it more \"obviously correct\".\n\nWe also need to update events_cleared when the event_count is going\nbackwards (as happens on a dirty-\u003eclean transition of a non-degraded\narray).\n\nThanks to Mike Snitzer for identifying this problem and testing early\n\"fixes\".\n\nCc:  \"Mike Snitzer\" \u003csnitzer@gmail.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0e13fe23a00ad88c737d91d94a050707c6139ce4",
      "tree": "7b52d698f200751cd332948a6ad982d8e839ee2d",
      "parents": [
        "13864515f7bf6cabd60e63c62e09d311386ae1f1"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:20 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:20 2008 +1000"
      },
      "message": "use bio_endio instead of a call to bi_end_io\n\nTurn calls to bi-\u003ebi_end_io() into bio_endio(). Apparently bio_endio does\nexactly the same error processing as is hardcoded at these places.\n\nbio_endio() avoids recursion (or will soon), so it should be used.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "13864515f7bf6cabd60e63c62e09d311386ae1f1",
      "tree": "3f46035321aedab46c787cac01b17e6b24934423",
      "parents": [
        "9bbbca3a0ee09293108b67835c6bdf6196d7bcb3"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@novell.com",
        "time": "Sat Jun 28 08:31:19 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:19 2008 +1000"
      },
      "message": "linear: correct disk numbering error check\n\nFrom: \"Nikanth Karthikesan\" \u003cknikanth@novell.com\u003e\n\nCorrect disk numbering problem check.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9bbbca3a0ee09293108b67835c6bdf6196d7bcb3",
      "tree": "32526078700e26c6e67aea5eb141fe152d1da9f7",
      "parents": [
        "efe311431869b40d67911820a309f9a1a41306f3"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:17 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:17 2008 +1000"
      },
      "message": "Fix error paths if md_probe fails.\n\nmd_probe can fail (e.g. alloc_disk could fail) without\nreturning an error (as it alway returns NULL).\nSo when we call mddev_find immediately afterwards, we need\nto check that md_probe actually succeeded.  This means checking\nthat mdev-\u003egendisk is non-NULL.\n\ncc: \u003cstable@kernel.org\u003e\nCc: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "efe311431869b40d67911820a309f9a1a41306f3",
      "tree": "3496fb7eca85cd629c19cd23afb5341007e9fa21",
      "parents": [
        "8c2e870a625bd336b2e7a65a97c1836acef07322"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:14 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:31:14 2008 +1000"
      },
      "message": "Don\u0027t acknowlege that stripe-expand is complete until it really is.\n\nWe shouldn\u0027t acknowledge that a stripe has been expanded (When\nreshaping a raid5 by adding a device) until the moved data has\nactually been written out.  However we are currently\nacknowledging (by calling md_done_sync) when the POST_XOR\nis complete and before the write.\n\nSo track in s.locked whether there are pending writes, and don\u0027t\ncall md_done_sync yet if there are.\n\nNote: we all set R5_LOCKED on devices which are are about to\nread from.  This probably isn\u0027t technically necessary, but is\nusually done when writing a block, and justifies the use of\ns.locked here.\n\nThis bug can lead to a crash if an array is stopped while an reshape\nis in progress.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8c2e870a625bd336b2e7a65a97c1836acef07322",
      "tree": "1d0650ce9affed0bfae754e17bd5a86a563f8037",
      "parents": [
        "543cf4cb3fe6f6cae3651ba918b9c56200b257d0"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:30:52 2008 +1000"
      },
      "committer": {
        "name": "Neil Brown",
        "email": "neilb@notabene.brown",
        "time": "Sat Jun 28 08:30:52 2008 +1000"
      },
      "message": "Ensure interrupted recovery completed properly (v1 metadata plus bitmap)\n\nIf, while assembling an array, we find a device which is not fully\nin-sync with the array, it is important to set the \"fullsync\" flags.\nThis is an exact analog to the setting of this flag in hot_add_disk\nmethods.\n\nCurrently, only v1.x metadata supports having devices in an array\nwhich are not fully in-sync (it keep track of how in sync they are).\nThe \u0027fullsync\u0027 flag only makes a difference when a write-intent bitmap\nis being used.  In this case it tells recovery to ignore the bitmap\nand recovery all blocks.\n\nThis fix is already in place for raid1, but not raid5/6 or raid10.\n\nSo without this fix, a raid1 ir raid4/5/6 array with version 1.x\nmetadata and a write intent bitmaps, that is stopped in the middle\nof a recovery, will appear to complete the recovery instantly\nafter it is reassembled, but the recovery will not be correct.\n\nIf you might have an array like that, issueing\n   echo repair \u003e /sys/block/mdXX/md/sync_action\n\nwill make sure recovery completes properly.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c337869d95011495fa181536786e74aa2d7ff031",
      "tree": "786cdf119ce33641438cd841deb0c480dd92f900",
      "parents": [
        "a6d8113a986c66aeb379a26b6e0062488b3e59e1"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Jun 05 22:45:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:08 2008 -0700"
      },
      "message": "md: do not compute parity unless it is on a failed drive\n\nIf a block is computed (rather than read) then a check/repair operation\nmay be lead to believe that the data on disk is correct, when infact it\nisn\u0027t.  So only compute blocks for failed devices.\n\nThis issue has been around since at least 2.6.12, but has become harder to\nhit in recent kernels since most reads bypass the cache.\n\necho repair \u003e /sys/block/mdN/md/sync_action will set the parity blocks to the\ncorrect state.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a6d8113a986c66aeb379a26b6e0062488b3e59e1",
      "tree": "b66aea459f4f3dcb9b13b8852f3e2b12b385ce94",
      "parents": [
        "e0a115e5aa554b93150a8dc1c3fe15467708abb2"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Jun 05 22:45:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:08 2008 -0700"
      },
      "message": "md: fix uninitialized use of mddev-\u003erecovery_wait\n\nIf an array was created with --assume-clean we will oops when trying to\nset -\u003eresync_max.\n\nFix this by initializing -\u003erecovery_wait in mddev_find.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e0a115e5aa554b93150a8dc1c3fe15467708abb2",
      "tree": "c8d869cba362f3728c528d696e3985f1c30b0a7b",
      "parents": [
        "b2c8daddcbe03a22402ecf943bb88302601c6835"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Thu Jun 05 22:45:52 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 06 11:29:08 2008 -0700"
      },
      "message": "md: fix prexor vs sync_request race\n\nDuring the initial array synchronization process there is a window between\nwhen a prexor operation is scheduled to a specific stripe and when it\ncompletes for a sync_request to be scheduled to the same stripe.  When\nthis happens the prexor completes and the stripe is unconditionally marked\n\"insync\", effectively canceling the sync_request for the stripe.  Prior to\n2.6.23 this was not a problem because the prexor operation was done under\nsh-\u003elock.  The effect in older kernels being that the prexor would still\nerroneously mark the stripe \"insync\", but sync_request would be held off\nand re-mark the stripe as \"!in_sync\".\n\nChange the write completion logic to not mark the stripe \"in_sync\" if a\nprexor was performed.  The effect of the change is to sometimes not set\nSTRIPE_INSYNC.  The worst this can do is cause the resync to stall waiting\nfor STRIPE_INSYNC to be set.  If this were happening, then STRIPE_SYNCING\nwould be set and handle_issuing_new_read_requests would cause all\navailable blocks to eventually be read, at which point prexor would never\nbe used on that stripe any more and STRIPE_INSYNC would eventually be set.\n\necho repair \u003e /sys/block/mdN/md/sync_action will correct arrays that may\nhave lost this race.\n\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "688864e29869a71a8183e4e2f96ccf9f2de1375f",
      "tree": "c77035b81c5eb798ecdad1d971a8a4a66fda8949",
      "parents": [
        "cb520223d7f22c5386aff27a5856a66e2c32aaac"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu May 01 14:50:40 2008 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jun 05 09:23:42 2008 -0500"
      },
      "message": "[SCSI] scsi_dh: Remove hardware handler infrastructure from dm\n\nThis patch just removes infrastructure that provided support for hardware\nhandlers in the dm layer as it is not needed anymore.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    }
  ],
  "next": "cb520223d7f22c5386aff27a5856a66e2c32aaac"
}
