)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "cb520223d7f22c5386aff27a5856a66e2c32aaac",
      "tree": "850268071c54a99e4099de6875bad15d436781ab",
      "parents": [
        "2651f5d7d3bc5120a439e498f131e4d731f99b3e"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu May 01 14:50:34 2008 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jun 05 09:23:41 2008 -0500"
      },
      "message": "[SCSI] scsi_dh: Remove hardware handlers from dm\n\nThis patch removes the 3 hardware handlers that currently exist\nunder dm as the functionality is moved to SCSI layer in the earlier\npatches.\n\n[jejb: removed more makefile hunks and rejection fixes]\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"
    },
    {
      "commit": "2651f5d7d3bc5120a439e498f131e4d731f99b3e",
      "tree": "dbfe481b0ce8b37aa1c02abef2dd53a276cb3529",
      "parents": [
        "bab7cfc733f4453a502b7491b9ee37b091440ec4"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu May 01 14:50:28 2008 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jun 05 09:23:41 2008 -0500"
      },
      "message": "[SCSI] scsi_dh: Remove dm_pg_init_complete\n\nThis patch just removes the dm layer\u0027s path initialization completion\nroutine.  This is separated from the other patch(scsi_dh: Use SCSI\ndevice handler in dm-multipath) Just to make that patch more readable.\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"
    },
    {
      "commit": "bab7cfc733f4453a502b7491b9ee37b091440ec4",
      "tree": "147e7f4bf901e6cfe55a3e2e08d5f3b174d88ccd",
      "parents": [
        "cfae5c9bb66325cd32d5f2ee41f14749f062a53c"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu May 01 14:50:22 2008 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jun 05 09:23:41 2008 -0500"
      },
      "message": "[SCSI] scsi_dh: Add a single threaded workqueue for initializing paths\n\nBefore this patch set (SCSI hardware handlers), initialization of a\npath was done asynchronously. Doing that requires a workqueue in each\ndevice/hardware handler module and leads to unneccessary complication\nin the device handler code, making it difficult to read the code and\nfollow the state diagram.\n\nMoving that workqueue to this level makes the device handler code simpler.\nHence, the workqueue is moved to dm level.\n\nA new workqueue is added instead of adding it to the existing workqueue\n(kmpathd) for the following reasons:\n\t1. Device activation has to happen faster, stacking them along\n\t   with the other workqueue might lead to unnecessary delay\n\t   in the activation of the path.\n\t2. The effect could be felt the other way too. i.e the current\n\t   events that are handled by the existing workqueue might get\n\t   a delayed response.\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"
    },
    {
      "commit": "cfae5c9bb66325cd32d5f2ee41f14749f062a53c",
      "tree": "abceb01b7053f77366b37331e9b4f8408c89df60",
      "parents": [
        "5e7dccad3621f6e2b572f309cf830a2c902cae80"
      ],
      "author": {
        "name": "Chandra Seetharaman",
        "email": "sekharan@us.ibm.com",
        "time": "Thu May 01 14:50:11 2008 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Thu Jun 05 09:23:41 2008 -0500"
      },
      "message": "[SCSI] scsi_dh: Use SCSI device handler in dm-multipath\n\nThis patch converts dm-mpath to use scsi device handlers instead of\ndm\u0027s hardware handlers.\n\nThis patch does not add any new functionality. Old behaviors remain and\nuserspace tools work as is except that arguments supplied with hardware\nhandler are ignored.\n\nOne behavioral exception is: Activation of a path is synchronous in this\npatch, opposed to the older behavior of being asynchronous (changed in\npatch 07: scsi_dh: Add a single threaded workqueue for initializing a path)\n\nNote: There is no need to get a reference for the device handler module\n(as it was done in the dm hardware handler case) here as the reference\nis held when the device was first found. Instead we check and make sure\nthat support for the specified device is present at table load time.\n\nSigned-off-by: Chandra Seetharaman \u003csekharan@us.ibm.com\u003e\nSigned-off-by: Mike Christie \u003cmichaelc@cs.wisc.edu\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "dfc7064500061677720fa26352963c772d3ebe6b",
      "tree": "a8ca495bccf98837c6762ffba54a8009c9772259",
      "parents": [
        "90b08710e41a07d4ff0fb8940dcce3a552991a56"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: restart recovery cleanly after device failure.\n\nWhen we get any IO error during a recovery (rebuilding a spare), we abort\nthe recovery and restart it.\n\nFor RAID6 (and multi-drive RAID1) it may not be best to restart at the\nbeginning: when multiple failures can be tolerated, the recovery may be\nable to continue and re-doing all that has already been done doesn\u0027t make\nsense.\n\nWe already have the infrastructure to record where a recovery is up to\nand restart from there, but it is not being used properly.\nThis is because:\n  - We sometimes abort with MD_RECOVERY_ERR rather than just MD_RECOVERY_INTR,\n    which causes the recovery not be be checkpointed.\n  - We remove spares and then re-added them which loses important state\n    information.\n\nThe distinction between MD_RECOVERY_ERR and MD_RECOVERY_INTR really isn\u0027t\nneeded.  If there is an error, the relevant drive will be marked as\nFaulty, and that is enough to ensure correct handling of the error.  So we\nfirst remove MD_RECOVERY_ERR, changing some of the uses of it to\nMD_RECOVERY_INTR.\n\nThen we cause the attempt to remove a non-faulty device from an array to\nfail (unless recovery is impossible as the array is too degraded).  Then\nwhen remove_and_add_spares attempts to remove the devices on which\nrecovery can continue, it will fail, they will remain in place, and\nrecovery will continue on them as desired.\n\nIssue:  If we are halfway through rebuilding a spare and another drive\nfails, and a new spare is immediately available,  do we want to:\n 1/ complete the current rebuild, then go back and rebuild the new spare or\n 2/ restart the rebuild from the start and rebuild both devices in\n    parallel.\n\nBoth options can be argued for.  The code currently takes option 2 as\n  a/ this requires least code change\n  b/ this results in a minimally-degraded array in minimal time.\n\nCc: \"Eivind Sarto\" \u003civan@kasenna.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "90b08710e41a07d4ff0fb8940dcce3a552991a56",
      "tree": "8e45d1c6d9b4020099fd36781065bf8b8fdb76e4",
      "parents": [
        "4f54b0e9485644a3c5fca2ae43bcbe7376825747"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bs@q-leap.de",
        "time": "Fri May 23 13:04:38 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: allow parallel resync of md-devices.\n\nIn some configurations, a raid6 resync can be limited by CPU speed\n(Calculating P and Q and moving data) rather than by device speed.  In\nthese cases there is nothing to be gained byt serialising resync of arrays\nthat share a device, and doing the resync in parallel can provide benefit.\n So add a sysfs tunable to flag an array as being allowed to resync in\nparallel with other arrays that use (a different part of) the same device.\n\nSigned-off-by: Bernd Schubert \u003cbs@q-leap.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4f54b0e9485644a3c5fca2ae43bcbe7376825747",
      "tree": "10033228aa5efc868c25aed924b5a0d6b98ac090",
      "parents": [
        "09a44cc15079f80c1416cde1a1d5b2cdd8f2118a"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Fri May 23 13:04:37 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: notify userspace on \u0027stop\u0027 events\n\nThis additional notification to \u0027array_state\u0027 is needed to allow the\nmonitor application to learn about stop events via sysfs.  The\nsysfs_notify(\"sync_action\") call that comes at the end of do_md_stop()\n(via md_new_event) is insufficient since the \u0027sync_action\u0027 attribute has\nbeen removed by this point.\n\n(Seems like a sysfs-notify-on-removal patch is a better fix.  Currently\nremoval updates the event count but does not wake up waiters)\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "09a44cc15079f80c1416cde1a1d5b2cdd8f2118a",
      "tree": "5a01eeb38627026ace5b8956fdddec08b414cf76",
      "parents": [
        "698b18c1e8bddf39cbf1ba50792b0fe302dbe6d6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:36 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: notify userspace on \u0027write-pending\u0027 changes to array_state\n\nWhen an array enters write pending, \u0027array_state\u0027 changes, so we must be\nsure to sysfs_notify.\n\nAlso, when waiting for user-space to acknowledge \u0027write-pending\u0027 by\nmarking the metadata as dirty, we don\u0027t want to wait for MD_CHANGE_DEVS to\nbe cleared as that might not happen.  So explicity test for the bits that\nwe are really interested in.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "698b18c1e8bddf39cbf1ba50792b0fe302dbe6d6",
      "tree": "9a65cf296b2b37654e30a1f2f9f6f13468259345",
      "parents": [
        "6be9d4940134b36f9ed020aead36f831f19b49f1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:35 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: raid1: Fix restoration of bio between failed read and write.\n\nWhen performing a \"recovery\" or \"check\" pass on a RAID1 array, we read\nfrom each device and possible, if there is a difference or a read error,\nwrite back to some devices.\n\nWe use the same \u0027bio\u0027 for both read and write, resetting various fields\nbetween the two operations.\n\nWe forgot to reset bv_offset and bv_len however.  These are often left\nunchanged, but in the case where there is an IO error one or two sectors\ninto a page, they are changed.\n\nThis results in correctable errors not being corrected properly.  It does\nnot result in any data corruption.\n\nCc: \"Fairbanks, David\" \u003cDavid.Fairbanks@stratus.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": "6be9d4940134b36f9ed020aead36f831f19b49f1",
      "tree": "af74a03897cc8ee2ce4ae68a82a18f1d86d34f31",
      "parents": [
        "6bcfd601861cce45ca73ac1d714f1286b6b3f0d4"
      ],
      "author": {
        "name": "Bernd Schubert",
        "email": "bernd-schubert@gmx.de",
        "time": "Fri May 23 13:04:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:10 2008 -0700"
      },
      "message": "md: md: raid5 rate limit error printk\n\nLast night we had scsi problems and a hardware raid unit was offlined\nduring heavy i/o.  While this happened we got for about 3 minutes a huge\nnumber messages like these\n\nApr 12 03:36:07 pfs1n14 kernel: [197510.696595] raid5:md7: read error not correctable (sector 2993096568 on sdj2).\n\nI guess the high error rate is responsible for not scheduling other events\n- during this time the system was not pingable and in the end also other\ndevices run into scsi command timeouts causing problems on these unrelated\ndevices as well.\n\nSigned-off-by: Bernd Schubert \u003cbernd-schubert@gmx.de\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": "6bcfd601861cce45ca73ac1d714f1286b6b3f0d4",
      "tree": "175173d057e10dd006d6dbd033395977aff55dd9",
      "parents": [
        "03de250a269bfa8e6a9e6ccb4a1dbce19dae8a61"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Fri May 23 13:04:34 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "md: kill file_path wrapper\n\nKill the trivial and rather pointless file_path wrapper around d_path.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "84255d1018c50e72c71a49f359989597d53a3f53",
      "tree": "242c639d1e110f241e802e6b0a27a670deb8b174",
      "parents": [
        "80119ef5c8153e0a6cc5edf00c083dc98a9bd348"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 23 13:04:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat May 24 09:56:09 2008 -0700"
      },
      "message": "md: fix possible oops when removing a bitmap from an active array\n\nIt is possible to add a write-intent bitmap to an active array, or remove\nthe bitmap that is there.\n\nWhen we do with the \u0027quiesce\u0027 the array, which causes make_request to\nblock in \"wait_barrier()\".\n\nHowever we are sampling the value of \"mddev-\u003ebitmap\" before the\nwait_barrier call, and using it afterwards.  This can result in using a\nbitmap structure that has been freed.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7e72bf641b1fc7b9df6f40bd2c36dfccd8d647c",
      "tree": "81b1db5434c9635bf23fb40415056e10390cd692",
      "parents": [
        "4920916f728fe3c51f54c25ab7b3d271254aab5a"
      ],
      "author": {
        "name": "Neil Brown",
        "email": "neilb@suse.de",
        "time": "Wed May 14 16:05:54 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 14 19:11:15 2008 -0700"
      },
      "message": "Remove blkdev warning triggered by using md\n\nAs setting and clearing queue flags now requires that we hold a spinlock\non the queue, and as blk_queue_stack_limits is called without that lock,\nget the lock inside blk_queue_stack_limits.\n\nFor blk_queue_stack_limits to be able to find the right lock, each md\npersonality needs to set q-\u003equeue_lock to point to the appropriate lock.\nThose personalities which didn\u0027t previously use a spin_lock, us\nq-\u003e__queue_lock.  So always initialise that lock when allocated.\n\nWith this in place, setting/clearing of the QUEUE_FLAG_PLUGGED bit will no\nlonger cause warnings as it will be clear that the proper lock is held.\n\nThanks to Dan Williams for review and fixing the silly bugs.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Alistair John Strachan \u003calistair@devzero.co.uk\u003e\nCc: Nick Piggin \u003cnpiggin@suse.de\u003e\nCc: \"Rafael J. Wysocki\" \u003crjw@sisk.pl\u003e\nCc: Jacek Luczak \u003cdifrost.kernel@gmail.com\u003e\nCc: Prakash Punnoor \u003cprakash@punnoor.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "c8894419acf5e56851de9741c5047bebd78acd1f",
      "tree": "6294b87ebf31d577cd48880a201ff4b1a6a50ffc",
      "parents": [
        "3f275ea3086054205795972b8e87f2046fd3de98"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon May 12 14:02:12 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 13 08:02:24 2008 -0700"
      },
      "message": "md: fix raid5 \u0027repair\u0027 operations\n\ncommit bd2ab67030e9116f1e4aae1289220255412b37fd \"md: close a livelock window\nin handle_parity_checks5\" introduced a bug in handling \u0027repair\u0027 operations.\nAfter a repair operation completes we clear the state bits tracking this\noperation.  However, they are cleared too early and this results in the code\ndeciding to re-run the parity check operation.  Since we have done the repair\nin memory the second check does not find a mismatch and thus does not do a\nwriteback.\n\nTest results:\n$ echo repair \u003e /sys/block/md0/md/sync_action\n$ cat /sys/block/md0/md/mismatch_cnt\n51072\n$ echo repair \u003e /sys/block/md0/md/sync_action\n$ cat /sys/block/md0/md/mismatch_cnt\n0\n\n(also fix incorrect indentation)\n\nCc: \u003cstable@kernel.org\u003e\nTested-by: George Spelvin \u003clinux@horizon.com\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "cb6969e8cdef39e613b1755eff595f830b89bc82",
      "tree": "bc3c9f88b85c1f62a07da422033c37c6d3195fa6",
      "parents": [
        "8594303a7abc1a117b1d91412ce9b3d77ed35d02"
      ],
      "author": {
        "name": "Harvey Harrison",
        "email": "harvey.harrison@gmail.com",
        "time": "Tue May 06 20:42:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 08 10:46:55 2008 -0700"
      },
      "message": "misc: fix integer as NULL pointer warnings\n\ndrivers/md/raid10.c:889:17: warning: Using plain integer as NULL pointer\ndrivers/media/video/cx18/cx18-driver.c:616:12: warning: Using plain integer as NULL pointer\nsound/oss/kahlua.c:70:12: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Harvey Harrison \u003charvey.harrison@gmail.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Mauro Carvalho Chehab \u003cmchehab@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6bfe0b499082fd3950429017cd8ebf2a6c458aa5",
      "tree": "81476cf7f7ddbea135bdb93729e0bffae0e7c163",
      "parents": [
        "11e2ede0228ee0f81ccacd15894908c3bf241f73"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: support blocking writes to an array on device failure\n\nAllows a userspace metadata handler to take action upon detecting a device\nfailure.\n\nBased on an original patch by Neil Brown.\n\nChanges:\n-added blocked_wait waitqueue to rdev\n-don\u0027t qualify Blocked with Faulty always let userspace block writes\n-added md_wait_for_blocked_rdev to wait for the block device to be clear, if\n userspace misses the notification another one is sent every 5 seconds\n-set MD_RECOVERY_NEEDED after clearing \"blocked\"\n-kill DoBlock flag, just test mddev-\u003eexternal\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "11e2ede0228ee0f81ccacd15894908c3bf241f73",
      "tree": "78bf7c8e2762d5dc07f2b9acb92ef5804ac40f38",
      "parents": [
        "242b363e2207d14125f52a6701cfda7376a2a2fc"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Wed Apr 30 00:52:32 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:33 2008 -0700"
      },
      "message": "md: prevent duplicates in bind_rdev_to_array\n\nFound when trying to reassemble an active externally managed array.  Without\nthis check we hit the more noisy \"sysfs duplicate\" warning in the later call\nto kobject_add.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ],
  "next": "242b363e2207d14125f52a6701cfda7376a2a2fc"
}
