)]}'
{
  "log": [
    {
      "commit": "257a4b42af7586fab4eaec7f04e6896b86551843",
      "tree": "ec65357b2320ba4e4341a2853245048889666f5c",
      "parents": [
        "9a3f530f39f4490eaa18b02719fb74ce5f4d2d86"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Tue Nov 08 16:22:06 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:06 2011 +1100"
      },
      "message": "md/raid5: STRIPE_ACTIVE has lock semantics, add barriers\n\nAll updates that occur under STRIPE_ACTIVE should be globally visible\nwhen STRIPE_ACTIVE clears.  test_and_set_bit() implies a barrier, but\nclear_bit() does not.\n\nThis is suitable for 3.1-stable.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "9a3f530f39f4490eaa18b02719fb74ce5f4d2d86",
      "tree": "4bcff31bacd9b242360f48dad706d8b5231ffafe",
      "parents": [
        "1ea6b8f48918282bdca0b32a34095504ee65bab5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Nov 08 16:22:01 2011 +1100"
      },
      "message": "md/raid5: abort any pending parity operations when array fails.\n\nWhen the number of failed devices exceeds the allowed number\nwe must abort any active parity operations (checks or updates) as they\nare no longer meaningful, and can lead to a BUG_ON in\nhandle_parity_checks6.\n\nThis bug was introduce by commit 6c0069c0ae9659e3a91b68eaed06a5c6c37f45c8\nin 2.6.29.\n\nReported-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nTested-by: Manish Katiyar \u003cmkatiyar@gmail.com\u003e\nAcked-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "a84450604d0fe08b6a2335efbedede18d3d7cc75",
      "tree": "013be8cd17b787a3051d1d614f794f30573467f8",
      "parents": [
        "6f66263f8ebe1fb1f138de41ca9aa0a4860b30d0"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Nov 01 20:27:43 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:10 2011 -0800"
      },
      "message": "device-mapper: using EXPORT_SYBOL in dm-space-map-checker.c needs export.h\n\nReported-by: Witold Baryluk \u003cbaryluk@smp.if.uj.edu.pl\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "6f66263f8ebe1fb1f138de41ca9aa0a4860b30d0",
      "tree": "bf8057b31cafcd43e6c4a60551bf24ece185ff07",
      "parents": [
        "1944ce60fe1e92506d3347f4d8e10a82b17096e4"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Nov 01 18:30:49 2011 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:10 2011 -0800"
      },
      "message": "device-mapper: dm-bufio.c needs to include module.h\n\nsince it uses the module facilities.\n\nReported-by: Witold Baryluk \u003cbaryluk@smp.if.uj.edu.pl\u003e\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1944ce60fe1e92506d3347f4d8e10a82b17096e4",
      "tree": "1da72242c0a525e6a46c3ddc9693d88816362a03",
      "parents": [
        "0c073e35550879fd133bc3fe509df5b88da51278"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Wed Sep 28 18:29:32 2011 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Nov 07 10:29:09 2011 -0800"
      },
      "message": "drivers/md: change module.h -\u003e export.h in persistent-data/dm-*\n\nFor the files which are not themselves modular, we can change\nthem to include only the smaller export.h since all they are\ndoing is looking for EXPORT_SYMBOL.\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "32aaeffbd4a7457bf2f7448b33b5946ff2a960eb",
      "tree": "faf7ad871d87176423ff9ed1d1ba4d9c688fc23f",
      "parents": [
        "208bca0860406d16398145ddd950036a737c3c9d",
        "67b84999b1a8b1af5625b1eabe92146c5eb42932"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Nov 06 19:44:47 2011 -0800"
      },
      "message": "Merge branch \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux\n\n* \u0027modsplit-Oct31_2011\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)\n  Revert \"tracing: Include module.h in define_trace.h\"\n  irq: don\u0027t put module.h into irq.h for tracking irqgen modules.\n  bluetooth: macroize two small inlines to avoid module.h\n  ip_vs.h: fix implicit use of module_get/module_put from module.h\n  nf_conntrack.h: fix up fallout from implicit moduleparam.h presence\n  include: replace linux/module.h with \"struct module\" wherever possible\n  include: convert various register fcns to macros to avoid include chaining\n  crypto.h: remove unused crypto_tfm_alg_modname() inline\n  uwb.h: fix implicit use of asm/page.h for PAGE_SIZE\n  pm_runtime.h: explicitly requires notifier.h\n  linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h\n  miscdevice.h: fix up implicit use of lists and types\n  stop_machine.h: fix implicit use of smp.h for smp_processor_id\n  of: fix implicit use of errno.h in include/linux/of.h\n  of_platform.h: delete needless include \u003clinux/module.h\u003e\n  acpi: remove module.h include from platform/aclinux.h\n  miscdevice.h: delete unnecessary inclusion of module.h\n  device_cgroup.h: delete needless include \u003clinux/module.h\u003e\n  net: sch_generic remove redundant use of \u003clinux/module.h\u003e\n  net: inet_timewait_sock doesnt need \u003clinux/module.h\u003e\n  ...\n\nFix up trivial conflicts (other header files, and  removal of the ab3550 mfd driver) in\n - drivers/media/dvb/frontends/dibx000_common.c\n - drivers/media/video/{mt9m111.c,ov6650.c}\n - drivers/mfd/ab3550-core.c\n - include/linux/dmaengine.h\n"
    },
    {
      "commit": "b4fdcb02f1e39c27058a885905bd0277370ba441",
      "tree": "fd4cfd1994f21f44afe5e7904681fb5ac09f81b8",
      "parents": [
        "044595d4e448305fbaec472eb7d22636d24e7d8c",
        "6dd9ad7df2019b1e33a372a501907db293ebcd0d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Nov 04 17:06:58 2011 -0700"
      },
      "message": "Merge branch \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block\n\n* \u0027for-3.2/core\u0027 of git://git.kernel.dk/linux-block: (29 commits)\n  block: don\u0027t call blk_drain_queue() if elevator is not up\n  blk-throttle: use queue_is_locked() instead of lockdep_is_held()\n  blk-throttle: Take blkcg-\u003elock while traversing blkcg-\u003epolicy_list\n  blk-throttle: Free up policy node associated with deleted rule\n  block: warn if tag is greater than real_max_depth.\n  block: make gendisk hold a reference to its queue\n  blk-flush: move the queue kick into\n  blk-flush: fix invalid BUG_ON in blk_insert_flush\n  block: Remove the control of complete cpu from bio.\n  block: fix a typo in the blk-cgroup.h file\n  block: initialize the bounce pool if high memory may be added later\n  block: fix request_queue lifetime handling by making blk_queue_cleanup() properly shutdown\n  block: drop @tsk from attempt_plug_merge() and explain sync rules\n  block: make get_request[_wait]() fail if queue is dead\n  block: reorganize throtl_get_tg() and blk_throtl_bio()\n  block: reorganize queue draining\n  block: drop unnecessary blk_get/put_queue() in scsi_cmd_ioctl() and blk_get_tg()\n  block: pass around REQ_* flags instead of broken down booleans during request alloc/free\n  block: move blk_throtl prototypes to block/blk.h\n  block: fix genhd refcounting in blkio_policy_parse_and_set()\n  ...\n\nFix up trivial conflicts due to \"mddev_t\" -\u003e \"struct mddev\" conversion\nand making the request functions be of type \"void\" instead of \"int\" in\n - drivers/md/{faulty.c,linear.c,md.c,md.h,multipath.c,raid0.c,raid1.c,raid10.c,raid5.c}\n - drivers/staging/zram/zram_drv.c\n"
    },
    {
      "commit": "43672a0784707d795556b1f93925da8b8e797d03",
      "tree": "5c92aabd211281300f89fc2e69e9ee7e58bcc449",
      "parents": [
        "2380078cdb7e6d520e33dcf834e0be979d542e48",
        "2e727c3ca1beff05f27b6207a795790f222bf8d8"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 17:02:37 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Nov 02 17:02:37 2011 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/linux-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/linux-dm:\n  dm: raid fix device status indicator when array initializing\n  dm log userspace: add log device dependency\n  dm log userspace: fix comment hyphens\n  dm: add thin provisioning target\n  dm: add persistent data library\n  dm: add bufio\n  dm: export dm get md\n  dm table: add immutable feature\n  dm table: add always writeable feature\n  dm table: add singleton feature\n  dm kcopyd: add dm_kcopyd_zero to zero an area\n  dm: remove superfluous smp_mb\n  dm: use local printk ratelimit\n  dm table: propagate non rotational flag\n"
    },
    {
      "commit": "daaa5f7cbee37dfc8464d350f1eacd6e94b278cc",
      "tree": "dec72cbeee1d5fbb169c21305510918818a0d45d",
      "parents": [
        "056075c76417b112b4924e7b6386fdc6dfc9ac03"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Fri May 27 15:50:58 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:19 2011 -0400"
      },
      "message": "md: Add in export.h for files using EXPORT_SYMBOL\n\nThese files were getting the defines for EXPORT_SYMBOL because\ndevice.h was including module.h.  But we are going to put an\nend to that.  So add the proper export.h include now.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "056075c76417b112b4924e7b6386fdc6dfc9ac03",
      "tree": "7326cbdb0f54f975b140e548bd4f4d6f4b3486cc",
      "parents": [
        "ec37d321b96621906337c4279c490e1b5893ecae"
      ],
      "author": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Sun Jul 03 13:58:33 2011 -0400"
      },
      "committer": {
        "name": "Paul Gortmaker",
        "email": "paul.gortmaker@windriver.com",
        "time": "Mon Oct 31 19:31:18 2011 -0400"
      },
      "message": "md: Add module.h to all files using it implicitly\n\nA pending cleanup will mean that module.h won\u0027t be implicitly\neverywhere anymore.  Make sure the modular drivers in md dir\nare actually calling out for \u003cmodule.h\u003e explicitly in advance.\n\nSigned-off-by: Paul Gortmaker \u003cpaul.gortmaker@windriver.com\u003e\n"
    },
    {
      "commit": "571109f5369efbd3f7d09b4e331c1aa4de3e411a",
      "tree": "747abcc3cae63c3e8fa279bf9b2e4b1929342769",
      "parents": [
        "839d8810747bbf39e0a5a7f223b67bffa7945f8d",
        "7fcc7c8acf0fba44d19a713207af7e58267c1179"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 15:21:29 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Oct 31 15:21:29 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md/raid10:  Fix bug when activating a hot-spare.\n"
    },
    {
      "commit": "2e727c3ca1beff05f27b6207a795790f222bf8d8",
      "tree": "d00c9aeea0173051fe3bbd4398697acab9ab61ca",
      "parents": [
        "5a25f0eb707bbb4a5aaaf19c933605a6dbaf77a5"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Oct 31 20:21:26 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:26 2011 +0000"
      },
      "message": "dm: raid fix device status indicator when array initializing\n\nWhen devices in a RAID array are not in-sync, they are supposed to be\nreported as such in the status output as an \u0027a\u0027 character, which means\n\"alive, but not in-sync\".  But when the entire array is rebuilt \u0027A\u0027 is\nbeing used, which is incorrect.  This patch corrects this to \u0027a\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5a25f0eb707bbb4a5aaaf19c933605a6dbaf77a5",
      "tree": "62f9af5013d252b0fdff5449b3adcaeadfff31aa",
      "parents": [
        "b89544575d0096735edc9b0ad187e635487905ad"
      ],
      "author": {
        "name": "Jonathan E Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Oct 31 20:21:24 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:24 2011 +0000"
      },
      "message": "dm log userspace: add log device dependency\n\nAllow userspace dm log implementations to register their log device so it\nis no longer missing from the list of device dependencies.\n\nWhen device mapper targets use a device they normally call dm_get_device\nwhich includes it in the device list returned to userspace applications\nsuch as LVM through the DM_TABLE_DEPS ioctl.  Userspace log devices\ndon\u0027t use dm_get_device as userspace opens them so they are missing from\nthe list of dependencies.\n\nThis patch extends the DM_ULOG_CTR operation to allow userspace to\nrespond with the name of the log device (if appropriate) to be\nregistered via \u0027dm_get_device\u0027.  DM_ULOG_REQUEST_VERSION is incremented.\n\nThis is backwards compatible.  If the kernel and userspace log server\nhave both been updated, the new information will be passed down to the\nkernel and the device will be registered.  If the kernel is new, but\nthe log server is old, the log server will not pass down any device\ninformation and the kernel will simply bypass the device registration\nas before.  If the kernel is old but the log server is new, the log\nserver will see the old version number and not pass the device info.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b89544575d0096735edc9b0ad187e635487905ad",
      "tree": "8f5aa4a2d4e5e9d1b89935dbaa8d9192a87e6550",
      "parents": [
        "991d9fa02da0dd1f843dc011376965e0c8c6c9b5"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Mon Oct 31 20:21:22 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:22 2011 +0000"
      },
      "message": "dm log userspace: fix comment hyphens\n\nFix comments: clustered-disk needs a hyphen not an underscore.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "991d9fa02da0dd1f843dc011376965e0c8c6c9b5",
      "tree": "a64c94710246b77bb74cd77634581cea3d32cfe1",
      "parents": [
        "3241b1d3e0aaafbfcd320f4d71ade629728cc4f4"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "thornber@redhat.com",
        "time": "Mon Oct 31 20:21:18 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:21:18 2011 +0000"
      },
      "message": "dm: add thin provisioning target\n\nInitial EXPERIMENTAL implementation of device-mapper thin provisioning\nwith snapshot support.  The \u0027thin\u0027 target is used to create instances of\nthe virtual devices that are hosted in the \u0027thin-pool\u0027 target.  The\nthin-pool target provides data sharing among devices.  This sharing is\nmade possible using the persistent-data library in the previous patch.\n\nThe main highlight of this implementation, compared to the previous\nimplementation of snapshots, is that it allows many virtual devices to\nbe stored on the same data volume, simplifying administration and\nallowing sharing of data between volumes (thus reducing disk usage).\n\nAnother big feature is support for arbitrary depth of recursive\nsnapshots (snapshots of snapshots of snapshots ...).  The previous\nimplementation of snapshots did this by chaining together lookup tables,\nand so performance was O(depth).  This new implementation uses a single\ndata structure so we don\u0027t get this degradation with depth.\n\nFor further information and examples of how to use this, please read\nDocumentation/device-mapper/thin-provisioning.txt\n\nSigned-off-by: Joe Thornber \u003cthornber@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3241b1d3e0aaafbfcd320f4d71ade629728cc4f4",
      "tree": "499461f724d4db3d7118641f4a20f5be23549edd",
      "parents": [
        "95d402f057f2e208e4631893f6cd4a59c7c05e41"
      ],
      "author": {
        "name": "Joe Thornber",
        "email": "thornber@redhat.com",
        "time": "Mon Oct 31 20:19:11 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:11 2011 +0000"
      },
      "message": "dm: add persistent data library\n\nThe persistent-data library offers a re-usable framework for the storage\nand management of on-disk metadata in device-mapper targets.\n\nIt\u0027s used by the thin-provisioning target in the next patch and in an\nupcoming hierarchical storage target.\n\nFor further information, please read\nDocumentation/device-mapper/persistent-data.txt\n\nSigned-off-by: Joe Thornber \u003cthornber@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "95d402f057f2e208e4631893f6cd4a59c7c05e41",
      "tree": "4edb6c01f62689617ee3098104c135ef2c43f0e2",
      "parents": [
        "3cf2e4ba74ca1bf5d8ad26cd18592f02b32964f5"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Oct 31 20:19:09 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:09 2011 +0000"
      },
      "message": "dm: add bufio\n\nThe dm-bufio interface allows you to do cached I/O on devices,\nholding recently-read blocks in memory and performing delayed writes.\n\nWe don\u0027t use buffer cache or page cache already present in the kernel, because:\n* we need to handle block sizes larger than a page\n* we can\u0027t allocate memory to perform reads or we\u0027d have deadlocks\n\nCurrently, when a cache is required, we limit its size to a fraction of\navailable memory.  Usage can be viewed and changed in\n/sys/module/dm_bufio/parameters/ .\n\nThe first user is thin provisioning, but more dm users are planned.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3cf2e4ba74ca1bf5d8ad26cd18592f02b32964f5",
      "tree": "5520a8bcdbabc01956ce774724388e013b6f55f4",
      "parents": [
        "36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:06 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:06 2011 +0000"
      },
      "message": "dm: export dm get md\n\nExport dm_get_md() for the new thin provisioning target to use.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "36a0456fbf2d9680bf9af81b39daf4a8e22cb1b8",
      "tree": "a19af18640d538e8357c195e6b4c77d0f6c92391",
      "parents": [
        "cc6cbe141a20f6d876b161b60af38d93935bfa85"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:04 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:04 2011 +0000"
      },
      "message": "dm table: add immutable feature\n\nIntroduce DM_TARGET_IMMUTABLE to indicate that the target type cannot be mixed\nwith any other target type, and once loaded into a device, it cannot be\nreplaced with a table containing a different type.\n\nThe thin provisioning pool device will use this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "cc6cbe141a20f6d876b161b60af38d93935bfa85",
      "tree": "82fbbc48815503683b434c74b7eb18c15960f4f9",
      "parents": [
        "3791e2fc0e4b40d4188e79b0a99bfa6bce714a10"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:02 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:02 2011 +0000"
      },
      "message": "dm table: add always writeable feature\n\nAdd a target feature flag DM_TARGET_ALWAYS_WRITEABLE to indicate that a target\ndoes not support read-only mode.\n\nThe initial implementation of the thin provisioning target uses this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3791e2fc0e4b40d4188e79b0a99bfa6bce714a10",
      "tree": "2dc67f0593e1cb1f3dc07ff9883a03fe9edb4b2a",
      "parents": [
        "7f06965390e4a10fb6906c886324bfd0a96961be"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:00 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:19:00 2011 +0000"
      },
      "message": "dm table: add singleton feature\n\nIntroduce the concept of a singleton table which contains exactly one target.\n\nIf a target type sets the DM_TARGET_SINGLETON feature bit device-mapper\nwill ensure that any table that includes that target contains no others.\n\nThe thin provisioning pool target uses this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7f06965390e4a10fb6906c886324bfd0a96961be",
      "tree": "5a6fd96cd56fb9d80bf1a40110ebfcdb5a8a7aa3",
      "parents": [
        "fbdc86f3bd597e108fa03d998132d04fcfe1d669"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Mon Oct 31 20:18:58 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:58 2011 +0000"
      },
      "message": "dm kcopyd: add dm_kcopyd_zero to zero an area\n\nThis patch introduces dm_kcopyd_zero() to make it easy to use\nkcopyd to write zeros into the requested areas instead\ninstead of copying.  It is implemented by passing a NULL\ncopying source to dm_kcopyd_copy().\n\nThe forthcoming thin provisioning target uses this.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fbdc86f3bd597e108fa03d998132d04fcfe1d669",
      "tree": "3d0ad8ea43576c0b57523a71d345a209f6ffd6fa",
      "parents": [
        "71a16736a15e3fd11d283c42aa86bf704f6d25ff"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Oct 31 20:18:56 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:56 2011 +0000"
      },
      "message": "dm: remove superfluous smp_mb\n\nSince set_current_state() contains a memory barrier in it,\nan additional barrier isn\u0027t needed.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "71a16736a15e3fd11d283c42aa86bf704f6d25ff",
      "tree": "1c6c54e8229b422756ec775cc04ad0066d1ad0c8",
      "parents": [
        "4693c9668fdcec229825b3763876b4744f9e6d5e"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Mon Oct 31 20:18:54 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:54 2011 +0000"
      },
      "message": "dm: use local printk ratelimit\n\nprintk_ratelimit() shares global ratelimiting state with all\nother subsystems, so its usage is discouraged. Instead,\ndefine and use dm\u0027s local state.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4693c9668fdcec229825b3763876b4744f9e6d5e",
      "tree": "683d07005d06c3e25bbec25b910567275f0bb9d1",
      "parents": [
        "c3b92c8787367a8bb53d57d9789b558f1295cc96"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "msb@chromium.org",
        "time": "Mon Oct 31 20:18:50 2011 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Oct 31 20:18:50 2011 +0000"
      },
      "message": "dm table: propagate non rotational flag\n\nAllow QUEUE_FLAG_NONROT to propagate up the device stack if all\nunderlying devices are non-rotational.  Tools like ureadahead will\nschedule IOs differently based on the rotational flag.\n\nWith this patch, I see boot time go from 7.75 s to 7.46 s on my device.\n\nSuggested-by: J. Richard Barnette \u003cjrbarnette@chromium.org\u003e\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Jens Axboe \u003cjaxboe@fusionio.com\u003e\nCc: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nCc: dm-devel@redhat.com\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7fcc7c8acf0fba44d19a713207af7e58267c1179",
      "tree": "ce4b03fa3dfc07fb19b4d6c3653ba41ec1f926db",
      "parents": [
        "d890fa2b0586b6177b119643ff66932127d58afa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 31 12:59:44 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Oct 31 12:59:44 2011 +1100"
      },
      "message": "md/raid10:  Fix bug when activating a hot-spare.\n\nThis is a fairly serious bug in RAID10.\n\nWhen a RAID10 array is degraded and a hot-spare is activated, the\nspare does not take up the empty slot, but rather replaces the first\nworking device.\nThis is likely to make the array non-functional.   It would normally\nbe possible to recover the data, but that would need care and is not\nguaranteed.\n\nThis bug was introduced in commit\n   2bb77736ae5dca0a189829fbb7379d43364a9dac\nwhich first appeared in 3.1.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c3ae1f33569e06984f0426a7834ff63251d44d84",
      "tree": "0d7f6f6b49c331e440850cf2e8a7bc0cf220f8bc",
      "parents": [
        "c28cfd60e4ec3f494b73ef7d6c661f5f491cd84f",
        "d890fa2b0586b6177b119643ff66932127d58afa"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 26 21:39:42 2011 +0200"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Oct 26 21:39:42 2011 +0200"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md: (34 commits)\n  md: Fix some bugs in recovery_disabled handling.\n  md/raid5: fix bug that could result in reads from a failed device.\n  lib/raid6: Fix filename emitted in generated code\n  md.c: trivial comment fix\n  MD: Allow restarting an interrupted incremental recovery.\n  md: clear In_sync bit on devices added to an active array.\n  md: add proper write-congestion reporting to RAID1 and RAID10.\n  md: rename \"mdk_personality\" to \"md_personality\"\n  md/bitmap remove fault injection options.\n  md/raid5: typedef removal: raid5_conf_t -\u003e struct r5conf\n  md/raid1: typedef removal: conf_t -\u003e struct r1conf\n  md/raid10: typedef removal: conf_t -\u003e struct r10conf\n  md/raid0: typedef removal: raid0_conf_t -\u003e struct r0conf\n  md/multipath: typedef removal: multipath_conf_t -\u003e struct mpconf\n  md/linear: typedef removal: linear_conf_t -\u003e struct linear_conf\n  md/faulty: remove typedef: conf_t -\u003e struct faulty_conf\n  md/linear: remove typedefs: dev_info_t -\u003e struct dev_info\n  md: remove typedefs: mirror_info_t -\u003e struct mirror_info\n  md: remove typedefs: r10bio_t -\u003e struct r10bio and r1bio_t -\u003e struct r1bio\n  md: remove typedefs: mdk_thread_t -\u003e struct md_thread\n  ...\n"
    },
    {
      "commit": "d890fa2b0586b6177b119643ff66932127d58afa",
      "tree": "48dfb1c192274002fc045996f49915a4d9af3bf8",
      "parents": [
        "355840e7a7e56bb2834fd3b0da64da5465f8aeaa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 11:54:39 2011 +1100"
      },
      "message": "md: Fix some bugs in recovery_disabled handling.\n\nIn 3.0 we changed the way recovery_disabled was handle so that instead\nof testing against zero, we test an mddev-\u003e value against a conf-\u003e\nvalue.\nTwo problems:\n  1/ one place in raid1 was missed and still sets to \u00271\u0027.\n  2/ We didn\u0027t explicitly set the conf-\u003e value at array creation\n     time.\n     It defaulted to \u00270\u0027 just like the mddev value does so they\n     could appear equal and thus disable recovery.\n     This did not affect normal \u0027md\u0027 as it calls bind_rdev_to_array\n     which changes the mddev value.  However the dmraid interface\n     doesn\u0027t call this and so doesn\u0027t change -\u003erecovery_disabled; so at\n     array start all recovery is incorrectly disabled.\n\nSo initialise the \u0027conf\u0027 value to one less that the mddev value, so\nthe will only be the same when explicitly set that way.\n\nReported-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: NeilBrown  \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "355840e7a7e56bb2834fd3b0da64da5465f8aeaa",
      "tree": "8ba816b2db3b96872f744c476c3d3d0d3f12fd23",
      "parents": [
        "bd860c53d4f9cad520d233e1ba690aaacfb39e9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 10:31:04 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 26 10:31:04 2011 +1100"
      },
      "message": "md/raid5: fix bug that could result in reads from a failed device.\n\nThis bug was introduced in 415e72d034c50520ddb7ff79e7d1792c1306f0c9\nwhich was in 2.6.36.\n\nThere is a small window of time between when a device fails and when\nit is removed from the array.  During this time we might still read\nfrom it, but we won\u0027t write to it - so it is possible that we could\nread stale data.\n\nWe didn\u0027t need the test of \u0027Faulty\u0027 before because the test on\nIn_sync is sufficient.  Since we started allowing reads from the early\npart of non-In_sync devices we need a test on Faulty too.\n\nThis is suitable for any kernel from 2.6.36 onwards, though the patch\nmight need a bit of tweaking in 3.0 and earlier.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9562ad9ab36df7ccef920d119f3b5100025db95f",
      "tree": "b5e32ca469cbefca4122c1a08db80cdb12e655fb",
      "parents": [
        "e890413af4c2dfebf5432ef30cc70cb11dad3213"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "boyu.mt@taobao.com",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Oct 24 16:11:30 2011 +0200"
      },
      "message": "block: Remove the control of complete cpu from bio.\n\nbio originally has the functionality to set the complete cpu, but\nit is broken.\n\nChirstoph said that \"This code is unused, and from the all the\ndiscussions lately pretty obviously broken.  The only thing keeping\nit serves is creating more confusion and possibly more bugs.\"\n\nAnd Jens replied with \"We can kill bio_set_completion_cpu(). I\u0027m fine\nwith leaving cpu control to the request based drivers, they are the\nonly ones that can toggle the setting anyway\".\n\nSo this patch tries to remove all the work of controling complete cpu\nfrom a bio.\n\nCc: Shaohua Li \u003cshaohua.li@intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nSigned-off-by: Tao Ma \u003cboyu.mt@taobao.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "d136f2efdf3a4faba47f58603f8ace2207234d75",
      "tree": "0b2e94980503cdae7f326219d792d98b10e54a0f",
      "parents": [
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Oct 23 20:55:17 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Oct 23 20:55:17 2011 +0100"
      },
      "message": "dm kcopyd: fix job_pool leak\n\nFix memory leak introduced by commit a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb\n(dm snapshot: skip reading origin when overwriting complete chunk).\n\nWhen allocating a set of jobs from kc-\u003ejob_pool, job-\u003emaster_job must be\nset (to point to itself) so that the mempool item gets freed when the\nmaster_job completes.\n\nmaster_job was introduced by commit c6ea41fbbe08f270a8edef99dc369faf809d1bd6\n(dm kcopyd: preallocate sub jobs to avoid deadlock)\n\nReported-by: Michael Leun \u003cml@newton.leun.net\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5c04b426f2e8b46cfc7969a35b2631063a3c646c",
      "tree": "2d27d9f5d2fe5d5e8fbc01a467ec58bcb50235c1",
      "parents": [
        "499337bb6511e665a236a6a947f819d98ea340c6",
        "899e3ee404961a90b828ad527573aaaac39f0ab1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Oct 19 14:30:42 2011 +0200"
      },
      "message": "Merge branch \u0027v3.1-rc10\u0027 into for-3.2/core\n\nConflicts:\n\tblock/blk-core.c\n\tinclude/linux/blkdev.h\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "751e67ca2e2790e9b9b187557d5ba6f96b6c4a7e",
      "tree": "029525eb09d78e63b97d151a0d2e1871d6766885",
      "parents": [
        "d70ed2e4fafdbef0800e73942482bb075c21578b"
      ],
      "author": {
        "name": "Chris Dunlop",
        "email": "chris@onthe.net.au",
        "time": "Wed Oct 19 16:48:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Oct 19 17:15:15 2011 +1100"
      },
      "message": "md.c: trivial comment fix\n\nTrivial comment fix\n\nSigned-off-by: Chris Dunlop \u003cchris@onthe.net.au\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d70ed2e4fafdbef0800e73942482bb075c21578b",
      "tree": "a0fb7f9b6993b44e37dc2f724df251bd6fcffae3",
      "parents": [
        "d30519fc59c5cc2f7772fa67b16b1a2426d36c95"
      ],
      "author": {
        "name": "Andrei Warkentin",
        "email": "andreiw@vmware.com",
        "time": "Tue Oct 18 12:16:48 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:16:48 2011 +1100"
      },
      "message": "MD: Allow restarting an interrupted incremental recovery.\n\nIf an incremental recovery was interrupted, a subsequent\nre-add will result in a full recovery, even though an\nincremental should be possible (seen with raid1).\n\nSolve this problem by not updating the superblock on the\nrecovering device until array is not degraded any longer.\n\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrei Warkentin \u003candreiw@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d30519fc59c5cc2f7772fa67b16b1a2426d36c95",
      "tree": "3aae0a21c16816e1989ea90db23a5b123a5a6a12",
      "parents": [
        "34db0cd60f8a1f4ab73d118a8be3797c20388223"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:13:47 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 18 12:13:47 2011 +1100"
      },
      "message": "md: clear In_sync bit on devices added to an active array.\n\nWhen we add a device to an active array it can be meaningful to set\nthe \u0027insync\u0027 flag.  This indicates that the device is in-sync with the\narray except for locations recorded in the bitmap.\nA bitmap-based recovery can then bring it completely in-sync.\n\nInternally we move that flag to \u0027saved_raid_disk\u0027 but forgot to clear\nIn_sync like we do in add_new_disk.\n\nSo clear In_sync after moving its value to saved_raid_disk.\n\nReported-by: Andrei Warkentin \u003candreiw@vmware.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "34db0cd60f8a1f4ab73d118a8be3797c20388223",
      "tree": "45d1d629d6b9195d47d30980595686c9a3ee92f9",
      "parents": [
        "84fc4b56db85cb9e05326424049973a2036c9940"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:50:01 2011 +1100"
      },
      "message": "md: add proper write-congestion reporting to RAID1 and RAID10.\n\nRAID1 and RAID10 handle write requests by queuing them for handling by\na separate thread.  This is because when a write-intent-bitmap is\nactive we might need to update the bitmap first, so it is good to\nqueue a lot of writes, then do one big bitmap update for them all.\n\nHowever writeback request devices to appear to be congested after a\nwhile so it can make some guesstimate of throughput.  The infinite\nqueue defeats that (note that RAID5 has already has a finite queue so\nit doesn\u0027t suffer from this problem).\n\nSo impose a limit on the number of pending write requests.  By default\nit is 1024 which seems to be generally suitable.  Make it configurable\nvia module option just in case someone finds a regression.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "84fc4b56db85cb9e05326424049973a2036c9940",
      "tree": "b8f942766ad620d63da92c24df56032168879253",
      "parents": [
        "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:58 2011 +1100"
      },
      "message": "md: rename \"mdk_personality\" to \"md_personality\"\n\n\"mdk\" doesn\u0027t mean anything any more.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "29d3247ea2274bca0d0b7f41fcf3b82e0a8bc44c",
      "tree": "703fae8142e179a6007390a43ff48e18321f848c",
      "parents": [
        "d1688a6d5515f1900af76a963b4bb6d9a6554cfa"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:56 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:56 2011 +1100"
      },
      "message": "md/bitmap remove fault injection options.\n\nThese are too hard to use to be much more than noise.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "d1688a6d5515f1900af76a963b4bb6d9a6554cfa",
      "tree": "2ed2b1001804b6982697c3785f06580a4e84e31b",
      "parents": [
        "e8096360476689898f038feebf5b352c9ec43a2a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:52 2011 +1100"
      },
      "message": "md/raid5: typedef removal: raid5_conf_t -\u003e struct r5conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e8096360476689898f038feebf5b352c9ec43a2a",
      "tree": "e7570a5fc3cb0e40f29c55470a2261e03c44a8d1",
      "parents": [
        "e879a8793f915aa7933364d962d2435bd71de462"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:05 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:05 2011 +1100"
      },
      "message": "md/raid1: typedef removal: conf_t -\u003e struct r1conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e879a8793f915aa7933364d962d2435bd71de462",
      "tree": "bf62ccd52171bdaebd1d09b98f049950e39dd198",
      "parents": [
        "e373ab109172abc2d821bd3b5c1b400acddef5a5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:49:02 2011 +1100"
      },
      "message": "md/raid10: typedef removal: conf_t -\u003e struct r10conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e373ab109172abc2d821bd3b5c1b400acddef5a5",
      "tree": "48ca1b8ded6ec90a47015ab7316fe8cadb9f8d05",
      "parents": [
        "69724e28ca99990a8f0b5370bb946d7704936d67"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:59 2011 +1100"
      },
      "message": "md/raid0: typedef removal: raid0_conf_t -\u003e struct r0conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "69724e28ca99990a8f0b5370bb946d7704936d67",
      "tree": "b811de8d2d76a7976a9ef26d2bffddb7289ae495",
      "parents": [
        "e849b9381f726c0fa20c4e7b7139b936df777084"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:57 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:57 2011 +1100"
      },
      "message": "md/multipath: typedef removal: multipath_conf_t -\u003e struct mpconf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e849b9381f726c0fa20c4e7b7139b936df777084",
      "tree": "8f1a8b8cf0afb7621c9025fb6ead7d8e9f319b95",
      "parents": [
        "8f1ae43dd27eff2d71708be46fad339dbdd70bd1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:54 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:54 2011 +1100"
      },
      "message": "md/linear: typedef removal: linear_conf_t -\u003e struct linear_conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8f1ae43dd27eff2d71708be46fad339dbdd70bd1",
      "tree": "7e4a4e991e96a94fe98ffb811da9bf25ace4d283",
      "parents": [
        "a71207713a36e73fb1bc264453a9c594b95d3af1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:52 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:52 2011 +1100"
      },
      "message": "md/faulty: remove typedef: conf_t -\u003e struct faulty_conf\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a71207713a36e73fb1bc264453a9c594b95d3af1",
      "tree": "5b7fbeae4af391fd52f870af0128e49b1e671975",
      "parents": [
        "0f6d02d580ca77ee4be085c29c5fe5b879df24d9"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:49 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:49 2011 +1100"
      },
      "message": "md/linear: remove typedefs: dev_info_t -\u003e struct dev_info\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f6d02d580ca77ee4be085c29c5fe5b879df24d9",
      "tree": "6ac3a0f3fba6cc6f8d66e9c413460ab5a740db8e",
      "parents": [
        "9f2c9d12bcc53fcb3b787023723754e84d1aef8b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:46 2011 +1100"
      },
      "message": "md: remove typedefs: mirror_info_t -\u003e struct mirror_info\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9f2c9d12bcc53fcb3b787023723754e84d1aef8b",
      "tree": "85fbc63c6e480bdebe06529e1af4d3d483d70452",
      "parents": [
        "2b8bf3451d1e3133ebc3998721d14013a6c27114"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:43 2011 +1100"
      },
      "message": "md: remove typedefs: r10bio_t -\u003e struct r10bio and r1bio_t -\u003e struct r1bio\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2b8bf3451d1e3133ebc3998721d14013a6c27114",
      "tree": "6ad9afb9124d5eb865d513ec3f30259231075a8f",
      "parents": [
        "fd01b88c75a718020ff77e7f560d33835e9b58de"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:48:23 2011 +1100"
      },
      "message": "md: remove typedefs: mdk_thread_t -\u003e struct md_thread\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "fd01b88c75a718020ff77e7f560d33835e9b58de",
      "tree": "c455d5adefd58f3263dcf265bb8ba2024523b106",
      "parents": [
        "3cb03002000f133f9f97269edefd73611eafc873"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:47:53 2011 +1100"
      },
      "message": "md: remove typedefs: mddev_t -\u003e struct mddev\n\nHaving mddev_t and \u0027struct mddev_s\u0027 is ugly and not preferred\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "3cb03002000f133f9f97269edefd73611eafc873",
      "tree": "77fdb146666298b33aaeef0c05f082b6f82840fe",
      "parents": [
        "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Oct 11 16:45:26 2011 +1100"
      },
      "message": "md: removing typedefs:  mdk_rdev_t -\u003e struct md_rdev\n\nThe typedefs are just annoying. \u0027mdk\u0027 probably refers to \u0027md_k.h\u0027\nwhich used to be an include file that defined this thing.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "50de8df4abca1b27dbf7b2f81a56451bd8b5a7d8",
      "tree": "7f0288247afd84707f2529634a5d4a64e9b8f046",
      "parents": [
        "36a4e1fe0f454146724c174bf7c1e8e76297a212"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:22 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:22 2011 +1100"
      },
      "message": "md/raid0: convert some printks to pr_debug.\n\nWhen md assembles a RAID0 array it prints out lots of info which\nis really just for debugging, so convert that to pr_debug.\nIt also prints out the resulting configuration which could be\ninteresting, so keep that as \u0027printk\u0027 but tidy it up a bit.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "36a4e1fe0f454146724c174bf7c1e8e76297a212",
      "tree": "57f0de83fda98e5ae1b4f66d5e993ca27386a793",
      "parents": [
        "bdc04e6b15f70a8f96d8cdfe21df159a6466b49a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:17 2011 +1100"
      },
      "message": "md: remove PRINTK and dprintk debugging and use pr_debug\n\nBeing able to dynamically enable these make them much more useful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "bdc04e6b15f70a8f96d8cdfe21df159a6466b49a",
      "tree": "23b762d044dafe35ac2fb20214fc1eff77a41bdd",
      "parents": [
        "db298e1946c074c83d97f1c959fbc0def2af2c86"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:04 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:04 2011 +1100"
      },
      "message": "md: remove some old DEBUGging code.\n\nThis code is not really helpful and is hard to maintain, so just\ndiscard it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "db298e1946c074c83d97f1c959fbc0def2af2c86",
      "tree": "1fb0ff7c0d6b85216d391e82b84af07b032fb987",
      "parents": [
        "0fc280f606742e8a2969776b2ab11cf6a614d9e1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:00 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:23:00 2011 +1100"
      },
      "message": "md/raid5: convert to macros into inline functions.\n\nMore type-safety.  Easier to read.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0fc280f606742e8a2969776b2ab11cf6a614d9e1",
      "tree": "5725762cf7bc5eddcf0007584dfa7ba6eb67d3d8",
      "parents": [
        "ba3ae3bee317f0a5db813c026c8a8c113a4e40fb"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:55 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:55 2011 +1100"
      },
      "message": "md/raid1/ avoid bio search in end_sync_read()\n\nWe know which device we just read from so we don\u0027t need to\nsearch the bios to find out.  Just use -\u003eread_disk.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ba3ae3bee317f0a5db813c026c8a8c113a4e40fb",
      "tree": "30a8c9d55afc32156973a3b1efb1cec94f4411d4",
      "parents": [
        "e4f869d9de18bc8272df8d0ab764178aa24bdf33"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Fri Oct 07 14:22:53 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:53 2011 +1100"
      },
      "message": "md/raid1: factor out common bio handling code\n\nWhen normal-write and sync-read/write bio completes, we should\nfind out the disk number the bio belongs to. Factor those common\ncode out to a separate function.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "e4f869d9de18bc8272df8d0ab764178aa24bdf33",
      "tree": "9782f85edbecdb83dab65f2fab4390264b0d7139",
      "parents": [
        "ce550c2059a67ee7834fc6f64cf895391d36a58e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:49 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:49 2011 +1100"
      },
      "message": "md/raid5: remove pointless NULL test.\n\nIn the \u0027abort\u0027 branch of run(), \u0027conf\u0027 cannot possibly be NULL,\nso remove the test.\n\nReported-by: Zdenek Kabelac \u003czdenek.kabelac@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ce550c2059a67ee7834fc6f64cf895391d36a58e",
      "tree": "55d73447b2d75597802955559706a17feda9ce68",
      "parents": [
        "2dba6a911c284603d2085fec1e2d3c142f58a010"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:33 2011 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Oct 07 14:22:33 2011 +1100"
      },
      "message": "md/raid1:  add documentation to r1_private_data_s data structure.\n\nThere wasn\u0027t much and it is inconsistent.\nAlso rearrange fields to keep related fields together.\n\nReported-by: Aapo Laine \u003caapo.laine@shiftmail.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6367f1775ebb66b0f0e9e3512159f3257a6fde0e",
      "tree": "113dadfab2a16ab63047a8b350f9facdb5060a82",
      "parents": [
        "a7c56ebac1bce799b583230595b4de9ccb8162d0",
        "983c7db347db8ce2d8453fd1d89b7a4bb6920d56"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 06 08:31:47 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Oct 06 08:31:47 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of http://people.redhat.com/agk/git/linux-dm\n\n* \u0027for-linus\u0027 of http://people.redhat.com/agk/git/linux-dm:\n  dm crypt: always disable discard_zeroes_data\n  dm: raid fix write_mostly arg validation\n  dm table: avoid crash if integrity profile changes\n  dm: flakey fix corrupt_bio_byte error path\n"
    },
    {
      "commit": "983c7db347db8ce2d8453fd1d89b7a4bb6920d56",
      "tree": "f4302d7eb306b82db4227ba5defe6d178949831b",
      "parents": [
        "8232480944d173378082ebb2cac8a3207c08cf31"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Sun Sep 25 23:26:21 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Sep 25 23:26:21 2011 +0100"
      },
      "message": "dm crypt: always disable discard_zeroes_data\n\nIf optional discard support in dm-crypt is enabled, discards requests\nbypass the crypt queue and blocks of the underlying device are discarded.\nFor the read path, discarded blocks are handled the same as normal\nciphertext blocks, thus decrypted.\n\nSo if the underlying device announces discarded regions return zeroes,\ndm-crypt must disable this flag because after decryption there is just\nrandom noise instead of zeroes.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8232480944d173378082ebb2cac8a3207c08cf31",
      "tree": "d77436773e5c8a2274e1b0db507e5c251f225ecf",
      "parents": [
        "876fbba1db4a377f050a2bb49b474c7527b2995d"
      ],
      "author": {
        "name": "Jonthan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Sun Sep 25 23:26:19 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Sep 25 23:26:19 2011 +0100"
      },
      "message": "dm: raid fix write_mostly arg validation\n\nFix off-by-one error in validation of write_mostly.\n\nThe user-supplied value given for the \u0027write_mostly\u0027 argument must be an\nindex starting at 0.  The validation of the supplied argument failed to\ncheck for \u0027N\u0027 (\u0027\u003e\u0027 vs \u0027\u003e\u003d\u0027), which would have caused an access beyond the\nend of the array.\n\nReported-by: Doug Ledford \u003cdledford@redhat.com\u003e\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "876fbba1db4a377f050a2bb49b474c7527b2995d",
      "tree": "df134b1c01cd6385afe7ff7171eb722063de6b4b",
      "parents": [
        "68e58a294fb26f692697179e3f3ecf88dd8cb97c"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sun Sep 25 23:26:17 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Sep 25 23:26:17 2011 +0100"
      },
      "message": "dm table: avoid crash if integrity profile changes\n\nCommit a63a5cf (dm: improve block integrity support) introduced a\ntwo-phase initialization of a DM device\u0027s integrity profile.  This\npatch avoids dereferencing a NULL \u0027template_disk\u0027 pointer in\nblk_integrity_register() if there is an integrity profile mismatch in\ndm_table_set_integrity().\n\nThis can occur if the integrity profiles for stacked devices in a DM\ntable are changed between the call to dm_table_prealloc_integrity() and\ndm_table_set_integrity().\n\nReported-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nCc: stable@kernel.org # 2.6.39\n"
    },
    {
      "commit": "68e58a294fb26f692697179e3f3ecf88dd8cb97c",
      "tree": "4576ce77f692c4acf85883b5d18127c5806bdf64",
      "parents": [
        "d93dc5c4478c1fd5de85a3e8aece9aad7bbae044"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sun Sep 25 23:26:15 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sun Sep 25 23:26:15 2011 +0100"
      },
      "message": "dm: flakey fix corrupt_bio_byte error path\n\nIf no arguments were provided to the corrupt_bio_byte feature an error\nshould be returned immediately.\n\nReported-by: Zdenek Kabelac \u003czkabelac@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2dba6a911c284603d2085fec1e2d3c142f58a010",
      "tree": "8db93ad2131afd519b9d618f12841ec5d981c082",
      "parents": [
        "7e841526263b3e0042a423513147dfd06c8e998d"
      ],
      "author": {
        "name": "Daniel P. Berrange",
        "email": "berrange@redhat.com",
        "time": "Fri Sep 23 10:40:45 2011 +0100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Sep 23 19:54:04 2011 +1000"
      },
      "message": "md: don\u0027t delay reboot by 1 second if no MD devices exist\n\nThe md_notify_reboot() method includes a call to mdelay(1000),\nto deal with \"exotic SCSI devices\" which are too volatile on\nreboot. The delay is unconditional. Even if the machine does\nnot have any block devices, let alone MD devices, the kernel\nshutdown sequence is slowed down.\n\n1 second does not matter much with physical hardware, but with\ncertain virtualization use cases any wasted time in the bootup\n\u0026 shutdown sequence counts for alot.\n\n* drivers/md/md.c: md_notify_reboot() - only impose a delay if\n  there was at least one MD device to be stopped during reboot\n\nSigned-off-by: Daniel P. Berrange \u003cberrange@redhat.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7e841526263b3e0042a423513147dfd06c8e998d",
      "tree": "c576c1f968713c6f4ba020a8de744af757cbffe7",
      "parents": [
        "2585f3ef8c7fffe750ef1feb2775023716d799a8"
      ],
      "author": {
        "name": "Wang Sheng-Hui",
        "email": "shhuiw@gmail.com",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "message": "trival: md_k.h should be md.h in the beginning comment of file md.h\n\nSigned-off-by: Wang Sheng-Hui \u003cshhuiw@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "2585f3ef8c7fffe750ef1feb2775023716d799a8",
      "tree": "3faccf1f22eb01bea55f49926a913446134df1d2",
      "parents": [
        "5a537df44d52331a3d2792ca21a296959bd2ac3a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "message": "md/bitmap: improve handling of \u0027allclean\u0027.\n\nThe \u0027allclean\u0027 flag is used to cache the fact that there is nothing to\ndo, so we can avoid waking up and scanning the bitmap regularly.\n\nThe two sorts of pages that might need the attention of the bitmap\ndaemon are BITMAP_PAGE_PENDING and BITMAP_PAGE_NEEDWRITE pages.\n\nSo make sure allclean reflects exactly when there are none of those.\nSo:\n  set it before scanning all pages with either bit set.\n  clear it whenever these bits are set\n  clear it when we desire not to clear one of these bits.\n  don\u0027t clear it any other time.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5a537df44d52331a3d2792ca21a296959bd2ac3a",
      "tree": "31907bdb1be692583702cd8be91de2a578a6f0d5",
      "parents": [
        "01f96c0a9922cd9919baf9d16febdf7016177a12"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:37:46 2011 +1000"
      },
      "message": "md/bitmap: rename and tidy up BITMAP_PAGE_CLEAN\n\nThe flag \u0027BITMAP_PAGE_CLEAN\u0027 has a confusing name as it doesn\u0027t mean\nthat the page is clean, but rather that there are counters in the page\nwhich allow bits in the bitmap to be cleared - i.e. maybe cleaning can\nhappen.\n\nSo change it to BITMAP_PAGE_PENDING and fix some irregularities:\n - Don\u0027t set it in bitmap_init_from_disk as bitmap_set_memory_bits\n   sets it when needed\n - in bitmap_daemon_work, if we find a counter that is \u00271\u0027, but\n   need_sync is set, then set BITMAP_PAGE_PENDING again (it was\n   recently cleared) to ensure we don\u0027t forget about this bit.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e   \n"
    },
    {
      "commit": "01f96c0a9922cd9919baf9d16febdf7016177a12",
      "tree": "a877fe509c4ef0db5252b7192df56009c1d06d6f",
      "parents": [
        "27a7b260f71439c40546b43588448faac01adb93"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Sep 21 15:30:20 2011 +1000"
      },
      "message": "md: Avoid waking up a thread after it has been freed.\n\nTwo related problems:\n\n1/ some error paths call \"md_unregister_thread(mddev-\u003ethread)\"\n   without subsequently clearing -\u003ethread.  A subsequent call\n   to mddev_unlock will try to wake the thread, and crash.\n\n2/ Most calls to md_wakeup_thread are protected against the thread\n   disappeared either by:\n      - holding the -\u003emutex\n      - having an active request, so something else must be keeping\n        the array active.\n   However mddev_unlock calls md_wakeup_thread after dropping the\n   mutex and without any certainty of an active request, so the\n   -\u003ethread could theoretically disappear.\n   So we need a spinlock to provide some protections.\n\nSo change md_unregister_thread to take a pointer to the thread\npointer, and ensure that it always does the required locking, and\nclears the pointer properly.\n\nReported-by: \"Moshe Melnikov\" \u003cmoshe@zadarastorage.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\ncc: stable@kernel.org\n"
    },
    {
      "commit": "5a7bbad27a410350e64a2d7f5ec18fc73836c14f",
      "tree": "3447cd62dbcbd77b4071e2eb7576f1d7632ef2d3",
      "parents": [
        "c20e8de27fef9f59869c81c288ad6cf28200e00c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:12:01 2011 +0200"
      },
      "message": "block: remove support for bio remapping from -\u003emake_request\n\nThere is very little benefit in allowing to let a -\u003emake_request\ninstance update the bios device and sector and loop around it in\n__generic_make_request when we can archive the same through calling\ngeneric_make_request from the driver and letting the loop in\ngeneric_make_request handle it.\n\nNote that various drivers got the return value from -\u003emake_request and\nreturned non-zero values for errors.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nAcked-by: NeilBrown \u003cneilb@suse.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "c20e8de27fef9f59869c81c288ad6cf28200e00c",
      "tree": "c1d972bfdf6b0f562169a923f2d77f422578fac1",
      "parents": [
        "166e1f901b01872e8b70733a3f2e2c6980389cf8"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:03:37 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:08:31 2011 +0200"
      },
      "message": "block: rename __make_request() to blk_queue_bio()\n\nNow that it\u0027s exported, lets put it in a more sane namespace.\n\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "166e1f901b01872e8b70733a3f2e2c6980389cf8",
      "tree": "bb0a52bfe76e60bb430cd6a5f91ceb9b6ecaa7b2",
      "parents": [
        "484fc254b88257a2d8b3759aa062e8e8b35e0988"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Sep 12 12:08:27 2011 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jaxboe@fusionio.com",
        "time": "Mon Sep 12 12:08:27 2011 +0200"
      },
      "message": "block: export __make_request\n\nAvoid the hacks need for request based device mappers currently by simply\nexporting the symbol instead of trying to get it through the back door.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Jens Axboe \u003cjaxboe@fusionio.com\u003e\n"
    },
    {
      "commit": "27a7b260f71439c40546b43588448faac01adb93",
      "tree": "80fdd39a446f93fa84a355cf4d0118244b4d7fd6",
      "parents": [
        "079fa166a2874985ae58b2e21e26e1cbc91127d4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:28 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:28 2011 +1000"
      },
      "message": "md: Fix handling for devices from 2TB to 4TB in 0.90 metadata.\n\n0.90 metadata uses an unsigned 32bit number to count the number of\nkilobytes used from each device.\nThis should allow up to 4TB per device.\nHowever we multiply this by 2 (to get sectors) before casting to a\nlarger type, so sizes above 2TB get truncated.\n\nAlso we allow rdev-\u003esectors to be larger than 4TB, so it is possible\nfor the array to be resized larger than the metadata can handle.\nSo make sure rdev-\u003esectors never exceeds 4TB when 0.90 metadata is in\nused.\n\nAlso the sanity check at the end of super_90_load should include level\n1 as it used -\u003esize too. (RAID0 and Linear don\u0027t use -\u003esize at all).\n\nReported-by: Pim Zandbergen \u003cP.Zandbergen@macroscoop.nl\u003e\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "079fa166a2874985ae58b2e21e26e1cbc91127d4",
      "tree": "39f67f9078465bd67c29216b35370a78907e4f3b",
      "parents": [
        "19d5f834d6aff7efb1c9353523865c5bce869470"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:23 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:23 2011 +1000"
      },
      "message": "md/raid1,10: Remove use-after-free bug in make_request.\n\nA single request to RAID1 or RAID10 might result in multiple\nrequests if there are known bad blocks that need to be avoided.\n\nTo detect if we need to submit another write request we test:\n \tif (sectors_handled \u003c (bio-\u003ebi_size \u003e\u003e 9)) {\n\nHowever this is after we call **_write_done() so the \u0027bio\u0027 no longer\nbelongs to us - the writes could have completed and the bio freed.\n\nSo move the **_write_done call until after the test against\nbio-\u003ebi_size.\n\nThis addresses https://bugzilla.kernel.org/show_bug.cgi?id\u003d41862\n\nReported-by: Bruno Wolff III \u003cbruno@wolff.to\u003e\nTested-by: Bruno Wolff III \u003cbruno@wolff.to\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "19d5f834d6aff7efb1c9353523865c5bce869470",
      "tree": "01c18b17519df9034bbcaf126eac9d9318143a1d",
      "parents": [
        "94007751bb02797ba87bac7aacee2731ac2039a3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:17 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Sat Sep 10 17:21:17 2011 +1000"
      },
      "message": "md/raid10: unify handling of write completion.\n\nA write can complete at two different places:\n1/ when the last member-device write completes, through\n   raid10_end_write_request\n2/ in make_request() when we remove the initial bias from -\u003eremaining.\n\nThese two should do exactly the same thing and the comment says they\ndo, but they don\u0027t.\n\nSo factor the correct code out into a function and call it in both\nplaces.  This makes the code much more similar to RAID1.\n\nThe difference is only significant if there is an error, and they\nusually take a while, so it is unlikely that there will be an error\nalready when make_request is completing, so this is unlikely to cause\nreal problems.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43220aa0f22cd3ce5b30246d50ccd696d119edea",
      "tree": "2738ff3d5acfbe899f30c4991175f945211e941d",
      "parents": [
        "7da64a0abc3b2c6cbd3521672e9bb74dd560bb89"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 31 12:49:14 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Aug 31 12:49:14 2011 +1000"
      },
      "message": "md/raid5: fix a hang on device failure.\n\nWaiting for a \u0027blocked\u0027 rdev to become unblocked in the raid5d thread\ncannot work with internal metadata as it is the raid5d thread which\nwill clear the blocked flag.\nThis wasn\u0027t a problem in 3.0 and earlier as we only set the blocked\nflag when external metadata was used then.\nHowever we now set it always, so we need to be more careful.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7da64a0abc3b2c6cbd3521672e9bb74dd560bb89",
      "tree": "1b17033fe40a2b29c7e4d6a2f200f54f39514a4d",
      "parents": [
        "1b6afa17581027218088a18a9ceda600e0ddba7a"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 30 16:20:17 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Aug 30 16:20:17 2011 +1000"
      },
      "message": "md: fix clearing of \u0027blocked\u0027 flag in the presence of bad blocks.\n\nWhen the \u0027blocked\u0027 flag on a device is cleared while there are\nunacknowledged bad blocks we must fail the device.  This is needed for\nbackwards compatability of the interface.\n\nThe code currently uses the wrong test for \"unacknowledged bad blocks\nexist\".  Change it to the right test.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1b6afa17581027218088a18a9ceda600e0ddba7a",
      "tree": "b1e8f78bf3f216b7b3d7f740c18009bc29592ed1",
      "parents": [
        "a5bf4df0c88b88d34b6f0e3bc8a402dac7d14611"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:53 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:53 2011 +1000"
      },
      "message": "md/linear: avoid corrupting structure while waiting for rcu_free to complete.\n\nI don\u0027t know what I was thinking putting \u0027rcu\u0027 after a dynamically\nsized array!  The array could still be in use when we call rcu_free()\n(That is the point) so we mustn\u0027t corrupt it.\n\nCc: stable@kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a5bf4df0c88b88d34b6f0e3bc8a402dac7d14611",
      "tree": "40296244aa28ddff0360a1a57878a99926243620",
      "parents": [
        "aeb9b211849621f592288ed5ad694de9eeaae87a"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung@gmail.com",
        "time": "Thu Aug 25 14:43:34 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:34 2011 +1000"
      },
      "message": "md: use REQ_NOIDLE flag in md_super_write()\n\nQueue idling is used for the anticipation of immediate\nsequencial I/O\u0027s but md_super_write() is a kind of one-\nshot operation, coupled with md_super_wait(), so the\nidling in this case will be just a waste of time.\n\nSpecifying REQ_NOIDLE prevents it. Instead of adding\nthe flag to submit_bio() directly, use pre-defined\nmacro WRITE_FLUSH_FUA.\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aeb9b211849621f592288ed5ad694de9eeaae87a",
      "tree": "affa418deafe2f218dc84e4aeb6ed4bbaf85d3e5",
      "parents": [
        "5ef56c8fecedf403a346d02140e52a072d693d6b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:08 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:43:08 2011 +1000"
      },
      "message": "md: ensure changes to \u0027write-mostly\u0027 are reflected in metadata.\n\nThe \u0027write-mostly\u0027 flag can be changed through sysfs.\nWith 0.90 metadata, those changes are reflected in the metadata.\nFor 1.x metadata, they aren\u0027t.\n\nSo fix super_1_sync to record \u0027write-mostly\u0027 status.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "5ef56c8fecedf403a346d02140e52a072d693d6b",
      "tree": "1f121fe5e4db61364c352e7ffe2293a1cc20e9a9",
      "parents": [
        "14c62e78dc1379185515be41903c4a667efc6d54"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:42:51 2011 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Thu Aug 25 14:42:51 2011 +1000"
      },
      "message": "md: report failure if a \u0027set faulty\u0027 request doesn\u0027t.\n\nSometimes a device will refuse to be set faulty.  e.g. RAID1 will\nnever let the last working device become faulty.\n\nSo check if \"md_error()\" did manage to set the faulty flag and fail\nwith EBUSY if it didn\u0027t.\n\nResolves-Debian-Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug\u003d601198\nReported-by: Mike Hommey \u003cmh+reportbug@glandium.org\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ed8b752bccf2560e305e25125721d2f0ac759e88",
      "tree": "b909fcf21ca7cdda3e7a680b37162212cce99586",
      "parents": [
        "772ae5f54d69c38a5e3c4352c5fdbdaff141af21"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:08 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:08 2011 +0100"
      },
      "message": "dm table: set flush capability based on underlying devices\n\nDM has always advertised both REQ_FLUSH and REQ_FUA flush capabilities\nregardless of whether or not a given DM device\u0027s underlying devices\nalso advertised a need for them.\n\nBlock\u0027s flush-merge changes from 2.6.39 have proven to be more costly\nfor DM devices.  Performance regressions have been reported even when\nDM\u0027s underlying devices do not advertise that they have a write cache.\n\nFix the performance regressions by configuring a DM device\u0027s flushing\ncapabilities based on those of the underlying devices\u0027 capabilities.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "772ae5f54d69c38a5e3c4352c5fdbdaff141af21",
      "tree": "727b6dc7596b8250d644214695f09e3d6c7e43d1",
      "parents": [
        "327372797c88b24953f454cd51a3734c02697bdd"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Aug 02 12:32:08 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:08 2011 +0100"
      },
      "message": "dm crypt: optionally support discard requests\n\nAdd optional parameter field to dmcrypt table and support\n\"allow_discards\" option.\n\nDiscard requests bypass crypt queue processing. Bio is simple remapped\nto underlying device.\n\nNote that discard will be never enabled by default because of security\nconsequences.  It is up to the administrator to enable it for encrypted\ndevices.\n\n(Note that userspace cryptsetup does not understand new optional\nparameters yet.  Support for this will come later.  Until then, you\nshould use \u0027dmsetup\u0027 to enable and disable this.)\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "327372797c88b24953f454cd51a3734c02697bdd",
      "tree": "e7f7e3dff1415817b31af76d746240d80772b448",
      "parents": [
        "b12d437b73d32203a41fde0d407e91812c866844"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: add md raid1 support\n\nSupport the MD RAID1 personality through dm-raid.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b12d437b73d32203a41fde0d407e91812c866844",
      "tree": "3c7a33f4a45779da4a5edb71678ce7f8ae4169e7",
      "parents": [
        "46bed2b5c16bb7c82e1088d7ae75fb958c8a8c4e"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: support metadata devices\n\nAdd the ability to parse and use metadata devices to dm-raid.  Although\nnot strictly required, without the metadata devices, many features of\nRAID are unavailable.  They are used to store a superblock and bitmap.\n\nThe role, or position in the array, of each device must be recorded in\nits superblock.  This is to help with fault handling, array reshaping,\nand sanity checks.  RAID 4/5/6 devices must be loaded in a specific order:\nin this way, the \u0027array_position\u0027 field helps validate the correctness\nof the mapping when it is loaded.  It can be used during reshaping to\nidentify which devices are added/removed.  Fault handling is impossible\nwithout this field.  For example, when a device fails it is recorded in\nthe superblock.  If this is a RAID1 device and the offending device is\nremoved from the array, there must be a way during subsequent array\nassembly to determine that the failed device was the one removed.  This\nis done by correlating the \u0027array_position\u0027 field and the bit-field\nvariable \u0027failed_devices\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "46bed2b5c16bb7c82e1088d7ae75fb958c8a8c4e",
      "tree": "bab932a8eec324ca470407ff54097d86a3c0e27f",
      "parents": [
        "c1084561bb85da3630540ebe951749a8cd8fc714"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: add write_mostly parameter\n\nAdd the write_mostly parameter to RAID1 dm-raid tables.\n\nThis allows the user to set the WriteMostly flag on a RAID1 device that\nshould normally be avoided for read I/O.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c1084561bb85da3630540ebe951749a8cd8fc714",
      "tree": "ecdefcf24dd88f4c19a873fa5d26039a0edf03a7",
      "parents": [
        "c0a2fa1ef1057a1e9450d6f055f1cde2ad4f85a2"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:07 2011 +0100"
      },
      "message": "dm raid: add region_size parameter\n\nAllow the user to specify the region_size.\n\nEnsures that the supplied value meets md\u0027s constraints, viz. the number of\nregions does not exceed 2^21.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "759dea204cce9f1fc2a5d00ea25211299fc7a4a0",
      "tree": "3ddbfdc0c4cb97317ea0d0d7bb6879fcac72b840",
      "parents": [
        "ba2e19b0f4ccd6920fe175a86521ff18ede260cb"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "message": "dm ioctl: forbid multiple device specifiers\n\nExactly one of name, uuid or device must be specified when referencing\nan existing device.  This removes the ambiguity (risking the wrong\ndevice being updated) if two conflicting parameters were specified.\nPreviously one parameter got used and any others were ignored silently.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ba2e19b0f4ccd6920fe175a86521ff18ede260cb",
      "tree": "25a9533cfbd1946da36483c3172914b9ea1f51cb",
      "parents": [
        "0ddf9644cc26e74ed671525e61a17bdbebf18da6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "message": "dm ioctl: introduce __get_dev_cell\n\nMove logic to find device based on major/minor number to a separate\nfunction __get_dev_cell (similar to __get_uuid_cell and __get_name_cell).\nThis makes the function __find_device_hash_cell more straightforward.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0ddf9644cc26e74ed671525e61a17bdbebf18da6",
      "tree": "fa10cf2fda8f52c0da7f2f1fcec54f2ce2d5bd1f",
      "parents": [
        "a3998799fb4df0b0af8271a7d50c4269032397aa"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "message": "dm ioctl: fill in device parameters in more ioctls\n\nMove parameter filling from find_device to __find_device_hash_cell.\n\nThis patch causes ioctls using __find_device_hash_cell\n(DM_DEV_REMOVE_CMD, DM_DEV_SUSPEND_CMD - resume, DM_TABLE_CLEAR_CMD)\nto return device parameters, bringing them into line with the other\nioctls.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a3998799fb4df0b0af8271a7d50c4269032397aa",
      "tree": "2a0dc0a082519afd70cc991da36f620bc21272fe",
      "parents": [
        "b26f5e3d7127487e934758c1fbe05d683b082cb0"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:06 2011 +0100"
      },
      "message": "dm flakey: add corrupt_bio_byte feature\n\nAdd corrupt_bio_byte feature to simulate corruption by overwriting a byte at a\nspecified position with a specified value during intervals when the device is\n\"down\".\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "b26f5e3d7127487e934758c1fbe05d683b082cb0",
      "tree": "8b120e0e45e3a50c1c5adada0eede0870d62457d",
      "parents": [
        "dfd068b01f02653c6650f1c0eda443b2655d1471"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:05 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:05 2011 +0100"
      },
      "message": "dm flakey: add drop_writes\n\nAdd \u0027drop_writes\u0027 option to drop writes silently while the\ndevice is \u0027down\u0027.  Reads are not touched.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "dfd068b01f02653c6650f1c0eda443b2655d1471",
      "tree": "e61e92a4a1e6b4c0170a87453219cabaf66e312a",
      "parents": [
        "30e4171bfe3d1c49689803338005cc0071dddaff"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:05 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:05 2011 +0100"
      },
      "message": "dm flakey: support feature args\n\nAdd the ability to specify arbitrary feature flags when creating a\nflakey target.  This code uses the same target argument helpers that\nthe multipath target does.\n\nAlso remove the superfluous \u0027dm-flakey\u0027 prefixes from the error messages,\nas they already contain the prefix \u0027flakey\u0027.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "30e4171bfe3d1c49689803338005cc0071dddaff",
      "tree": "8ba89dcca8774a94cbd5bb7685a9ea27570d772c",
      "parents": [
        "498f0103ea13123e007660def9072a0b7dd1c599"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:05 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:05 2011 +0100"
      },
      "message": "dm flakey: use dm_target_offset and support discards\n\nUse dm_target_offset() and support discards.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "498f0103ea13123e007660def9072a0b7dd1c599",
      "tree": "3940ca8e50f13c3ed3a79c1939bacbc841ecb179",
      "parents": [
        "a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "message": "dm table: share target argument parsing functions\n\nMove multipath target argument parsing code into dm-table so other\ntargets can share it.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a6e50b409d3f9e0833e69c3c9cca822e8fa4adbb",
      "tree": "82ca807c21156437270e6a1ed255b18ccf8b3672",
      "parents": [
        "d5b9dd04bd74b774b8e8d93ced7a0d15ad403fa9"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "message": "dm snapshot: skip reading origin when overwriting complete chunk\n\nIf we write a full chunk in the snapshot, skip reading the origin device\nbecause the whole chunk will be overwritten anyway.\n\nThis patch changes the snapshot write logic when a full chunk is written.\nIn this case:\n  1. allocate the exception\n  2. dispatch the bio (but don\u0027t report the bio completion to device mapper)\n  3. write the exception record\n  4. report bio completed\n\nCallbacks must be done through the kcopyd thread, because callbacks must not\nrace with each other.  So we create two new functions:\n\n  dm_kcopyd_prepare_callback: allocate a job structure and prepare the callback.\n  (This function must not be called from interrupt context.)\n\n  dm_kcopyd_do_callback: submit callback.\n  (This function may be called from interrupt context.)\n\nPerformance test (on snapshots with 4k chunk size):\n  without the patch:\n    non-direct-io sequential write (dd):    17.7MB/s\n    direct-io sequential write (dd):        20.9MB/s\n    non-direct-io random write (mkfs.ext2): 0.44s\n\n  with the patch:\n    non-direct-io sequential write (dd):    26.5MB/s\n    direct-io sequential write (dd):        33.2MB/s\n    non-direct-io random write (mkfs.ext2): 0.27s\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d5b9dd04bd74b774b8e8d93ced7a0d15ad403fa9",
      "tree": "060512c4c411e4adda203fd721b79b50b0ff54df",
      "parents": [
        "08649012545cfb116798260352547cf4d47064ec"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "message": "dm: ignore merge_bvec for snapshots when safe\n\nAdd a new flag DMF_MERGE_IS_OPTIONAL to struct mapped_device to indicate\nwhether the device can accept bios larger than the size its merge\nfunction returns.  When set, use this to send large bios to snapshots\nwhich can split them if necessary.  Snapshot I/O may be significantly\nfragmented and this approach seems to improve peformance.\n\nBefore the patch, dm_set_device_limits restricted bio size to page size\nif the underlying device had a merge function and the target didn\u0027t\nprovide a merge function.  After the patch, dm_set_device_limits\nrestricts bio size to page size if the underlying device has a merge\nfunction, doesn\u0027t have DMF_MERGE_IS_OPTIONAL flag and the target doesn\u0027t\nprovide a merge function.\n\nThe snapshot target can\u0027t provide a merge function because when the merge\nfunction is called, it is impossible to determine where the bio will be\nremapped.  Previously this led us to impose a 4k limit, which we can\nnow remove if the snapshot store is located on a device without a merge\nfunction.  Together with another patch for optimizing full chunk writes,\nit improves performance from 29MB/s to 40MB/s when writing to the\nfilesystem on snapshot store.\n\nIf the snapshot store is placed on a non-dm device with a merge function\n(such as md-raid), device mapper still limits all bios to page size.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "08649012545cfb116798260352547cf4d47064ec",
      "tree": "8aa7eac4b53a07a9bdcb01ed2da11e250c823187",
      "parents": [
        "3e8dbb7f3966c80d77272f8b4f430babc99f6595"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:04 2011 +0100"
      },
      "message": "dm table: clean dm_get_device and move exports\n\nThere is no need for __table_get_device to be factored out.\nAlso move the exports to the end of their respective functions.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3e8dbb7f3966c80d77272f8b4f430babc99f6595",
      "tree": "00192da87f8e5db890bd5c6dab9c941a905b294e",
      "parents": [
        "2ca4c92f58f9386e080b26f9ccd78c9ca5825a42"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "message": "dm raid: tidy includes\n\nA dm target only needs to use include/linux dm headers.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2ca4c92f58f9386e080b26f9ccd78c9ca5825a42",
      "tree": "638f6e97f829cdf8cfc090dabff9213dc50db149",
      "parents": [
        "13c87583ea4e867211fc3e7edab750c353c47c95"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Aug 02 12:32:03 2011 +0100"
      },
      "message": "dm ioctl: prevent empty message\n\nDetect invalid empty messages in core dm instead of requiring every target to\ncheck this.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ],
  "next": "13c87583ea4e867211fc3e7edab750c353c47c95"
}
