)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "432a212c0dd0f4ca386cf37c5b740ac9dbda4479",
      "tree": "0eb05111e9290856c9e7543e5d12e1e3ee0c8ef3",
      "parents": [
        "6df400ab64c68fc4072a13019fc20fd7e3d51303"
      ],
      "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: add dm_deleting_md function\n\nAdd dm_deleting_md to check whether or not a given mapped\ndevice is currently being deleted.\n\nSigned-off-by: Mike Anderson \u003candmike@linux.vnet.ibm.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "6df400ab64c68fc4072a13019fc20fd7e3d51303",
      "tree": "69a9e9060b6c8ad87acc3514d4c8981767efb3b5",
      "parents": [
        "7c6664114b7342a36f14a6836564e865669b3cea"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:19 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:19 2009 +0000"
      },
      "message": "dm mpath: flush workqueues before suspend completes\n\nThis patch stops the remaining dm-mpath activity during the suspend\nsequence by flushing workqueues in postsuspend function.\n\nThe current dm-mpath target may not be quiet even after suspend completes\nbecause some workqueues (e.g. device_handler\u0027s work, event handling)\nare not flushed during the suspend sequence, even though suspended\ndevices/targets are supposed to be quiet in this state.\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": "7c6664114b7342a36f14a6836564e865669b3cea",
      "tree": "0f00dcd89bec3ae1e4003b23018a2b1bf5464ff0",
      "parents": [
        "d0bcb8786532b01206f04258eb6b7d4ac858436a"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:19 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:19 2009 +0000"
      },
      "message": "dm: rename dm_get_table to dm_get_live_table\n\nRename dm_get_table to dm_get_live_table.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d0bcb8786532b01206f04258eb6b7d4ac858436a",
      "tree": "49c27a02ebd5f58072f5d2234609fa0e6816038e",
      "parents": [
        "980691e5f3a1b5ebbb2d34014e028fd7f1c6e4fb"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:18 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:18 2009 +0000"
      },
      "message": "dm: add request based barrier support\n\nThis patch adds barrier support for request-based dm.\n\nCORE DESIGN\n\nThe design is basically same as bio-based dm, which emulates barrier\nby mapping empty barrier bios before/after a barrier I/O.\nBut request-based dm has been using struct request_queue for I/O\nqueueing, so the block-layer\u0027s barrier mechanism can be used.\n\no Summary of the block-layer\u0027s behavior (which is depended by dm-core)\n  Request-based dm uses QUEUE_ORDERED_DRAIN_FLUSH ordered mode for\n  I/O barrier.  It means that when an I/O requiring barrier is found\n  in the request_queue, the block-layer makes pre-flush request and\n  post-flush request just before and just after the I/O respectively.\n\n  After the ordered sequence starts, the block-layer waits for all\n  in-flight I/Os to complete, then gives drivers the pre-flush request,\n  the barrier I/O and the post-flush request one by one.\n  It means that the request_queue is stopped automatically by\n  the block-layer until drivers complete each sequence.\n\no dm-core\n  For the barrier I/O, treats it as a normal I/O, so no additional\n  code is needed.\n\n  For the pre/post-flush request, flushes caches by the followings:\n    1. Make the number of empty barrier requests required by target\u0027s\n       num_flush_requests, and map them (dm_rq_barrier()).\n    2. Waits for the mapped barriers to complete (dm_rq_barrier()).\n       If error has occurred, save the error value to md-\u003ebarrier_error\n       (dm_end_request()).\n       (*) Basically, the first reported error is taken.\n           But -EOPNOTSUPP supersedes any error and DM_ENDIO_REQUEUE\n           follows.\n    3. Requeue the pre/post-flush request if the error value is\n       DM_ENDIO_REQUEUE.  Otherwise, completes with the error value\n       (dm_rq_barrier_work()).\n  The pre/post-flush work above is done in the kernel thread (kdmflush)\n  context, since memory allocation which might sleep is needed in\n  dm_rq_barrier() but sleep is not allowed in dm_request_fn(), which is\n  an irq-disabled context.\n  Also, clones of the pre/post-flush request share an original, so\n  such clones can\u0027t be completed using the softirq context.\n  Instead, complete them in the context of underlying device drivers.\n  It should be safe since there is no I/O dispatching during\n  the completion of such clones.\n\n  For suspend, the workqueue of kdmflush needs to be flushed after\n  the request_queue has been stopped.  Otherwise, the next flush work\n  can be kicked even after the suspend completes.\n\nTARGET INTERFACE\n\nNo new interface is added.\nJust use the existing num_flush_requests in struct target_type\nas same as bio-based dm.\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": "980691e5f3a1b5ebbb2d34014e028fd7f1c6e4fb",
      "tree": "a4d593cf3818a54c41e6a4115cad63128b738c0b",
      "parents": [
        "11a68244e16b0c35e122dd55b4e7c595e0fb67a1"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "message": "dm: move dm_end_request\n\nThis patch moves dm_end_request() to make the next patch more readable.\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": "11a68244e16b0c35e122dd55b4e7c595e0fb67a1",
      "tree": "ac982eb9abf6eca76ae35a9e0900323b54bb3ab9",
      "parents": [
        "b4324feeae304ae39e631a254d238a7d63be004b"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:17 2009 +0000"
      },
      "message": "dm: refactor request based completion functions\n\nThis patch factors out the clone completion code, dm_done(),\nfrom dm_softirq_done() in preparation for a subsequent patch.\nNo functional change.\n\ndm_done() will be used in barrier completion, which can\u0027t use and\ndoesn\u0027t need softirq.  The softirq_done callback needs to get a clone\nfrom an original request but it can\u0027t in the case of barrier, where\nan original request is shared by multiple clones.  On the other hand,\nthe completion of barrier clones doesn\u0027t involve re-submitting requests,\nwhich was the primary reason of the need for softirq.\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": "b4324feeae304ae39e631a254d238a7d63be004b",
      "tree": "12495362c9301129912a8d706de0f6cdb7de8ccf",
      "parents": [
        "9f518b27cf682dd5155a4c1679d52cd4b5be82f2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "message": "dm: use md pending for in flight IO counting\n\nThis patch changes the counter for the number of in_flight I/Os\nto md-\u003epending from q-\u003ein_flight in preparation for a later patch.\nNo functional change.\n\nRequest-based dm used q-\u003ein_flight to count the number of in-flight\nclones assuming the counter is always incremented for an in-flight\noriginal request and original:clone is 1:1 relationship.\nHowever, it this no longer true for barrier requests.\nSo use md-\u003epending to count the number of in-flight clones.\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": "9f518b27cf682dd5155a4c1679d52cd4b5be82f2",
      "tree": "3515037fb33d11065cbc02a8aa8c13ef6a406fa9",
      "parents": [
        "6facdaff229f2b25d0de82be9be99b9f562e72ba"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:16 2009 +0000"
      },
      "message": "dm: simplify request based suspend\n\nThe semantics of bio-based dm were changed recently in the case of\nsuspend with \"--nolockfs\" but without \"--noflush\".\nBefore 2.6.30, I/Os submitted before the suspend invocation were always\nflushed.  From 2.6.30 onwards, I/Os submitted before the suspend\ninvocation might not be flushed.  (For details, see\nhttp://marc.info/?t\u003d123994433400003\u0026r\u003d1\u0026w\u003d2)\n\nThis patch brings the behaviour of request-based dm into line with\nbio-based dm, simplifying the code and preparing for a subsequent patch\nthat will wait for all in_flight I/Os to complete without stopping\nrequest_queue and use dm_wait_for_completion() for it.\n\nThis change in semantics simplifies the suspend code as follows:\n  o Suspend is implemented as stopping request_queue\n    in request-based dm, and all I/Os are queued in the request_queue\n    even after suspend is invoked.\n  o In the old semantics, we had to track whether I/Os were\n    queued before or after the suspend invocation, so a special\n    barrier-like request called \u0027suspend marker\u0027 was introduced.\n  o With the new semantics, we don\u0027t need to flush any I/O\n    so we can remove the marker and the code related to the marker\n    handling and I/O flushing.\n\nAfter removing this codes, the suspend sequence is now:\n  1. Flush all I/Os by lock_fs() if needed.\n  2. Stop dispatching any I/O by stopping the request_queue.\n  3. Wait for all in-flight I/Os to be completed or requeued.\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": "6facdaff229f2b25d0de82be9be99b9f562e72ba",
      "tree": "4faa8e98b33e804525c7873d160cb0d7014a2a0d",
      "parents": [
        "0888564393a1277ce2d0564d819e1bcff1120343"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "message": "dm: abstract clone_rq\n\nThis patch factors out the request cloning code in dm_prep_fn()\nas clone_rq().  No functional change.\n\nThis patch is a preparation for a later patch in this series which needs to\nmake clones from an original barrier 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\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "0888564393a1277ce2d0564d819e1bcff1120343",
      "tree": "cac54095a48b4662ee5a3ff17550693300be2692",
      "parents": [
        "598de40947909e6b948569710383661ecc0ddc8e"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:15 2009 +0000"
      },
      "message": "dm: pass gfp_mask to alloc_rq_tio\n\nThis patch adds the gfp_mask argument to alloc_rq_tio().\nNo functional change.\n\nThis patch is a preparation for a later patch in this series which needs to\nallocate tio (for barrier I/O) with different allocation flag (GFP_NOIO) from\nthe one in the normal I/O code 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": "598de40947909e6b948569710383661ecc0ddc8e",
      "tree": "05d342fb20877b9c8944ba9309f46f62094ef021",
      "parents": [
        "90abb8c4cec8f0aa4ce58790542e3cf13071601a"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:14 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:14 2009 +0000"
      },
      "message": "dm: use clone in map_request function\n\nThis patch changes the argument of map_request() to clone request\nfrom original request.  No functional change.\n\nThis patch is a preparation for PATCH 9, which needs to use\nmap_request() for clones sharing an original barrier 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\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "90abb8c4cec8f0aa4ce58790542e3cf13071601a",
      "tree": "4233757994b2ff97c29c81d5aae9f4660dcea1b3",
      "parents": [
        "9ca170a3c0cbb0d5251cef6f5a3300fa436ba8ec"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "message": "dm: abstract dm_in_flight function\n\nThis patch adds md_in_flight() to get the number of in_flight I/Os.\nNo functional change.\n\nThis patch is a preparation for a later patch in this series, which\nchanges I/O counter to md-\u003epending from q-\u003ein_flight in request-based dm.\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": "9ca170a3c0cbb0d5251cef6f5a3300fa436ba8ec",
      "tree": "78c023bd85bcbf01b5e81ae9586093aabe201312",
      "parents": [
        "c26655ca3ca7550740a63820ee981e5c7c797523"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:13 2009 +0000"
      },
      "message": "dm kcopyd: accept zero size jobs\n\ndm-kcopyd: accept zero-size jobs\n\nThis patch changes dm-kcopyd so that it accepts zero-size jobs and completes\nthem immediatelly via its completion thread.\n\nIt is needed for multisnapshots snapshot resizing. When we are writing to\na chunk beyond origin end, no copying is done. To simplify the code, we submit\nan empty request to kcopyd and let kcopyd complete it. If we didn\u0027t submit\na request to kcopyd and called the completion routine immediatelly, it would\nviolate the principle that completion is called only from one thread and\nit would need additional locking.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "c26655ca3ca7550740a63820ee981e5c7c797523",
      "tree": "1ac39d32d93a6fd5dbcfb5fa95304aecb6cb5efe",
      "parents": [
        "fc56f6fbcca3672c63c93c65f45105faacfc13cb"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:12 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:12 2009 +0000"
      },
      "message": "dm snapshot: track suspended state in target\n\nKeep track of whether or not the device is suspended within the snapshot\ntarget module, the same as we do in dm-raid1.\n\nWe will use this later to enforce the correct sequence of ioctls to\ntransfer the in-core exceptions from a snapshot target instance in\none table to a replacement one capable of merging them back\ninto the origin.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "fc56f6fbcca3672c63c93c65f45105faacfc13cb",
      "tree": "f50f42a461ef33f8617fbdb781879e6ae77b62c4",
      "parents": [
        "985903bb3a6d98623360ab6c855417f638840029"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:12 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:12 2009 +0000"
      },
      "message": "dm snapshot: move cow ref from exception store to snap core\n\nStore the reference to the snapshot cow device in the core snapshot\ncode instead of each exception store.  It can be accessed through the\nnew function dm_snap_cow().  Exception stores should each now maintain a\nreference to their parent snapshot struct.\n\nThis is cleaner and makes part of the forthcoming snapshot merge code simpler.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nCc: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\n"
    },
    {
      "commit": "985903bb3a6d98623360ab6c855417f638840029",
      "tree": "64e7582e0b7827aa318c4fe1c497ebc541d9ce8b",
      "parents": [
        "3510cb94ff7b04b016bd22bfee913e2c1c05c066"
      ],
      "author": {
        "name": "Mike Snitzer",
        "email": "snitzer@redhat.com",
        "time": "Thu Dec 10 23:52:11 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:11 2009 +0000"
      },
      "message": "dm snapshot: add allocated metadata to snapshot status\n\nAdd number of sectors used by metadata to the end of the snapshot\u0027s status\nline.\n\nRenamed dm_exception_store_type\u0027s \u0027fraction_full\u0027 to \u0027usage\u0027.  Renamed\narguments to be clearer about what is being returned.  Also added\n\u0027metadata_sectors\u0027.\n\nSigned-off-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "3510cb94ff7b04b016bd22bfee913e2c1c05c066",
      "tree": "6d8f1d3a8873d52b561c26b5b631763908d0f015",
      "parents": [
        "191437a53c8269df3a2c6199206781e742c57bb5"
      ],
      "author": {
        "name": "Jon Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Dec 10 23:52:11 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:11 2009 +0000"
      },
      "message": "dm snapshot: rename exception functions\n\nRename exception functions.  Preparing to pull them out of\ndm-snap.c for broader use.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "191437a53c8269df3a2c6199206781e742c57bb5",
      "tree": "cf0c03388fe387a7f2e40a1eb5cf1b8761cf7db6",
      "parents": [
        "1d4989c858093bda0426be536fc7f9c415857836"
      ],
      "author": {
        "name": "Jon Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Dec 10 23:52:10 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:10 2009 +0000"
      },
      "message": "dm snapshot: rename exception_table to dm_exception_table\n\nRename exception_table for broader use outside dm-snap.c\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "1d4989c858093bda0426be536fc7f9c415857836",
      "tree": "f3d831048cb65b39d5fb89178d2a6de599518a2b",
      "parents": [
        "d32a6ea65fbc33621f9c790da3dff10201640b2a"
      ],
      "author": {
        "name": "Jon Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Dec 10 23:52:10 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:10 2009 +0000"
      },
      "message": "dm snapshot: rename dm_snap_exception to dm_exception\n\nThe exception structure is not necessarily just a snapshot\nelement (especially after we pull it out of dm-snap.c).\n\nRenaming appropriately.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "d32a6ea65fbc33621f9c790da3dff10201640b2a",
      "tree": "a352ceb4ed92812bda57dd33806417da84adbc7b",
      "parents": [
        "7e201b35132a1f02c931a0a06760766c846bb49b"
      ],
      "author": {
        "name": "Jon Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Dec 10 23:52:09 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:09 2009 +0000"
      },
      "message": "dm snapshot: consolidate insert exception functions\n\nConsolidate the insert_*exception functions.  \u0027insert_completed_exception\u0027\nalready contains all the logic to handle \u0027insert_exception\u0027 (via\ncheck for a hash_shift of 0), so remove redundant function.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "7e201b35132a1f02c931a0a06760766c846bb49b",
      "tree": "02ab2bcf4609763ab9780db2a87b9f37aa77186f",
      "parents": [
        "102c6ddb1d081a6a1fede38c43a42c9811313ec7"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:08 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:08 2009 +0000"
      },
      "message": "dm snapshot: abstract minimum_chunk_size fn\n\nThe origin needs to find minimum chunksize of all snapshots.  This logic is\nmoved to a separate function because it will be used at another place in\nthe snapshot merge patches.\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "102c6ddb1d081a6a1fede38c43a42c9811313ec7",
      "tree": "2274305e73dccefa6a4620180339ec04504f93fb",
      "parents": [
        "f5acc834287dd4f6cf712093ce0e779e38caad70"
      ],
      "author": {
        "name": "Mikulas Patocka",
        "email": "mpatocka@redhat.com",
        "time": "Thu Dec 10 23:52:08 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:08 2009 +0000"
      },
      "message": "dm snapshot: simplify sector_to_chunk expression\n\nRemoved unnecessary \u0027and\u0027 masking: The right shift discards the lower\nbits so there is no need to clear them.\n\n(A later patch needs this change to support a 32-bit chunk_mask.)\n\nSigned-off-by: Mikulas Patocka \u003cmpatocka@redhat.com\u003e\nReviewed-by: Mike Snitzer \u003csnitzer@redhat.com\u003e\nReviewed-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    },
    {
      "commit": "f5acc834287dd4f6cf712093ce0e779e38caad70",
      "tree": "d3100f28c096a79d487a79b832fa8964af4e2274",
      "parents": [
        "a518b86d0b1b6a474f154697dc6f33e0a317ae72"
      ],
      "author": {
        "name": "Jon Brassow",
        "email": "jbrassow@redhat.com",
        "time": "Thu Dec 10 23:52:07 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:07 2009 +0000"
      },
      "message": "dm snapshot: avoid else clause in persistent_read_metadata\n\nMinor code touch-up.  We don\u0027t need the \u0027else\u0027.\n\nSigned-off-by: Jonathan Brassow \u003cjbrassow@redhat.com\u003e\nReviewed-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": "a518b86d0b1b6a474f154697dc6f33e0a317ae72",
      "tree": "759b2ddb2a6a7f3745ee88d817652de5568da509",
      "parents": [
        "5339fc2d47d1d720e027b9b832bf5aae8fba2ac0"
      ],
      "author": {
        "name": "Roel Kluin",
        "email": "roel.kluin@gmail.com",
        "time": "Thu Dec 10 23:52:07 2009 +0000"
      },
      "committer": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Thu Dec 10 23:52:07 2009 +0000"
      },
      "message": "dm ioctl: prefer strlcpy over strncpy\n\nstrlcpy() will always null terminate the string.\n\n    The code should already guarantee this as the last bytes are already\n    NULs and the string lengths were restricted before being stored in\n    hc.  Removing the \u0027-1\u0027 becomes necessary so strlcpy() doesn\u0027t\n    lose the last character of a maximum-length string.\n\t- agk\n\nSigned-off-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n"
    }
  ],
  "next": "5339fc2d47d1d720e027b9b832bf5aae8fba2ac0"
}
