)]}'
{
  "log": [
    {
      "commit": "1176568de7e066c0be9e46c37503b9fd4730edcf",
      "tree": "8af6ab7cd59ef6a615048ef31d922aee76cadd57",
      "parents": [
        "87aa63000c484bfb9909989316f615240dfee018"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 19:44:26 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 21:10:57 2010 +1000"
      },
      "message": "md: restore ability of spare drives to spin down.\n\nSome time ago we stopped the clean/active metadata updates\nfrom being written to a \u0027spare\u0027 device in most cases so that\nit could spin down and say spun down.  Device failure/removal\netc are still recorded on spares.\n\nHowever commit 51d5668cb2e3fd1827a55 broke this 50% of the time,\ndepending on whether the event count is even or odd.\nThe change log entry said:\n\n   This means that the alignment between \u0027odd/even\u0027 and\n    \u0027clean/dirty\u0027 might take a little longer to attain,\n\nhow ever the code makes no attempt to create that alignment, so it\ncould take arbitrarily long.\n\nSo when we find that clean/dirty is not aligned with odd/even,\nforce a second metadata-update immediately.  There are already cases\nwhere a second metadata-update is needed immediately (e.g. when a\ndevice fails during the metadata update).  We just piggy-back on that.\n\nReported-by: Joe Bryant \u003ctenminjoe@yahoo.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "87aa63000c484bfb9909989316f615240dfee018",
      "tree": "ebadeba1c1c03b28e8c2c9036542bd6b75bb9837",
      "parents": [
        "722154e4cacf015161efe60009ae9be23d492296"
      ],
      "author": {
        "name": "Gabriele A. Trombetti",
        "email": "g.trombetti.lkrnl1213@logicschema.com",
        "time": "Wed Apr 28 11:51:17 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri May 07 21:10:35 2010 +1000"
      },
      "message": "md/raid6: Fix raid-6 read-error correction in degraded state\n\nFix: Raid-6 was not trying to correct a read-error when in\nsingly-degraded state and was instead dropping one more device, going to\ndoubly-degraded state. This patch fixes this behaviour.\n\nTested-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: Gabriele A. Trombetti \u003cg.trombetti.lkrnl1213@logicschema.com\u003e\nReported-by: Janos Haar \u003cjanos.haar@netcenter.hu\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "6e3b96ed610e5a1838e62ddae9fa0c3463f235fa",
      "tree": "c0c3f0d3e5f16c04d417160e5bca1d4abf562651",
      "parents": [
        "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Fri Apr 23 07:08:28 2010 +1000"
      },
      "message": "md/raid5: fix previous patch.\n\nPrevious patch changes stripe and chunk_number to sector_t but\nmistakenly did not update all of the divisions to use sector_dev().\n\nThis patch changes all the those divisions (actually the \u0027%\u0027 operator)\nto sector_div.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\nTested-by: Stefan Lippers-Hollmann \u003cs.l-h@gmx.de\u003e\n"
    },
    {
      "commit": "35f2a591192d0a5d9f7fc696869c76f0b8e49c3d",
      "tree": "2b4cdbe2824a936f136fa0eb0dbd2db84927b057",
      "parents": [
        "85341c61361cc45a9cc0e11c01e8f4479ef460ac"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Apr 20 14:13:34 2010 +1000"
      },
      "message": "md/raid5: allow for more than 2^31 chunks.\n\nWith many large drives and small chunk sizes it is possible\nto create a RAID5 with more than 2^31 chunks.  Make sure this\nworks.\n\nReported-by: Brett King \u003cking.br@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "31cc1dd344d941358345bd02f24c629dada9b08c",
      "tree": "9a8cd10e2e633cb83e1c7984adc85f58006dc2ec",
      "parents": [
        "961cde93dee2658000ead32abffb8ddf0727abe0",
        "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:55:24 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:55:24 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://neil.brown.name/md\n\n* \u0027for-linus\u0027 of git://neil.brown.name/md:\n  md: deal with merge_bvec_fn in component devices better.\n"
    },
    {
      "commit": "627a2d3c29427637f4c5d31ccc7fcbd8d312cd71",
      "tree": "f0de68842ca3b47d0152254e60d31cc561009119",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 08 16:44:38 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Mar 16 17:04:24 2010 +1100"
      },
      "message": "md: deal with merge_bvec_fn in component devices better.\n\nIf a component device has a merge_bvec_fn then as we never call it\nwe must ensure we never need to.  Currently this is done by setting\nmax_sector to 1 PAGE, however this does not stop a bio being created\nwith several sub-page iovecs that would violate the merge_bvec_fn.\n\nSo instead set max_segments to 1 and set the segment boundary to the\nsame as a page boundary to ensure there is only ever one single-page\nsegment of IO requested at a time.\n\nThis can particularly be an issue when \u0027xen\u0027 is used as it is\nknown to submit multiple small buffers in a single bio.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "52cf25d0ab7f78eeecc59ac652ed5090f69b619e",
      "tree": "031d1ffb3890bd69c0260c864c512e0be62ac05c",
      "parents": [
        "6c1733aca0b48db4d0e660d54976a1cca25b5eaf"
      ],
      "author": {
        "name": "Emese Revfy",
        "email": "re.emese@gmail.com",
        "time": "Tue Jan 19 02:58:23 2010 +0100"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Sun Mar 07 17:04:49 2010 -0800"
      },
      "message": "Driver core: Constify struct sysfs_ops in struct kobj_type\n\nConstify struct sysfs_ops.\n\nThis is part of the ops structure constification\neffort started by Arjan van de Ven et al.\n\nBenefits of this constification:\n\n * prevents modification of data that is shared\n   (referenced) by many other structure instances\n   at runtime\n\n * detects/prevents accidental (but not intentional)\n   modification attempts on archs that enforce\n   read-only kernel data at runtime\n\n * potentially better optimized code as the compiler\n   can assume that the const data cannot be changed\n\n * the compiler/linker move const data into .rodata\n   and therefore exclude them from false sharing\n\nSigned-off-by: Emese Revfy \u003cre.emese@gmail.com\u003e\nAcked-by: David Teigland \u003cteigland@redhat.com\u003e\nAcked-by: Matt Domsch \u003cMatt_Domsch@dell.com\u003e\nAcked-by: Maciej Sosnowski \u003cmaciej.sosnowski@intel.com\u003e\nAcked-by: Hans J. Koch \u003chjk@linutronix.de\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nAcked-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f070304094edb8d516423e79edd27c97ec2020b0",
      "tree": "0330115839e84c4b5db8e2318a932f2dee78eba4",
      "parents": [
        "924e600d417ead9ef67043988055ba236f114718"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Sat Mar 06 02:32:35 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:35 2010 +0000"
      },
      "message": "dm raid1: fix deadlock when suspending failed device\n\nTo prevent deadlock, bios in the hold list should be flushed before\ndm_rh_stop_recovery() is called in mirror_suspend().\n\nThe recovery can\u0027t start because there are pending bios and therefore\ndm_rh_stop_recovery deadlocks.\n\nWhen there are pending bios in the hold list, the recovery waits for\nthe completion of the bios after recovery_count is acquired.\nThe recovery_count is released when the recovery finished, however,\nthe bios in the hold list are processed after dm_rh_stop_recovery() in\nmirror_presuspend(). dm_rh_stop_recovery() also acquires recovery_count,\nthen deadlock occurs.\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\n"
    },
    {
      "commit": "924e600d417ead9ef67043988055ba236f114718",
      "tree": "338db5dfc0f8fe8f9aa39bd19639ad1f1dc27e46",
      "parents": [
        "3abf85b5b5851b5f28d3d8a920ebb844edd08352"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat Mar 06 02:32:33 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:33 2010 +0000"
      },
      "message": "dm: eliminate some holes data structures\n\nEliminate a 4-byte hole in \u0027struct dm_io_memory\u0027 by moving \u0027offset\u0027 above the\n\u0027ptr\u0027 to which it applies (size reduced from 24 to 16 bytes).  And by\nassociation, 1-4 byte hole is eliminated in \u0027struct dm_io_request\u0027 (size\nreduced from 56 to 48 bytes).\n\nEliminate all 6 4-byte holes and 1 cache-line in \u0027struct dm_snapshot\u0027 (size\nreduced from 392 to 368 bytes).\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3abf85b5b5851b5f28d3d8a920ebb844edd08352",
      "tree": "b59e5c9322cc116b0ce5dc183d3b8286080c6031",
      "parents": [
        "a97f925a32aad2a37971d7bfb657006acf04e42d"
      ],
      "author": {
        "name": "Peter Rajnoha",
        "email": "prajnoha@redhat.com",
        "time": "Sat Mar 06 02:32:31 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:31 2010 +0000"
      },
      "message": "dm ioctl: introduce flag indicating uevent was generated\n\nSet a new DM_UEVENT_GENERATED_FLAG when returning from ioctls to\nindicate that a uevent was actually generated.  This tells the userspace\ncaller that it may need to wait for the event to be processed.\n\nSigned-off-by: Peter Rajnoha \u003cprajnoha@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a97f925a32aad2a37971d7bfb657006acf04e42d",
      "tree": "38c74c60f756dd05611138f864340a31f4fc393f",
      "parents": [
        "8215d6ec5fee1e76545decea2cd73717efb5cb42"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sat Mar 06 02:32:29 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:29 2010 +0000"
      },
      "message": "dm: free dm_io before bio_endio not after\n\nFree the dm_io structure before calling bio_endio() instead of after it,\nto ensure that the io_pool containing it is not referenced after it is\nfreed.\n\nThis partially fixes a problem described here\n  https://www.redhat.com/archives/dm-devel/2010-February/msg00109.html\n\nthread 1:\nbio_endio(bio, io_error);\n/* scheduling happens */\n\t\t\t\t\tthread 2:\n\t\t\t\t\tclose the device\n\t\t\t\t\tremove the device\nthread 1:\nfree_io(md, io);\n\nThread 2, when removing the device, sees non-empty md-\u003eio_pool (because the\nio hasn\u0027t been freed by thread 1 yet) and may crash with BUG in mempool_free.\nThread 1 may also crash, when freeing into a nonexisting mempool.\n\nTo fix this we must make sure that bio_endio() is the last call and\nthe md structure is not accessed afterwards.\n\nThere is another bio_endio in process_barrier, but it is called from the thread\nand the thread is destroyed prior to freeing the mempools, so this call is\nnot affected by the bug.\n\nA similar bug exists with module unloads - the module may be unloaded\nimmediately after bio_endio - but that is more difficult to fix.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8215d6ec5fee1e76545decea2cd73717efb5cb42",
      "tree": "54ed2c995c3b91417def0ad31368e3094f72bd81",
      "parents": [
        "0f3649a9e305ea22eb196a84a2d7520afcaa6060"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@novell.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:27 2010 +0000"
      },
      "message": "dm table: remove unused dm_get_device range parameters\n\nRemove unused parameters(start and len) of dm_get_device()\nand fix the callers.\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0f3649a9e305ea22eb196a84a2d7520afcaa6060",
      "tree": "10e5c845bcb2af0c5d9a7d79b231474983500a60",
      "parents": [
        "ede5ea0b8b815560dc54c712536fdf0b456b6ad0"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Sat Mar 06 02:32:24 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:24 2010 +0000"
      },
      "message": "dm ioctl: only issue uevent on resume if state changed\n\nOnly issue a uevent on a resume if the state of the device changed,\ni.e. if it was suspended and/or its table was replaced.\n\nSigned-off-by: Dave Wysochanski \u003cdwysocha@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ede5ea0b8b815560dc54c712536fdf0b456b6ad0",
      "tree": "6116cf45cdcfc07af4b59884b9ebc167c43f8f0c",
      "parents": [
        "fb61264297ca42a2a132f0433f75ccf7fd304ac6"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Sat Mar 06 02:32:22 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:22 2010 +0000"
      },
      "message": "dm raid1: always return error if all legs fail\n\nIf all mirror legs fail, always return an error instead of holding the\nbio, even if the handle_errors option was set.  At present it is the\nresponsibility of the driver underneath us to deal with retries,\nmultipath etc.\n\nThe patch adds the bio to the failures list instead of holding it\ndirectly.  do_failures tests first if all legs failed and, if so,\nreturns the bio with -EIO.  If any leg is still alive and handle_errors\nis set, do_failures calls hold_bio.\n\nReviewed-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fb61264297ca42a2a132f0433f75ccf7fd304ac6",
      "tree": "e276ffebdb9fa13aa0d4e639c4ff30f9824c5c10",
      "parents": [
        "2bded7bd7e8b12a913b0b58167a48220560e1514"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:32:18 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:18 2010 +0000"
      },
      "message": "dm mpath: refactor pg_init\n\nThis patch pulls the pg_init path activation code out of\nprocess_queued_ios() into a new function.\n\nNo functional change.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "2bded7bd7e8b12a913b0b58167a48220560e1514",
      "tree": "f903c0f06b7b9a3e9fdcc347d00d44fa8290a1d0",
      "parents": [
        "d0259bf0eefc503d3c9c9ccda35033c3dd3aac30"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:32:13 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:32:13 2010 +0000"
      },
      "message": "dm mpath: wait for pg_init completion when suspending\n\nWhen suspending the device we must wait for all I/O to complete, but\npg-init may be still in progress even after flushing the workqueue\nfor kmpath_handlerd in multipath_postsuspend.\n\nThis patch waits for pg-init completion correctly in\nmultipath_postsuspend().\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d0259bf0eefc503d3c9c9ccda35033c3dd3aac30",
      "tree": "8e0a6ebf9e9509875c160369803a2b6dd2abd943",
      "parents": [
        "fce323dd68e13354071538c765b062859e6f8286"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:30:02 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:30:02 2010 +0000"
      },
      "message": "dm mpath: hold io until all pg_inits completed\n\nm-\u003equeue_io is set to block processing I/Os, and it needs to be kept\nwhile pg-init, which issues multiple path activations, is in progress.\nBut m-\u003equeue is cleared when a path activation completes without error\nin pg_init_done(), even while other path activations are in progress.\nThat may cause undesired -EIO on paths which are not complete activation.\n\nThis patch fixes that by not clearing m-\u003equeue_io until all path\nactivations complete.\n\n(Before the hardware handlers were moved into the SCSI layer, pg_init\nonly used one path.)\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fce323dd68e13354071538c765b062859e6f8286",
      "tree": "a6850c35a5d4954a81ef922eeaed2ee4d69e4b89",
      "parents": [
        "c53a381efbe3d0e0629121b3f0d2b62a0e167791"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:29:59 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:59 2010 +0000"
      },
      "message": "dm mpath: avoid storing private suspended state\n\n\u0027suspended\u0027 flag in struct multipath was introduced to check whether\nthe multipath target is in suspended state, but the same check is\ndone through dm_suspended() now, so remove the flag and related code.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ecdb2e257abc33ae6798d3ccba87bdafa40ef6b6",
      "tree": "497db6a95a9f06270506f6a75354d5df855d5a66",
      "parents": [
        "f7b934c8127deebf4eb56fbe4a4ae0da16b6dbcd"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:52 2010 +0000"
      },
      "message": "dm table: remove dm_get from dm_table_get_md\n\nRemove the dm_get() in dm_table_get_md() because dm_table_get_md() could\nbe called from presuspend/postsuspend, which are called while\nmapped_device is in DMF_FREEING state, where dm_get() is not allowed.\n\nJustification for that is the lifetime of both objects: As far as the\ncurrent dm design/implementation, mapped_device is never freed while\ntargets are doing something, because dm core waits for targets to become\nquiet in dm_put() using presuspend/postsuspend.  So targets should be\nable to touch mapped_device without holding reference count of the\nmapped_device, and we should allow targets to touch mapped_device even\nif it is in DMF_FREEING state.\n\nBackgrounds:\nI\u0027m trying to remove the multipath internal queue, since dm core now has\na generic queue for request-based dm.  In the patch-set, the multipath\ntarget wants to request dm core to start/stop queue.  One of such\nstart/stop requests can happen during postsuspend() while the target\nwaits for pg-init to complete, because the target stops queue when\nstarting pg-init and tries to restart it when completing pg-init.  Since\nqueue belongs to mapped_device, it involves calling dm_table_get_md()\nand dm_put().  On the other hand, postsuspend() is called in dm_put()\nfor mapped_device which is in DMF_FREEING state, and that triggers\nBUG_ON(DMF_FREEING) in the 2nd dm_put().\n\nI had tried to solve this problem by changing only multipath not to\ntouch mapped_device which is in DMF_FREEING state, but I couldn\u0027t and I\ncame up with a question why we need dm_get() in dm_table_get_md().\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f7b934c8127deebf4eb56fbe4a4ae0da16b6dbcd",
      "tree": "75e4a78786f3a782142d9d686d53aac9204f5fc1",
      "parents": [
        "83c0d5d5388a8d45f7a45e0ec34adc52a78c81ad"
      ],
      "author": {
        "name": "Moger, Babu",
        "email": "Babu.Moger@lsi.com",
        "time": "Sat Mar 06 02:29:49 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:49 2010 +0000"
      },
      "message": "dm mpath: skip activate_path for failed paths\n\nThis patch adds two minor fixes while processing device mapper path activation.\n\nSkip failed paths while calling activate_path.  If the path is already failed\nthen activate_path will fail for sure. We don\u0027t have to call in that case. In\nsome case this might cause prolonged retries unnecessarily.\n\nChange the misleading message if the path being activated fails with SCSI_DH_NOSYS.\n\nSigned-off-by: Babu Moger \u003cbabu.moger@lsi.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "83c0d5d5388a8d45f7a45e0ec34adc52a78c81ad",
      "tree": "85a59c18293f0c14a547fdd43631b59c21d1136d",
      "parents": [
        "64ba9926759792cf7b95f823402e2781edd1b5d4"
      ],
      "author": {
        "name": "Moger, Babu",
        "email": "Babu.Moger@lsi.com",
        "time": "Sat Mar 06 02:29:45 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Sat Mar 06 02:29:45 2010 +0000"
      },
      "message": "dm mpath: pass struct pgpath to pg init done\n\nThis patch removes some unnecessary argument casting. There is no\nfunctional change with this patch.\n\nPasses \u0027struct pgpath\u0027 through to pg_init_done() instead of the enclosed\n\u0027struct dm_path\u0027.\n\nTested the changes with LSI storage..\n\nCC: Chandra Seetharaman \u003cchandra.seetharaman@us.ibm.com\u003e\nSigned-off-by: Babu Moger \u003cbabu.moger@lsi.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0a135ba14d71fb84c691a5386aff5049691fe6d7",
      "tree": "adb1de887dd6839d69d2fc16ffa2a10ff63298fa",
      "parents": [
        "4850f524b2c4c8a4e9f8ef4dd9c7c4afde2f2b2c",
        "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: add __percpu sparse annotations to what\u0027s left\n  percpu: add __percpu sparse annotations to fs\n  percpu: add __percpu sparse annotations to core kernel subsystems\n  local_t: Remove leftover local.h\n  this_cpu: Remove pageset_notifier\n  this_cpu: Page allocator conversion\n  percpu, x86: Generic inc / dec percpu instructions\n  local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c\n  module: Use this_cpu_xx to dynamically allocate counters\n  local_t: Remove cpu_local_xx macros\n  percpu: refactor the code in pcpu_[de]populate_chunk()\n  percpu: remove compile warnings caused by __verify_pcpu_ptr()\n  percpu: make accessors check for percpu pointer in sparse\n  percpu: add __percpu for sparse.\n  percpu: make access macros universal\n  percpu: remove per_cpu__ prefix.\n"
    },
    {
      "commit": "8a78362c4eefc1deddbefe2c7f38aabbc2429d6b",
      "tree": "c095d95af1aec0f9cee5975b1dcdc6bc1d17d401",
      "parents": [
        "086fa5ff0854c676ec333760f4c0154b3b242616"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:39 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Consolidate phys_segment and hw_segment limits\n\nExcept for SCSI no device drivers distinguish between physical and\nhardware segment limits.  Consolidate the two into a single segment\nlimit.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "086fa5ff0854c676ec333760f4c0154b3b242616",
      "tree": "ee63fb3c7c7d964bd799355b7cde18ba95f91f07",
      "parents": [
        "eb28d31bc97e6374d81f404da309401ffaed467b"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Fri Feb 26 00:20:38 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri Feb 26 13:58:08 2010 +0100"
      },
      "message": "block: Rename blk_queue_max_sectors to blk_queue_max_hw_sectors\n\nThe block layer calling convention is blk_queue_\u003climit name\u003e.\nblk_queue_max_sectors predates this practice, leading to some confusion.\nRename the function to appropriately reflect that its intended use is to\nset max_hw_sectors.\n\nAlso introduce a temporary wrapper for backwards compability.  This can\nbe removed after the merge window is closed.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18",
      "tree": "5a714679aeebd5f7af5d1fc521f0db8639324f6c",
      "parents": [
        "003cb608a2533d0927a83bc4e07e46d7a622eda9"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Feb 02 14:39:15 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 17 11:17:38 2010 +0900"
      },
      "message": "percpu: add __percpu sparse annotations to what\u0027s left\n\nAdd __percpu sparse annotations to places which didn\u0027t make it in one\nof the previous patches.  All converions are trivial.\n\nThese annotations are to make sparse consider percpu variables to be\nin a different address space and warn if accessed without going\nthrough percpu accessors.  This patch doesn\u0027t affect normal builds.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Borislav Petkov \u003cborislav.petkov@amd.com\u003e\nCc: Dan Williams \u003cdan.j.williams@intel.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Len Brown \u003clenb@kernel.org\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9307f6b19ac4f5887552b5b2992f391b866f7633",
      "tree": "bad439cf03f6e2b7aecb4fa78d6098feea443dd5",
      "parents": [
        "9eef87da2a8ea4920e0d913ff977cac064b68ee0"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:43:04 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:43:04 2010 +0000"
      },
      "message": "dm: sysfs revert add empty release function to avoid debug warning\n\nRevert commit d2bb7df8cac647b92f51fb84ae735771e7adbfa7 at Greg\u0027s request.\n\n    Author: Milan Broz \u003cmbroz@redhat.com\u003e\n    Date:   Thu Dec 10 23:51:53 2009 +0000\n\n    dm: sysfs add empty release function to avoid debug warning\n\n    This patch just removes an unnecessary warning:\n     kobject: \u0027dm\u0027: does not have a release() function,\n     it is broken and must be fixed.\n\n    The kobject is embedded in mapped device struct, so\n    code does not need to release memory explicitly here.\n\nCc: Greg KH \u003cgregkh@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9eef87da2a8ea4920e0d913ff977cac064b68ee0",
      "tree": "811eb358ce2fa66517b0cf59501522c17dfbe6bc",
      "parents": [
        "558569aa9d83e016295bac77d900342908d7fd85"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Tue Feb 16 18:43:01 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:43:01 2010 +0000"
      },
      "message": "dm mpath: fix stall when requeueing io\n\nThis patch fixes the problem that system may stall if target\u0027s -\u003emap_rq\nreturns DM_MAPIO_REQUEUE in map_request().\nE.g. stall happens on 1 CPU box when a dm-mpath device with queue_if_no_path\n     bounces between all-paths-down and paths-up on I/O load.\n\nWhen target\u0027s -\u003emap_rq returns DM_MAPIO_REQUEUE, map_request() requeues\nthe request and returns to dm_request_fn().  Then, dm_request_fn()\ndoesn\u0027t exit the I/O dispatching loop and continues processing\nthe requeued request again.\nThis map and requeue loop can be done with interrupt disabled,\nso 1 CPU system can be stalled if this situation happens.\n\nFor example, commands below can stall my 1 CPU box within 1 minute or so:\n  # dmsetup table mp\n  mp: 0 2097152 multipath 1 queue_if_no_path 0 1 1 service-time 0 1 2 8:144 1 1\n  # while true; do dd if\u003d/dev/mapper/mp of\u003d/dev/null bs\u003d1M count\u003d100; done \u0026\n  # while true; do \\\n  \u003e dmsetup message mp 0 \"fail_path 8:144\" \\\n  \u003e dmsetup suspend --noflush mp \\\n  \u003e dmsetup resume mp \\\n  \u003e dmsetup message mp 0 \"reinstate_path 8:144\" \\\n  \u003e done\n\nTo fix the problem above, this patch changes dm_request_fn() to exit\nthe I/O dispatching loop once if a request is requeued in map_request().\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "558569aa9d83e016295bac77d900342908d7fd85",
      "tree": "fb8f887855462b23629c9955229ac714cbf77d0d",
      "parents": [
        "5528d17de1cf1462f285c40ccaf8e0d0e4c64dc0"
      ],
      "author": {
        "name": "Takahiro Yasui",
        "email": "tyasui@redhat.com",
        "time": "Tue Feb 16 18:42:58 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:58 2010 +0000"
      },
      "message": "dm raid1: fix null pointer dereference in suspend\n\nWhen suspending a failed mirror, bios are completed by mirror_end_io() and\n__rh_lookup() in dm_rh_dec() returns NULL where a non-NULL return value is\nrequired by design.  Fix this by not changing the state of the recovery failed\nregion from DM_RH_RECOVERING to DM_RH_NOSYNC in dm_rh_recovery_end().\n\nIssue\n\nOn 2.6.33-rc1 kernel, I hit the bug when I suspended the failed\nmirror by dmsetup command.\n\nBUG: unable to handle kernel NULL pointer dereference at 00000020\nIP: [\u003cf94f38e2\u003e] dm_rh_dec+0x35/0xa1 [dm_region_hash]\n...\nEIP: 0060:[\u003cf94f38e2\u003e] EFLAGS: 00010046 CPU: 0\nEIP is at dm_rh_dec+0x35/0xa1 [dm_region_hash]\nEAX: 00000286 EBX: 00000000 ECX: 00000286 EDX: 00000000\nESI: eff79eac EDI: eff79e80 EBP: f6915cd4 ESP: f6915cc4\n DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068\nProcess dmsetup (pid: 2849, ti\u003df6914000 task\u003deff03e80 task.ti\u003df6914000)\n ...\nCall Trace:\n [\u003cf9530af6\u003e] ? mirror_end_io+0x53/0x1b1 [dm_mirror]\n [\u003cf9413104\u003e] ? clone_endio+0x4d/0xa2 [dm_mod]\n [\u003cf9530aa3\u003e] ? mirror_end_io+0x0/0x1b1 [dm_mirror]\n [\u003cf94130b7\u003e] ? clone_endio+0x0/0xa2 [dm_mod]\n [\u003cc02d6bcb\u003e] ? bio_endio+0x28/0x2b\n [\u003cf952f303\u003e] ? hold_bio+0x2d/0x62 [dm_mirror]\n [\u003cf952f942\u003e] ? mirror_presuspend+0xeb/0xf7 [dm_mirror]\n [\u003cc02aa3e2\u003e] ? vmap_page_range+0xb/0xd\n [\u003cf9414c8d\u003e] ? suspend_targets+0x2d/0x3b [dm_mod]\n [\u003cf9414ca9\u003e] ? dm_table_presuspend_targets+0xe/0x10 [dm_mod]\n [\u003cf941456f\u003e] ? dm_suspend+0x4d/0x150 [dm_mod]\n [\u003cf941767d\u003e] ? dev_suspend+0x55/0x18a [dm_mod]\n [\u003cc0343762\u003e] ? _copy_from_user+0x42/0x56\n [\u003cf9417fb0\u003e] ? dm_ctl_ioctl+0x22c/0x281 [dm_mod]\n [\u003cf9417628\u003e] ? dev_suspend+0x0/0x18a [dm_mod]\n [\u003cf9417d84\u003e] ? dm_ctl_ioctl+0x0/0x281 [dm_mod]\n [\u003cc02c3c4b\u003e] ? vfs_ioctl+0x22/0x85\n [\u003cc02c422c\u003e] ? do_vfs_ioctl+0x4cb/0x516\n [\u003cc02c42b7\u003e] ? sys_ioctl+0x40/0x5a\n [\u003cc0202858\u003e] ? sysenter_do_call+0x12/0x28\n\nAnalysis\n\nWhen recovery process of a region failed, dm_rh_recovery_end() function\nchanges the state of the region from RM_RH_RECOVERING to DM_RH_NOSYNC.\nWhen recovery_complete() is executed between dm_rh_update_states() and\ndm_writes() in do_mirror(), bios are processed with the region state,\nDM_RH_NOSYNC. However, the region data is freed without checking its\npending count when dm_rh_update_states() is called next time.\n\nWhen bios are finished by mirror_end_io(), __rh_lookup() in dm_rh_dec()\nreturns NULL even though a valid return value are expected.\n\nSolution\n\nRemove the state change of the recovery failed region from DM_RH_RECOVERING\nto DM_RH_NOSYNC in dm_rh_recovery_end(). We can remove the state change\nbecause:\n\n  - If the region data has been released by dm_rh_update_states(),\n    a new region data is created with the state of DM_RH_NOSYNC, and\n    bios are processed according to the DM_RH_NOSYNC state.\n\n  - If the region data has not been released by dm_rh_update_states(),\n    a state of the region is DM_RH_RECOVERING and bios are put in the\n    delayed_bio list.\n\nThe flag change from DM_RH_RECOVERING to DM_RH_NOSYNC in dm_rh_recovery_end()\nwas added in the following commit:\n  dm raid1: handle resync failures\n  author  Jonathan Brassow \u003cjbrassow@redhat.com\u003e\n    Thu, 12 Jul 2007 16:29:04 +0000 (17:29 +0100)\n  http://git.kernel.org/linus/f44db678edcc6f4c2779ac43f63f0b9dfa28b724\n\nSigned-off-by: Takahiro Yasui \u003ctyasui@redhat.com\u003e\nReviewed-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "5528d17de1cf1462f285c40ccaf8e0d0e4c64dc0",
      "tree": "11c754019431e7561a629fb7d0b4378ef96b8e15",
      "parents": [
        "ebfd32bba9b518d684009d9d21a56742337ca1b3"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Tue Feb 16 18:42:55 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:55 2010 +0000"
      },
      "message": "dm raid1: fail writes if errors are not handled and log fails\n\nIf the mirror log fails when the handle_errors option was not selected\nand there is no remaining valid mirror leg, writes return success even\nthough they weren\u0027t actually written to any device.  This patch\ncompletes them with EIO instead.\n\nThis code path is taken:\ndo_writes:\n\tbio_list_merge(\u0026ms-\u003efailures, \u0026sync);\ndo_failures:\n\tif (!get_valid_mirror(ms)) (false)\n\telse if (errors_handled(ms)) (false)\n\telse bio_endio(bio, 0);\n\nThe logic in do_failures is based on presuming that the write was already\ntried: if it succeeded at least on one leg (without handle_errors) it\nis reported as success.\n\nReference: https://bugzilla.redhat.com/show_bug.cgi?id\u003d555197\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ebfd32bba9b518d684009d9d21a56742337ca1b3",
      "tree": "317e2c6b14657d7d7c792daf149377ca83afb444",
      "parents": [
        "55f67f2dedec1e3049abc30b6d82b999a14cafb7"
      ],
      "author": {
        "name": "Jonathan Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Tue Feb 16 18:42:53 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:53 2010 +0000"
      },
      "message": "dm log: userspace fix overhead_size calcuations\n\nThis patch fixes two bugs that revolve around the miscalculation and\nmisuse of the variable \u0027overhead_size\u0027.  \u0027overhead_size\u0027 is the size of\nthe various header structures used during communication.\n\nThe first bug is the use of \u0027sizeof\u0027 with the pointer of a structure\ninstead of the structure itself - resulting in the wrong size being\ncomputed.  This is then used in a check to see if the payload\n(data_size) would be to large for the preallocated structure.  Since the\nbug produces a smaller value for the overhead, it was possible for the\nstructure to be breached.  (Although the current users of the code do\nnot currently send enough data to trigger this bug.)\n\nThe second bug is that the \u0027overhead_size\u0027 value is used to compute how\nmuch of the preallocated space should be cleared before populating it\nwith fresh data.  This should have simply been \u0027sizeof(struct cn_msg)\u0027\nnot overhead_size.  The fact that \u0027overhead_size\u0027 was computed\nincorrectly made this problem \"less bad\" - leaving only a pointer\u0027s\nworth of space at the end uncleared.  Thus, this bug was never producing\na bad result, but still needs to be fixed - especially now that the\nvalue is computed correctly.\n\nCc: stable@kernel.org\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "55f67f2dedec1e3049abc30b6d82b999a14cafb7",
      "tree": "33c39276f5b185c9ec9fefa296f344675241f98a",
      "parents": [
        "781248c1b50c776a9ef4be1130f84ced1cba42fe"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Tue Feb 16 18:42:51 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:51 2010 +0000"
      },
      "message": "dm snapshot: persistent annotate work_queue as on stack\n\nchunk_io() declares its \u0027struct mdata_req\u0027 on the stack and then\ninitializes its \u0027struct work_struct\u0027 member.  Annotate the\ninitialization of this workqueue with INIT_WORK_ON_STACK to suppress a\ndebugobjects warning seen when CONFIG_DEBUG_OBJECTS_WORK is enabled.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "781248c1b50c776a9ef4be1130f84ced1cba42fe",
      "tree": "aa102797cde7b10623eefbeee493c36fdf2bdfe3",
      "parents": [
        "0813e22d4e0d618eac9b47bec942bf856adca4c5"
      ],
      "author": {
        "name": "Nikanth Karthikesan",
        "email": "knikanth@suse.de",
        "time": "Tue Feb 16 18:42:47 2010 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Tue Feb 16 18:42:47 2010 +0000"
      },
      "message": "dm stripe: avoid divide by zero with invalid stripe count\n\nIf a table containing zero as stripe count is passed into stripe_ctr\nthe code attempts to divide by zero.\n\nThis patch changes DM_TABLE_LOAD to return -EINVAL if the stripe count\nis zero.\n\nWe now get the following error messages:\n  device-mapper: table: 253:0: striped: Invalid stripe count\n  device-mapper: ioctl: error adding target to table\n\nSigned-off-by: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: stable@kernel.org\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "ef286f6fa673cd7fb367e1b145069d8dbfcc6081",
      "tree": "957760503c1b1a417850db3204d6c010d1ce1a67",
      "parents": [
        "9eb07c259207d048e3ee8be2a77b2a4680b1edd4"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:14 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Feb 10 11:26:09 2010 +1100"
      },
      "message": "md: fix some lockdep issues between md and sysfs.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\nThis fix is related to\n    http://bugzilla.kernel.org/show_bug.cgi?id\u003d15142\nbut does not address that exact issue.\n\u003d\u003d\u003d\u003d\u003d\u003d\n\nsysfs does like attributes being removed while they are being accessed\n(i.e. read or written) and waits for the access to complete.\n\nAs accessing some md attributes takes the same lock that is held while\nremoving those attributes a deadlock can occur.\n\nThis patch addresses 3 issues in md that could lead to this deadlock.\n\nTwo relate to calling flush_scheduled_work while the lock is held.\nThis is probably a bad idea in general and as we use schedule_work to\ndelete various sysfs objects it is particularly bad.\n\nIn one case flush_scheduled_work is called from md_alloc (called by\nmd_probe) called from do_md_run which holds the lock.  This call is\nonly present to ensure that -\u003egendisk is set.  However we can be sure\nthat gendisk is always set (though possibly we couldn\u0027t when that code\nwas originally written.  This is because do_md_run is called in three\ndifferent contexts:\n  1/ from md_ioctl.  This requires that md_open has succeeded, and it\n     fails if -\u003egendisk is not set.\n  2/ from writing a sysfs attribute.  This can only happen if the\n     mddev has been registered in sysfs which happens in md_alloc\n     after -\u003egendisk has been set.\n  3/ from autorun_array which is only called by autorun_devices, which\n     checks for -\u003egendisk to be set before calling autorun_array.\nSo the call to md_probe in do_md_run can be removed, and the check on\n-\u003egendisk can also go.\n\n\nIn the other case flush_scheduled_work is being called in do_md_stop,\npurportedly to wait for all md_delayed_delete calls (which delete the\ncomponent rdevs) to complete.  However there really isn\u0027t any need to\nwait for them - they have already been disconnected in all important\nways.\n\nThe third issue is that raid5-\u003estop() removes some attribute names\nwhile the lock is held.  There is already some infrastructure in place\nto delay attribute removal until after the lock is released (using\nschedule_work).  So extend that infrastructure to remove the\nraid5_attrs_group.\n\nThis does not address all lockdep issues related to the sysfs\n\"s_active\" lock.  The rest can be address by splitting that lockdep\ncontext between symlinks and non-symlinks which hopefully will happen.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9eb07c259207d048e3ee8be2a77b2a4680b1edd4",
      "tree": "aad711b891fd43920c832da2158aab0764c7fe49",
      "parents": [
        "6339204ecc2aa2067a99595522de0403f0854bb8"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 12:31:47 2010 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Tue Feb 09 16:34:29 2010 +1100"
      },
      "message": "md: fix \u0027degraded\u0027 calculation when starting a reshape.\n\nThis code was written long ago when it was not possible to\nreshape a degraded array.  Now it is so the current level of\ndegraded-ness needs to be taken in to account.  Also newly addded\ndevices should only reduce degradedness if they are deemed to be\nin-sync.\n\nIn particular, if you convert a RAID5 to a RAID6, and increase the\nnumber of devices at the same time, then the 5-\u003e6 conversion will\nmake the array degraded so the current code will produce a wrong\nvalue for \u0027degraded\u0027 - \"-1\" to be precise.\n\nIf the reshape runs to completion end_reshape will calculate a correct\nnew value for \u0027degraded\u0027, but if a device fails during the reshape an\nincorrect decision might be made based on the incorrect value of\n\"degraded\".\n\nThis patch is suitable for 2.6.32-stable and if they are still open,\n2.6.31-stable and 2.6.30-stable as well.\n\nCc: stable@kernel.org\nReported-by: Michael Evans \u003cmjevans1983@gmail.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "b27d7f16d3c6c27345d4280a739809c1c2c4c0b5",
      "tree": "cb2947bf2c466616dad6a160a9efb47208432d96",
      "parents": [
        "17be8c245054b9c7786545af3ba3ca4e54cd4ad9"
      ],
      "author": {
        "name": "Martin K. Petersen",
        "email": "martin.petersen@oracle.com",
        "time": "Mon Jan 11 03:21:50 2010 -0500"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Mon Jan 11 14:29:20 2010 +0100"
      },
      "message": "DM: Fix device mapper topology stacking\n\nMake DM use bdev_stack_limits() function so that partition offsets get\ntaken into account when calculating alignment.  Clarify stacking\nwarnings.\n\nAlso remove obsolete clearing of final alignment_offset and misalignment\nflag.\n\nSigned-off-by: Martin K. Petersen \u003cmartin.petersen@oracle.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nCc: Alasdair G. Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "404e4b43fdd6daa7b4a9f81bc7e4358281d763fa",
      "tree": "7a013e233db56b7c90cf0857d6c3bc74c19cf07f",
      "parents": [
        "7fb9dadc91948ddd16d1d32e414b5e71ec63b97b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:25:23 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:25:23 2009 +1100"
      },
      "message": "md: allow a resync that is waiting for other resync to complete, to be aborted.\n\nIf two arrays share a device, then they will not both resync at the\nsame time.  One will wait for the other to complete.\nWhile waiting, the MD_RECOVERY_INTR flag is not checked so a device\nfailure, which would make the resync pointless, does not cause the\nresync to abort, so the failed device cannot be removed (as it cannot\nbe remove while a resync is happening).\n\nSo add a test for MD_RECOVERY_INTR.\n\nReported-by: Brett Russ \u003cbruss@netezza.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7fb9dadc91948ddd16d1d32e414b5e71ec63b97b",
      "tree": "d64379c9b336a2792f1877383bdcdd92e837070b",
      "parents": [
        "a2d79c324ac0c26ae9995a312a7731067a7f01fc"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:19:08 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:43 2009 +1100"
      },
      "message": "md: remove unnecessary code from do_md_run\n\nSince commit dfc7064500061677720fa26352963c772d3ebe6b,\n-\u003ehot_remove_disks has not removed non-failed devices from\nan array until recovery is no longer possible.\nSo the code in do_md_run to get around the fact that\nmd_check_recovery (which calls -\u003ehot_remove_disks) would\nremove partially-in-sync devices is no longer needed.\n\nSo remove it.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2d79c324ac0c26ae9995a312a7731067a7f01fc",
      "tree": "bf9418f4fe8ab86eaf5519be6f1beb363dc64bda",
      "parents": [
        "0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Mon Dec 21 18:18:36 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:31 2009 +1100"
      },
      "message": "md: make recovery started by do_md_run() visible via sync_action\n\nBy default md_do_sync() will perform recovery if no other actions are\nspecified.  However, action_show() relies on MD_RECOVERY_RECOVER to be\nset otherwise it returns \u0027idle\u0027.  So, add a missing set\nMD_RECOVERY_RECOVER when starting recovery.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0f9552b5dc4fe10da37fa3f4a4ca185d90fa41c9",
      "tree": "14f29af551fc226dc4451f1089d4f08dc2611c0d",
      "parents": [
        "cbd1998377504df005302ac90d49db72a48552a6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:50 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 15:20:12 2009 +1100"
      },
      "message": "md: fix small irregularity with start_ro module parameter\n\nThe start_ro modules parameter can be used to force arrays to be\nstarted in \u0027auto-readonly\u0027 in which they are read-only until the first\nwrite.  This ensures that no resync/recovery happens until something\nelse writes to the device.  This is important for resume-from-disk\noff an md array.\n\nHowever if an array is started \u0027readonly\u0027 (by writing \u0027readonly\u0027 to\nthe \u0027array_state\u0027 sysfs attribute) we want it to be really \u0027readonly\u0027,\nnot \u0027auto-readonly\u0027.\n\nSo strengthen the condition to only set auto-readonly if the\narray is not already read-only.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "cbd1998377504df005302ac90d49db72a48552a6",
      "tree": "f5c0d83ebe8534477bd252204da804640fd5413b",
      "parents": [
        "6b7b284958d47b77d06745b36bc7f36dab769d9b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Wed Dec 30 12:08:49 2009 +1100"
      },
      "message": "md: Fix unfortunate interaction with evms\n\nevms configures md arrays by:\n  open device\n  send ioctl\n  close device\n\nfor each different ioctl needed.\nSince 2.6.29, the device can disappear after the \u0027close\u0027\nunless a significant configuration has happened to the device.\nThe change made by \"SET_ARRAY_INFO\" can too minor to stop the device\nfrom disappearing, but important enough that losing the change is bad.\n\nSo: make sure SET_ARRAY_INFO sets mddev-\u003ectime, and keep the device\nactive as long as ctime is non-zero (it gets zeroed with lots of other\nthings when the array is stopped).\n\nThis is suitable for -stable kernels since 2.6.29.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org"
    },
    {
      "commit": "53365383c4667aba55385cd1858582c19a7a8a36",
      "tree": "b290d003534b3947834762c2fb492d9d0beb985f",
      "parents": [
        "51b736b85155a56543fda8aeca5f8592795d7983",
        "d2fdb776e08d4231d7e86a879cc663a93913c202"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:12:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 09:12:01 2009 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: (80 commits)\n  dm snapshot: use merge origin if snapshot invalid\n  dm snapshot: report merge failure in status\n  dm snapshot: merge consecutive chunks together\n  dm snapshot: trigger exceptions in remaining snapshots during merge\n  dm snapshot: delay merging a chunk until writes to it complete\n  dm snapshot: queue writes to chunks being merged\n  dm snapshot: add merging\n  dm snapshot: permit only one merge at once\n  dm snapshot: support barriers in snapshot merge target\n  dm snapshot: avoid allocating exceptions in merge\n  dm snapshot: rework writing to origin\n  dm snapshot: add merge target\n  dm exception store: add merge specific methods\n  dm snapshot: create function for chunk_is_tracked wait\n  dm snapshot: make bio optional in __origin_write\n  dm mpath: reject messages when device is suspended\n  dm: export suspended state to targets\n  dm: rename dm_suspended to dm_suspended_md\n  dm: swap target postsuspend call and setting suspended flag\n  dm crypt: add plain64 iv\n  ...\n"
    },
    {
      "commit": "7b75c2f8cf6d938b571d3bc3f566f883ab7472c4",
      "tree": "480a924c730a56dfb06a0bec92b63e9086aa8287",
      "parents": [
        "bc058f65e8c7d83c139692e1c26513d3187dd744"
      ],
      "author": {
        "name": "Joe Perches",
        "email": "joe@perches.com",
        "time": "Mon Dec 14 18:01:12 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:33 2009 -0800"
      },
      "message": "drivers/md/md.c: use %pU to print UUIDs\n\nSigned-off-by: Joe Perches \u003cjoe@perches.com\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "e7d2860b690d4f3bed6824757c540579638e3d1e",
      "tree": "84268ee28893256fd6a6a7e1d4474f61dbee74e7",
      "parents": [
        "84c95c9acf088c99d8793d78036b67faa5d0b851"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Mon Dec 14 18:01:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 15 08:53:32 2009 -0800"
      },
      "message": "tree-wide: convert open calls to remove spaces to skip_spaces() lib function\n\nMakes use of skip_spaces() defined in lib/string.c for removing leading\nspaces from strings all over the tree.\n\nIt decreases lib.a code size by 47 bytes and reuses the function tree-wide:\n   text    data     bss     dec     hex filename\n  64688     584     592   65864   10148 (TOTALS-BEFORE)\n  64641     584     592   65817   10119 (TOTALS-AFTER)\n\nAlso, while at it, if we see (*str \u0026\u0026 isspace(*str)), we can be sure to\nremove the first condition (*str) as the second one (isspace(*str)) also\nevaluates to 0 whenever *str \u003d\u003d 0, making it redundant. In other words,\n\"a char equals zero is never a space\".\n\nJulia Lawall tried the semantic patch (http://coccinelle.lip6.fr) below,\nand found occurrences of this pattern on 3 more files:\n    drivers/leds/led-class.c\n    drivers/leds/ledtrig-timer.c\n    drivers/video/output.c\n\n@@\nexpression str;\n@@\n\n( // ignore skip_spaces cases\nwhile (*str \u0026\u0026  isspace(*str)) { \\(str++;\\|++str;\\) }\n|\n- *str \u0026\u0026\nisspace(*str)\n)\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Jeff Dike \u003cjdike@addtoit.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: \"H. Peter Anvin\" \u003chpa@zytor.com\u003e\nCc: Richard Purdie \u003crpurdie@rpsys.net\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Henrique de Moraes Holschuh \u003chmh@hmh.eng.br\u003e\nCc: David Howells \u003cdhowells@redhat.com\u003e\nCc: \u003clinux-ext4@vger.kernel.org\u003e\nCc: Samuel Ortiz \u003csamuel@sortiz.org\u003e\nCc: Patrick McHardy \u003ckaber@trash.net\u003e\nCc: Takashi Iwai \u003ctiwai@suse.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "06e3c817b750c131a20e82eed57a17841ea88ed2",
      "tree": "55da529f662c29da5b5fd202b5ece9fb907aa431",
      "parents": [
        "4e59ca7da05f0d5d3ad40365c502c8b0fd24c7e3"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Dec 12 21:17:12 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:58:57 2009 +1100"
      },
      "message": "md: add \u0027recovery_start\u0027 per-device sysfs attribute\n\nEnable external metadata arrays to manage rebuild checkpointing via a\nmd/dev-XXX/recovery_start attribute which reflects rdev-\u003erecovery_offset\n\nAlso update resync_start_store to allow \u0027none\u0027 to be written, for\nconsistency.\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e"
    },
    {
      "commit": "4e59ca7da05f0d5d3ad40365c502c8b0fd24c7e3",
      "tree": "d5ddc749ec13db16c1ed7a054546c2ea482c0e1e",
      "parents": [
        "93be75ffde6dfd1ad17cc3ff1dbd135bd711baf4"
      ],
      "author": {
        "name": "Dan Williams",
        "email": "dan.j.williams@intel.com",
        "time": "Sat Dec 12 21:17:06 2009 -0700"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:57:43 2009 +1100"
      },
      "message": "md: rcu_read_lock() walk of mddev-\u003edisks in md_do_sync()\n\nOther walks of this list are either under rcu_read_lock() or the list\nmutation lock (mddev_lock()).  This protects against the improbable case of a\ndisk being removed from the array at the start of md_do_sync().\n\nSigned-off-by: Dan Williams \u003cdan.j.williams@intel.com\u003e\n"
    },
    {
      "commit": "93be75ffde6dfd1ad17cc3ff1dbd135bd711baf4",
      "tree": "56006efccad176da1b806978faf60d77c817e6ac",
      "parents": [
        "aa98aa31987ad9831711ae71ea2270228ab62532"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:50:06 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: integrate spares into array at earliest opportunity.\n\nAs v1.x metadata can record that a member of the array is\nnot completely recovered, it make sense to record that a\nspare has become a regular member of the array at the earliest\nopportunity.\nSo remove the tests on \"recovery_offset \u003e 0\" in super_1_sync\nas they really aren\u0027t needed, and schedule a metadata update\nimmediately after adding spares to a degraded array.\n\nThis means that if a crash happens immediately after a recovery\nstarts, the new device will be included in the array and recovery will\ncontinue from wherever it was up to.  Previously this didn\u0027t happen\nunless recovery was at least 1/16 of the way through.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aa98aa31987ad9831711ae71ea2270228ab62532",
      "tree": "736036691f07fe4b7d18064aaa0ace5d76b73cf6",
      "parents": [
        "93bd89a6d5f268acbdb8d775e40d3a280b07b5bd"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Mon Dec 14 12:50:05 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: move compat_ioctl handling into md.c\n\nThe RAID ioctls are only implemented in md.c, so the\nhandling for them should also be moved there from\nfs/compat_ioctl.c.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Neil Brown \u003cneilb@suse.de\u003e\nCc: Andre Noll \u003cmaan@systemlinux.org\u003e\nCc: linux-raid@vger.kernel.org\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "93bd89a6d5f268acbdb8d775e40d3a280b07b5bd",
      "tree": "64fba42505d5d95457032dd70e9a6beb9b6f0845",
      "parents": [
        "0efb9e6191e1d3d34c1db90b829b742bc36d532e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:59 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: revise Kconfig help for MD_MULTIPATH\n\nMake it clear in the config message that MD_MULTIPATH is not under\nactive development.\n\nCc: Oren Held \u003corenhe@il.ibm.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "0efb9e6191e1d3d34c1db90b829b742bc36d532e",
      "tree": "5960d97df87a7eeea56d7dbe801259fc43398d5e",
      "parents": [
        "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: add MODULE_DESCRIPTION for all md related modules.\n\nSuggested by  Oren Held \u003corenhe@il.ibm.com\u003e\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1e50915fe0bbf7a46db0fa7e1e604d3fc95f057d",
      "tree": "7a722ad6f56c61a6173493f1cd44d809c8b1bd8d",
      "parents": [
        "67b8dc4b06b0e97df55fd76e209f34f9a52e820e"
      ],
      "author": {
        "name": "Robert Becker",
        "email": "Rob.Becker@riverbed.com",
        "time": "Mon Dec 14 12:49:58 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "raid: improve MD/raid10 handling of correctable read errors.\n\nWe\u0027ve noticed severe lasting performance degradation of our raid\narrays when we have drives that yield large amounts of media errors.\nThe raid10 module will queue each failed read for retry, and also\nwill attempt call fix_read_error() to perform the read recovery.\nRead recovery is performed while the array is frozen, so repeated\nrecovery attempts can degrade the performance of the array for\nextended periods of time.\n\nWith this patch I propose adding a per md device max number of\ncorrected read attempts.  Each rdev will maintain a count of\nread correction attempts in the rdev-\u003eread_errors field (not\nused currently for raid10). When we enter fix_read_error()\nwe\u0027ll check to see when the last read error occurred, and\ndivide the read error count by 2 for every hour since the\nlast read error. If at that point our read error count\nexceeds the read error threshold, we\u0027ll fail the raid device.\n\nIn addition in this patch I add sysfs nodes (get/set) for\nthe per md max_read_errors attribute, the rdev-\u003eread_errors\nattribute, and added some printk\u0027s to indicate when\nfix_read_error fails to repair an rdev.\n\nFor testing I used debugfs-\u003efail_make_request to inject\nIO errors to the rdev while doing IO to the raid array.\n\nSigned-off-by: Robert Becker \u003cRob.Becker@riverbed.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "67b8dc4b06b0e97df55fd76e209f34f9a52e820e",
      "tree": "c205f668bbe9752af1c140009200aef2019fed39",
      "parents": [
        "ffa23322b1596bb1a115e767d4251b62842adc23"
      ],
      "author": {
        "name": "Robert Becker",
        "email": "Rob.Becker@riverbed.com",
        "time": "Mon Dec 14 12:49:57 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md/raid10: print more useful messages on device failure.\n\nWhen we get a read error on a device in a RAID10, and attempting to\nrepair the error fails, print more useful messages about why it\nfailed.\n\nSigned-off-by: Robert Becker \u003cRob.Becker@riverbed.com\u003e\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ffa23322b1596bb1a115e767d4251b62842adc23",
      "tree": "137daf8289ae910b3c6eb4b38de98cc957f60233",
      "parents": [
        "ece5cff0da9e696c360fff592cb5f51b6419e4d6"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md/bitmap: update dirty flag when bitmap bits are explicitly set.\n\nThere is a sysfs file which allows bits in the write-intent\nbitmap to be explicit set - indicating that the block is thought\nto be \u0027dirty\u0027.\nWhen this happens we should really set recovery_cp backwards\nto include the block to reflect this dirtiness.\n\nIn particular, a \u0027resync\u0027 process will refuse to start if\nrecovery_cp is beyond the end of the array, so this is needed\nto allow a resync to be triggered.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "ece5cff0da9e696c360fff592cb5f51b6419e4d6",
      "tree": "1c5cab0e89ae466be9edb476ceb91e5c898fafa6",
      "parents": [
        "624ce4f5658fa3e0303c1217bba2706142fe7568"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: Support write-intent bitmaps with externally managed metadata.\n\nIn this case, the metadata needs to not be in the same\nsector as the bitmap.\nmd will not read/write any bitmap metadata.  Config must be\ndone via sysfs and when a recovery makes the array non-degraded\nagain, writing \u0027true\u0027 to \u0027bitmap/can_clear\u0027 will allow bits in\nthe bitmap to be cleared again.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "624ce4f5658fa3e0303c1217bba2706142fe7568",
      "tree": "d2ceb07051efba40b01ddd76cfc93f4ed89ed831",
      "parents": [
        "43a705076e51c5af21ec4260a35699775ea298f5"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:56 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md/bitmap: move setting of daemon_lastrun out of bitmap_read_sb\n\nSetting daemon_lastrun really has nothing to do with reading\nthe bitmap superblock, it just happens to be needed at the same time.\nbitmap_read_sb is about to become options, so move that code out\nto after the call to bitmap_read_sb.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "43a705076e51c5af21ec4260a35699775ea298f5",
      "tree": "ff8e161d841c41992dbbcca2a844816411941c3c",
      "parents": [
        "72e02075a33f739e21430262f71da8e82db9dbb3"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:55 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: support updating bitmap parameters via sysfs.\n\nA new attribute directory \u0027bitmap\u0027 in \u0027md\u0027 is created which\ncontains files for configuring the bitmap.\n\u0027location\u0027 identifies where the bitmap is, either \u0027none\u0027,\nor \u0027file\u0027 or \u0027sector offset from metadata\u0027.\nWriting \u0027location\u0027 can create or remove a bitmap.\nAdding a \u0027file\u0027 bitmap this way is not yet supported.\n\u0027chunksize\u0027 and \u0027time_base\u0027 must be set before \u0027location\u0027\ncan be set.\n\n\u0027chunksize\u0027 can be set before creating a bitmap, but is\ncurrently always over-ridden by the bitmap superblock.\n\n\u0027time_base\u0027 and \u0027backlog\u0027 can be updated at any time.\n\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "72e02075a33f739e21430262f71da8e82db9dbb3",
      "tree": "04a87a16751b714fe0fb41f28ccc54af9f820de1",
      "parents": [
        "f6af949c5672115313cc3c976d85b0533f607d7e"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:55 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: factor out parsing of fixed-point numbers\n\nsafe_delay_store can parse fixed point numbers (for fractions\nof a second).  We will want to do that for another sysfs\nfile soon, so factor out the code.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "f6af949c5672115313cc3c976d85b0533f607d7e",
      "tree": "6d00471bd4ee7c3aee67f9ad4c0a3023109b88e0",
      "parents": [
        "9cd30fdc33cde9ae4ac55a1ccbbb89f3f7b9b2f2"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:54 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: support bitmap offset appropriate for external-metadata arrays.\n\nFor md arrays were metadata is managed externally, the kernel does not\nknow about a superblock so the superblock offset is 0.\nIf we want to have a write-intent-bitmap near the end of the\ndevices of such an array, we should support sector_t sized offset.\nWe need offset be possibly negative for when the bitmap is before\nthe metadata, so use loff_t instead.\n\nAlso add sanity check that bitmap does not overlap with data.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "9cd30fdc33cde9ae4ac55a1ccbbb89f3f7b9b2f2",
      "tree": "b6a4e0303fe3261892f24f26d7ecebf06a6be1a9",
      "parents": [
        "1b04be96f6910ee415287bf0d5309c7d4c94bd2b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:54 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: remove needless setting of thread-\u003etimeout in raid10_quiesce\n\nAs bitmap_create and bitmap_destroy already set thread-\u003etimeout\nas appropriate, there is no need to do it in raid10_quiesce.\nThere is a possible need to wake the thread after the timeout\nhas been set low, but it is better to do that where the timeout\nis actually set low, in bitmap_create.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "1b04be96f6910ee415287bf0d5309c7d4c94bd2b",
      "tree": "9ea6dbd8e3d857c468b12d698c629786903da905",
      "parents": [
        "42a04b5078ce73a32f85762551d5703c5bd646a1"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:53 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: change daemon_sleep to be in \u0027jiffies\u0027 rather than \u0027seconds\u0027.\n\nThis removes a lot of multiplications by HZ.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "42a04b5078ce73a32f85762551d5703c5bd646a1",
      "tree": "3ef384933cd33d000516c292712da9a99e273360",
      "parents": [
        "c3d9714e88c8685cf9bc837c3241fc005f95fb82"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:53 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: move offset, daemon_sleep and chunksize out of bitmap structure\n\n... and into bitmap_info.  These are all configuration parameters\nthat need to be set before the bitmap is created.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c3d9714e88c8685cf9bc837c3241fc005f95fb82",
      "tree": "dd11e16ec911983bb7452bb4fb092769ba612e3b",
      "parents": [
        "709ae4879ae33628ded276ce7da8cd5acfec476b"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:52 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md: collect bitmap-specific fields into one structure.\n\nIn preparation for making bitmap fields configurable via sysfs,\nstart tidying up by making a single structure to contain the\nconfiguration fields.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "709ae4879ae33628ded276ce7da8cd5acfec476b",
      "tree": "db9714769f0b7d9b764eaf26ca51185519ae07bc",
      "parents": [
        "6eef4b21ffc9207b78fdd718154f5b004644b97d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:51 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:41 2009 +1100"
      },
      "message": "md/raid1: add takeover support for raid5-\u003eraid1\n\nA 2-device raid5 array can now be converted to raid1.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "6eef4b21ffc9207b78fdd718154f5b004644b97d",
      "tree": "554d8dafa2cd8ff7a9e719b12bd2f07c9745e7be",
      "parents": [
        "729a18663a30a9c8076e3adc2b3e4c866974f935"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:51 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:40 2009 +1100"
      },
      "message": "md: add honouring of suspend_{lo,hi} to raid1.\n\nThis will allow us to stop writeout to portions of the array\nwhile  they are resynced by someone else - e.g. another node in\na cluster.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "729a18663a30a9c8076e3adc2b3e4c866974f935",
      "tree": "14f8e15ffa09d6a583fccdbe2ddf84c7cb8c2246",
      "parents": [
        "a2826aa92e2e14db372eda01d333267258944033"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:50 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:51:40 2009 +1100"
      },
      "message": "md/raid5: don\u0027t complete make_request on barrier until writes are scheduled\n\nThe post-barrier-flush is sent by md as soon as make_request on the\nbarrier write completes.  For raid5, the data might not be in the\nper-device queues yet.  So for barrier requests, wait for any\npre-reading to be done so that the request will be in the per-device\nqueues.\n\nWe use the \u0027preread_active\u0027 count to check that nothing is still in\nthe preread phase, and delay the decrement of this count until after\nwrite requests have been submitted to the underlying devices.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "a2826aa92e2e14db372eda01d333267258944033",
      "tree": "9cdd3329205bf480a4782705a3db1738e3faae44",
      "parents": [
        "efa593390e70b0e3c39f6b2dca8876b6b1461e41"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "message": "md: support barrier requests on all personalities.\n\nPreviously barriers were only supported on RAID1.  This is because\nother levels requires synchronisation across all devices and so needed\na different approach.\nHere is that approach.\n\nWhen a barrier arrives, we send a zero-length barrier to every active\ndevice.  When that completes - and if the original request was not\nempty -  we submit the barrier request itself (with the barrier flag\ncleared) and then submit a fresh load of zero length barriers.\n\nThe barrier request itself is asynchronous, but any subsequent\nrequest will block until the barrier completes.\n\nThe reason for clearing the barrier flag is that a barrier request is\nallowed to fail.  If we pass a non-empty barrier through a striping\nraid level it is conceivable that part of it could succeed and part\ncould fail.  That would be way too hard to deal with.\nSo if the first run of zero length barriers succeed, we assume all is\nsufficiently well that we send the request and ignore errors in the\nsecond run of barriers.\n\nRAID5 needs extra care as write requests may not have been submitted\nto the underlying devices yet.  So we flush the stripe cache before\nproceeding with the barrier.\n\nNote that the second set of zero-length barriers are submitted\nimmediately after the original request is submitted.  Thus when\na personality finds mddev-\u003ebarrier to be set during make_request,\nit should not return from make_request until the corresponding\nper-device request(s) have been queued.\n\nThat will be done in later patches.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nReviewed-by: Andre Noll \u003cmaan@systemlinux.org\u003e\n"
    },
    {
      "commit": "efa593390e70b0e3c39f6b2dca8876b6b1461e41",
      "tree": "99c6071381f14f5ff59130779d988672aa78ee67",
      "parents": [
        "c07b70ad32ed0a5ec9735cafb1aa10b3a2298b7d"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:49 2009 +1100"
      },
      "message": "md: don\u0027t reset curr_resync_completed after an interrupted resync\n\nIf a resync/recovery/check/repair is interrupted for some reason, it\ncan be useful to know exactly where it got up to.\nSo in that case, do not clear curr_resync_completed.\nInitialise it when starting a resync/recovery/... instead.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "c07b70ad32ed0a5ec9735cafb1aa10b3a2298b7d",
      "tree": "451d88cd7e44ee8217a294335a04594bd573b828",
      "parents": [
        "7820f9e1dddcfebae2698fb2a245d04ce3aa6e74"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:48 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:48 2009 +1100"
      },
      "message": "md: adjust resync_min usefully when resync aborts.\n\nWhen a \u0027check\u0027 or \u0027repair\u0027 finished we should clear resync_min\nso that a future check/repair will cover the whole array (by default).\nHowever if it is interrupted, we should update resync_min to\nwhere we got up to, so that when the check/repair continues it\njust does the remainder of the array.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "7820f9e1dddcfebae2698fb2a245d04ce3aa6e74",
      "tree": "fd8853ea31528663d0f81167c92431e7a13f0781",
      "parents": [
        "8553fe7ec731e4f997245e14319572cb15118018"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "message": "md: remove sparse warning:symbol XXX was not declared.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "8553fe7ec731e4f997245e14319572cb15118018",
      "tree": "14cf104937c6260f00420e32e237eb0714db9389",
      "parents": [
        "aa5cbd103887011b4830355f88fb055f9ad2d556"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:47 2009 +1100"
      },
      "message": "md/raid5: remove some sparse warnings.\n\nqd_idx is previously declared and given exactly the same value!\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\n"
    },
    {
      "commit": "aa5cbd103887011b4830355f88fb055f9ad2d556",
      "tree": "92ef7c80999c6d0bfc6fef9a9cd3e4a75ee16c06",
      "parents": [
        "f40542532e96dda5506eb76badea322f2ae4731c"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:46 2009 +1100"
      },
      "committer": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Dec 14 12:49:46 2009 +1100"
      },
      "message": "md/bitmap: protect against bitmap removal while being updated.\n\nA write intent bitmap can be removed from an array while the\narray is active.\nWhen this happens, all IO is suspended and flushed before the\nbitmap is removed.\nHowever it is possible that bitmap_daemon_work is still running to\nclear old bits from the bitmap.  If it is, it can dereference the\nbitmap after it has been freed.\n\nSo introduce a new mutex to protect bitmap_daemon_work and get it\nbefore destroying a bitmap.\n\nThis is suitable for any current -stable kernel.\n\nSigned-off-by: NeilBrown \u003cneilb@suse.de\u003e\nCc: stable@kernel.org\n"
    },
    {
      "commit": "d2fdb776e08d4231d7e86a879cc663a93913c202",
      "tree": "92c892ecca2bd1c9d405ba4cdaa85ba26a190023",
      "parents": [
        "d8ddb1cfff0070479c1f4a07c1d4a48ef8cb188e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:36 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:36 2009 +0000"
      },
      "message": "dm snapshot: use merge origin if snapshot invalid\n\nIf the snapshot we are merging became invalid (e.g. it ran out of\nspace) redirect all I/O directly to the origin device.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d8ddb1cfff0070479c1f4a07c1d4a48ef8cb188e",
      "tree": "340967ea04ef1d790dfce3c324c3bfc1ce30cace",
      "parents": [
        "8a2d528620e228ddfd0df9cec0a16e034ff8db1d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:35 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:35 2009 +0000"
      },
      "message": "dm snapshot: report merge failure in status\n\nSet \u0027merge_failed\u0027 flag if a snapshot fails to merge.  Update\nsnapshot_status() to report \"Merge failed\" if \u0027merge_failed\u0027 is set.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "8a2d528620e228ddfd0df9cec0a16e034ff8db1d",
      "tree": "ff93eac3e996df7bf046d08c7386d690c3fd5ee0",
      "parents": [
        "73dfd078cf8bfee4018fb22f1e2a24f2e05b69dc"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:34 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:34 2009 +0000"
      },
      "message": "dm snapshot: merge consecutive chunks together\n\ns-\u003estore-\u003etype-\u003eprepare_merge returns the number of chunks that can be\ncopied linearly working backwards from the returned chunk number.\n\nFor example, if it returns 3 chunks with old_chunk \u003d\u003d 10 and new_chunk\n\u003d\u003d 20, then chunk 20 can be copied to 10, chunk 19 to 9 and 18 to 8.\n\nUntil now kcopyd only copied one chunk at a time.  This patch now copies\nthe full set at once.\n\nConsequently, snapshot_merge_process() needs to delay the merging of all\nchunks if any have writes in progress, not just the first chunk in the\nregion that is to be merged.\n\nsnapshot-merge\u0027s performance is now comparable to the original\nsnapshot-origin target.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "73dfd078cf8bfee4018fb22f1e2a24f2e05b69dc",
      "tree": "e5cc81262315df5c44d13d5a2eb731cfe7f8ea86",
      "parents": [
        "17aa03326d40614db94bc51fbbc92df628a5c97c"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:34 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:34 2009 +0000"
      },
      "message": "dm snapshot: trigger exceptions in remaining snapshots during merge\n\nWhen there is one merging snapshot and other non-merging snapshots,\nsnapshot_merge_process() must make exceptions in the non-merging\nsnapshots.\n\nUse a sequence count to resolve the race between I/O to chunks that are\nabout to be merged.  The count increases each time an exception\nreallocation finishes.  Use wait_event() to wait until the count\nchanges.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "17aa03326d40614db94bc51fbbc92df628a5c97c",
      "tree": "a9661a11274731b6b8e2fcbaace7d4424b9cefb6",
      "parents": [
        "9fe862548821b0c206c58e8057b782530a173703"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:33 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:33 2009 +0000"
      },
      "message": "dm snapshot: delay merging a chunk until writes to it complete\n\nTrack writes to chunks that are currently being merged and delay merging\na chunk until all writes to that chunk finish.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9fe862548821b0c206c58e8057b782530a173703",
      "tree": "1a23bec091d5163dfec29750b5daf3e93637c5ab",
      "parents": [
        "1e03f97e4301f75a2f3b649787f7876516764929"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:33 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:33 2009 +0000"
      },
      "message": "dm snapshot: queue writes to chunks being merged\n\nWhile a set of chunks is being merged, any overlapping writes need to be\nqueued.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1e03f97e4301f75a2f3b649787f7876516764929",
      "tree": "37f4baa83145c011245a83f1e18acf9348aac3c3",
      "parents": [
        "9d3b15c4c776b041f9ee81810cbd375275411829"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:32 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:32 2009 +0000"
      },
      "message": "dm snapshot: add merging\n\nMerging is started when origin is resumed and it is stopped when\norigin is suspended or when the merging snapshot is destroyed or\nerrors are detected.\n\nMerging is not yet interlocked with writes: this will be handled in\nsubsequent patches.\n\nThe code relies on callbacks from a private kcopyd thread.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9d3b15c4c776b041f9ee81810cbd375275411829",
      "tree": "8298b50b4d9cf11355e622e6b7c314628e5c6256",
      "parents": [
        "10b8106a70433e14153469ebbdd189776500e238"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:32 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:32 2009 +0000"
      },
      "message": "dm snapshot: permit only one merge at once\n\nMerging more than one snapshot is not supported, so prevent\nthis happening.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "10b8106a70433e14153469ebbdd189776500e238",
      "tree": "5d46ee65e40d165494ef1d4342e03f2fcfaa0492",
      "parents": [
        "3452c2a1eb5b93c1b9fb0d22bd5b07c0cee4dc29"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:31 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:31 2009 +0000"
      },
      "message": "dm snapshot: support barriers in snapshot merge target\n\nSets num_flush_requests\u003d2 to support flushing both the origin and cow\ndevices used by the snapshot-merge target.\n\nAlso, snapshot_ctr() now gets the origin device using FMODE_WRITE if the\ntarget is snapshot-merge (which writes to the origin device).\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3452c2a1eb5b93c1b9fb0d22bd5b07c0cee4dc29",
      "tree": "65d4af8d6cf36ac4bcc8c226f8be891740d343ee",
      "parents": [
        "515ad66cc4c82f210d726340349c8f7c1ec6b125"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:31 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:31 2009 +0000"
      },
      "message": "dm snapshot: avoid allocating exceptions in merge\n\nThe snapshot-merge target should not allocate new exceptions because the\nintent is to merge all of its exceptions as quickly and safely as\npossible.\n\nThis patch introduces the snapshot-merge mapping function and updates\n__origin_write() so that it doesn\u0027t allocate exceptions on any snapshots\nthat are being merged.\n\nIf a write request to a merging snapshot device is to be dispatched\ndirectly to the origin (because the chunk is not remapped or was already\nmerged), snapshot_merge_map() must make exceptions in other snapshots so\ncalls do_origin().\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "515ad66cc4c82f210d726340349c8f7c1ec6b125",
      "tree": "e6ae5591a7906f3ce9ae0fb0a62419acffcdcbcd",
      "parents": [
        "d698aa4500aa3ca9559142060caf0f79da998744"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:30 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:30 2009 +0000"
      },
      "message": "dm snapshot: rework writing to origin\n\nTo track the completion of exceptions relating to the same location on\nthe device, the current code selects one exception as primary_pe, links\nthe other exceptions to it and uses reference counting to wait until all\nthe reallocations are complete.\n\nIt is considered too complicated to extend this code to handle the new\nsnapshot-merge target, where sets of non-overlapping chunks would also\nneed to become linked.\n\nInstead, a simpler (but less efficient) approach is taken.  Bios are\nlinked to one exception.  When it completes, bios are simply retried,\nand if other related exceptions are still outstanding, they\u0027ll get\nqueued again to wait for another one.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d698aa4500aa3ca9559142060caf0f79da998744",
      "tree": "175577ce2c8ae0918e6f38a2a27ad2b124bb2466",
      "parents": [
        "4454a6216f75a9ef8c4bd0a65e34b101f725ef1e"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:30 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:30 2009 +0000"
      },
      "message": "dm snapshot: add merge target\n\nThe snapshot-merge target allows a snapshot to be merged back into the\nsnapshot\u0027s origin device.\n\nOne anticipated use of snapshot merging is the rollback of filesystems\nto back out problematic system upgrades.\n\nThis patch adds snapshot-merge target management to both\ndm_snapshot_init() and dm_snapshot_exit().  As an initial place-holder,\nsnapshot-merge is identical to the snapshot target.  Documentation is\nprovided.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4454a6216f75a9ef8c4bd0a65e34b101f725ef1e",
      "tree": "25b97b629954702692397072dd6cd20f34221b5c",
      "parents": [
        "615d1eb9cad9b34ed17c18c604254e8db533ac6f"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:29 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:29 2009 +0000"
      },
      "message": "dm exception store: add merge specific methods\n\nAdd functions that decide how many consecutive chunks of snapshot to\nmerge back into the origin next and to update the metadata afterwards.\n\nprepare_merge provides a pointer to the most recent still-to-be-merged\nchunk and returns how many previous ones are consecutive and can be\nprocessed together.\n\ncommit_merge removes the nr_merged most-recent chunks permanently from\nthe exception store.  The number must not exceed that returned by\nprepare_merge.\n\nIntroduce NUM_SNAPSHOT_HDR_CHUNKS to show where the snapshot header\nchunk is accounted for.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "615d1eb9cad9b34ed17c18c604254e8db533ac6f",
      "tree": "0937db148422cad3057db39ec2eaecf7b87e21a9",
      "parents": [
        "9eaae8ffbc340fc034fed1e5d0dc9ca0e943f817"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:29 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:29 2009 +0000"
      },
      "message": "dm snapshot: create function for chunk_is_tracked wait\n\nMove the __chunk_is_tracked() loop into a separate function as we will\nalso need to call it from the write path in the rare case of conflicting\nwrites to the same chunk.\n\nOriginally introduced in commit a8d41b59f3f5a7ac19452ef442a7fc1b5fa17366\n(\"dm snapshot: fix race during exception creation\").\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "9eaae8ffbc340fc034fed1e5d0dc9ca0e943f817",
      "tree": "b40361de2cde4ecd14f569a82b18df87f7f9cbc7",
      "parents": [
        "c2f3d24b783fda20618b73d65678eb5dfae31a5d"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:28 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:28 2009 +0000"
      },
      "message": "dm snapshot: make bio optional in __origin_write\n\nTo support the merging of snapshots back into their origin we need\nto trigger exceptions in other snapshots not being merged without\nany incoming bio on the origin device.  The bio parameter to\n__origin_write() becomes optional and the sector needs supplying\nseparately.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c2f3d24b783fda20618b73d65678eb5dfae31a5d",
      "tree": "0c5f266885460a4829c1f7c2083cd66004bd1ec2",
      "parents": [
        "64dbce580d5a7e89e8de20b91f80c7267cdad91d"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:27 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:27 2009 +0000"
      },
      "message": "dm mpath: reject messages when device is suspended\n\nThis patch rejects messages that can generate I/O while the device\nitself is suspended.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "64dbce580d5a7e89e8de20b91f80c7267cdad91d",
      "tree": "9d8a8bb8afd9d7b856d90abd7c5c35137547d09a",
      "parents": [
        "4f186f8bbfa92bf1a2b39f7a8674348bfdba9437"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:27 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:27 2009 +0000"
      },
      "message": "dm: export suspended state to targets\n\nThis patch adds the exported dm_suspended() function so that targets\ncan check whether or not they are suspended.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4f186f8bbfa92bf1a2b39f7a8674348bfdba9437",
      "tree": "9fd65776c0314abf6774f30e542d565e22ae4698",
      "parents": [
        "4d4471cb5c1ec426c0f24818b270dc7b3ad7e655"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "message": "dm: rename dm_suspended to dm_suspended_md\n\nThis patch renames dm_suspended() to dm_suspended_md() and\nkeeps it internal to dm.\nNo functional change.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "4d4471cb5c1ec426c0f24818b270dc7b3ad7e655",
      "tree": "37407a97b8a9a96bae462860b1ed5c13da3da24f",
      "parents": [
        "61afef614b013ee1b767cdd10325acae1db1f4d2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:26 2009 +0000"
      },
      "message": "dm: swap target postsuspend call and setting suspended flag\n\nThis patch moves DMF_SUSPENDED flag set before postsuspend.\nNo one should care about the ordering, because the flag set and\nthe postsuspend are protected by a single lock, md-\u003esuspend_lock,\nand all strict flag-checkers take the lock.\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "61afef614b013ee1b767cdd10325acae1db1f4d2",
      "tree": "a0ece8668c2d210b4c57ef6c4bec2d9184437357",
      "parents": [
        "6db4ccd6357f28c9ef7058b3bc48904c4b2ac419"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Thu Dec 10 23:52:25 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:25 2009 +0000"
      },
      "message": "dm crypt: add plain64 iv\n\nThe default plain IV is 32-bit only.\n\nThis plain64 IV provides a compatible mode for encrypted devices bigger\nthan 4TB.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6db4ccd6357f28c9ef7058b3bc48904c4b2ac419",
      "tree": "affd099b88123c0717ec4bbfbb2503c3d7cc91f8",
      "parents": [
        "c1f0c183f6acc6d32c5a1d0249ec68bf783af7b1"
      ],
      "author": {
        "name": "Jun\u0027ichi Nomura",
        "email": "j-nomura@ce.jp.nec.com",
        "time": "Thu Dec 10 23:52:25 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:25 2009 +0000"
      },
      "message": "dm: trace request based remapping\n\nThis patch adds a remapping trace to request-based dm.\nBIO-based dm already has the equivalent tracepoint.\n\nFor example, under this dm stack (linear LV on multipath):\n  # dmsetup ls --tree -o ascii\n  vg-lv0 (253:1)\n   `-mpath0 (253:0)\n      |- (8:160)\n      |- (66:80)\n      |- (65:176)\n      `- (65:160)\n\nTrace of \u0027dd of\u003d/dev/vg/lv0 bs\u003d128k count\u003d1 oflag\u003ddirect\u0027 looks like this:\n\nwithout the patch:\n  dd-6674  [000]   539.727384: block_bio_queue: 253,1 WS 0 + 256 [dd]\n  dd-6674  [000]   539.727392: block_remap: 253,0 WS 384 + 256 \u003c- (253,1) 0\n  dd-6674  [000]   539.727394: block_bio_queue: 253,0 WS 384 + 256 [dd]\n  dd-6674  [000]   539.727405: block_getrq: 253,0 WS 384 + 256 [dd]\n  dd-6674  [000]   539.727409: block_plug: [dd]\n  dd-6674  [000]   539.727410: block_rq_insert: 253,0 W 0 () 384 + 256 [dd]\n  dd-6674  [000]   539.727416: block_rq_issue: 253,0 W 0 () 384 + 256 [dd]\n  dd-6674  [000]   539.727426: block_rq_insert: 65,176 W 0 () 384 + 256 [dd]\n  dd-6674  [000]   539.727427: block_rq_issue: 65,176 W 0 () 384 + 256 [dd]\n  ...\n\nand with the patch: (the line with \u0027**\u0027 is the trace added by this patch)\n  dd-6617  [002]   162.914301: block_bio_queue: 253,1 WS 0 + 256 [dd]\n  dd-6617  [002]   162.914314: block_remap: 253,0 WS 384 + 256 \u003c- (253,1) 0\n  dd-6617  [002]   162.914316: block_bio_queue: 253,0 WS 384 + 256 [dd]\n  dd-6617  [002]   162.914331: block_getrq: 253,0 WS 384 + 256 [dd]\n  dd-6617  [002]   162.914335: block_plug: [dd]\n  dd-6617  [002]   162.914337: block_rq_insert: 253,0 W 0 () 384 + 256 [dd]\n  dd-6617  [002]   162.914347: block_rq_issue: 253,0 W 0 () 384 + 256 [dd]\n**dd-6617  [002]   162.914356: block_rq_remap: 65,176 W 384 + 256 \u003c- (253,0) 384\n  dd-6617  [002]   162.914358: block_rq_insert: 65,176 W 0 () 384 + 256 [dd]\n  dd-6617  [002]   162.914359: block_rq_issue: 65,176 W 0 () 384 + 256 [dd]\n  ...\n\nSigned-off-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Jun\u0027ichi Nomura \u003cj-nomura@ce.jp.nec.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c1f0c183f6acc6d32c5a1d0249ec68bf783af7b1",
      "tree": "f8e8e88e5403a9dbbebff14dc4afd6d475d1c03a",
      "parents": [
        "042d2a9bcd80fe12d4b0871706aa9dd2231e8238"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:24 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:24 2009 +0000"
      },
      "message": "dm snapshot: allow live exception store handover between tables\n\nPermit in-use snapshot exception data to be \u0027handed over\u0027 from one\nsnapshot instance to another.  This is a pre-requisite for patches\nthat allow the changes made in a snapshot device to be merged back into\nits origin device and also allows device resizing.\n\nThe basic call sequence is:\n\n  dmsetup load new_snapshot (referencing the existing in-use cow device)\n     - the ctr code detects that the cow is already in use and allows the\n       two snapshot target instances to be linked together\n  dmsetup suspend original_snapshot\n  dmsetup resume new_snapshot\n     - the new_snapshot becomes live, and if anything now tries to access\n       the original one it will receive -EIO\n  dmsetup remove original_snapshot\n\n(There can only be two snapshot targets referencing the same cow device\nsimultaneously.)\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "042d2a9bcd80fe12d4b0871706aa9dd2231e8238",
      "tree": "69a7b6675e2cd020807729de50cd99747f6470f4",
      "parents": [
        "a794015597a2d9b437470c7692aac77e5fc08cd2"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:24 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:24 2009 +0000"
      },
      "message": "dm: keep old table until after resume succeeded\n\nWhen swapping a new table into place, retain the old table until\nits replacement is in place.\n\nAn old check for an empty table is removed because this is enforced\nin populate_table().\n\n__unbind() becomes redundant when followed by __bind().\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "a794015597a2d9b437470c7692aac77e5fc08cd2",
      "tree": "d25dd56edd53f8f1890ed005b5531ccfa07c28ee",
      "parents": [
        "1d0f3ce83200edc5d43723c77c62b09ad6560294"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:23 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:23 2009 +0000"
      },
      "message": "dm: bind new table before destroying old\n\nWhen replacing a mapped device\u0027s table during a \u0027resume\u0027, delay the\ndestruction of the old table until the new one is successfully in place.\n\nThis will make it easier for a later patch to transfer internal state\ninformation from the old table to the new one (something we do not currently\nsupport) while giving us more options for reversion if a later part\nof the operation fails.\n\nDevices are always in the suspended state during dm_swap_table().\nThis patch reinforces the requirement that all I/O must have been\nflushed from the table targets while in this state (including any in\nworkqueues).  In the case of \u0027noflush\u0027 suspending, unprocessed\nI/O should have been \u0027pushed back\u0027 to the dm core prior to this point,\nfor resubmission after the new table is in place.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1d0f3ce83200edc5d43723c77c62b09ad6560294",
      "tree": "dd7f0306c14334d8cb2fbcabe18243c94da4b869",
      "parents": [
        "12fc0f49dc994d8d90dcf3df13f5b1ee5441288d"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:22 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:22 2009 +0000"
      },
      "message": "dm ioctl: retrieve status from inactive table\n\nAdd the flag DM_QUERY_INACTIVE_TABLE_FLAG to the ioctls to return\ninfomation about the loaded-but-not-yet-active table instead of the live\ntable.  Prior to this patch it was impossible to obtain this information\nuntil the device had been \u0027resumed\u0027.\n\nUserspace dmsetup and libdevmapper support the flag as of version 1.02.40.\ne.g. dmsetup info --inactive vg1-lv1\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "12fc0f49dc994d8d90dcf3df13f5b1ee5441288d",
      "tree": "60959c326d01807f3e9a72bd1799717d0166ac6e",
      "parents": [
        "67a46dad25ccc8910995d8671f7ec17a6bc823cb"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:22 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:22 2009 +0000"
      },
      "message": "dm io: handle empty barriers\n\nAccept empty barriers in dm-io.\n\ndm-io will process empty write barrier requests just like the other\nread/write requests.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "67a46dad25ccc8910995d8671f7ec17a6bc823cb",
      "tree": "6e5221b6fdd5ad8de5e88e2c45737f788288c6cf",
      "parents": [
        "6380f26f0424034345461cabaab9a7030d905b59"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@linux.vnet.ibm.com",
        "time": "Thu Dec 10 23:52:21 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:21 2009 +0000"
      },
      "message": "dm mpath: prevent io from work queue while suspended\n\nReject messages that can generate I/O while the device itself\nis suspended.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6380f26f0424034345461cabaab9a7030d905b59",
      "tree": "cc9fbd6e8d990bf3ee2f577ae7f842a4df1d5ef6",
      "parents": [
        "c50abeb38026ea721a812cf8a9b2fac5d3b7684b"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@linux.vnet.ibm.com",
        "time": "Thu Dec 10 23:52:21 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:21 2009 +0000"
      },
      "message": "dm mpath: add mutex to synchronize adding and flushing work\n\nAdd a mutex to allow possible creators of new work to synchronize with\nflushing work queues.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nAcked-by: Kiyoshi Ueda \u003ck-ueda@ct.jp.nec.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c50abeb38026ea721a812cf8a9b2fac5d3b7684b",
      "tree": "755a412a2aa8bacf35a278f1009229c64424b03c",
      "parents": [
        "432a212c0dd0f4ca386cf37c5b740ac9dbda4479"
      ],
      "author": {
        "name": "Mike Anderson",
        "email": "andmike@linux.vnet.ibm.com",
        "time": "Thu Dec 10 23:52:20 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:20 2009 +0000"
      },
      "message": "dm ioctl: forbid messages to devices being deleted\n\nOnce we begin deleting a device, prevent any further messages being sent\nto targets of its table (to avoid races).\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ],
  "next": "432a212c0dd0f4ca386cf37c5b740ac9dbda4479"
}
