)]}'
{
  "log": [
    {
      "commit": "2e93ccc1933d08d32d9bde3784c3823e67b9b030",
      "tree": "1e8ad6a6444fc0a568e35f19628c89cdef9ad512",
      "parents": [
        "81fdb096dbcedcc3b94c7e47b59362b5214891e2"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Dec 08 02:41:09 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:09 2006 -0800"
      },
      "message": "[PATCH] dm: suspend: add noflush pushback\n\nIn device-mapper I/O is sometimes queued within targets for later processing.\nFor example the multipath target can be configured to store I/O when no paths\nare available instead of returning it -EIO.\n\nThis patch allows the device-mapper core to instruct a target to transfer the\ncontents of any such in-target queue back into the core.  This frees up the\nresources used by the target so the core can replace that target with an\nalternative one and then resend the I/O to it.  Without this patch the only\nway to change the target in such circumstances involves returning the I/O with\nan error back to the filesystem/application.  In the multipath case, this\npatch will let us add new paths for existing I/O to try after all the existing\npaths have failed.\n\n    DMF_NOFLUSH_SUSPENDING\n    ----------------------\n\nIf the DM_NOFLUSH_FLAG ioctl option is specified at suspend time, the\nDMF_NOFLUSH_SUSPENDING flag is set in md-\u003eflags during dm_suspend().  It\nis always cleared before dm_suspend() returns.\n\nThe flag must be visible while the target is flushing pending I/Os so it\nis set before presuspend where the flush starts and unset after the wait\nfor md-\u003epending where the flush ends.\n\nTarget drivers can check this flag by calling dm_noflush_suspending().\n\n    DM_MAPIO_REQUEUE / DM_ENDIO_REQUEUE\n    -----------------------------------\n\nA target\u0027s map() function can now return DM_MAPIO_REQUEUE to request the\ndevice mapper core queue the bio.\n\nSimilarly, a target\u0027s end_io() function can return DM_ENDIO_REQUEUE to request\nthe same.  This has been labelled \u0027pushback\u0027.\n\nThe __map_bio() and clone_endio() functions in the core treat these return\nvalues as errors and call dec_pending() to end the I/O.\n\n    dec_pending\n    -----------\n\ndec_pending() saves the pushback request in struct dm_io-\u003eerror.  Once all\nthe split clones have ended, dec_pending() will put the original bio on\nthe md-\u003epushback list.  Note that this supercedes any I/O errors.\n\nIt is possible for the suspend with DM_NOFLUSH_FLAG to be aborted while\nin progress (e.g. by user interrupt).  dec_pending() checks for this and\nreturns -EIO if it happened.\n\n    pushdback list and pushback_lock\n    --------------------------------\n\nThe bio is queued on md-\u003epushback temporarily in dec_pending(), and after\nall pending I/Os return, md-\u003epushback is merged into md-\u003edeferred in\ndm_suspend() for re-issuing at resume time.\n\nmd-\u003epushback_lock protects md-\u003epushback.\nThe lock should be held with irq disabled because dec_pending() can be\ncalled from interrupt context.\n\nQueueing bios to md-\u003epushback in dec_pending() must be done atomically\nwith the check for DMF_NOFLUSH_SUSPENDING flag.  So md-\u003epushback_lock is\nheld when checking the flag.  Otherwise dec_pending() may queue a bio to\nmd-\u003epushback after the interrupted dm_suspend() flushes md-\u003epushback.\nThen the bio would be left in md-\u003epushback.\n\nFlag setting in dm_suspend() can be done without md-\u003epushback_lock because\nthe flag is checked only after presuspend and the set value is already\nmade visible via the target\u0027s presuspend function.\n\nThe flag can be checked without md-\u003epushback_lock (e.g. the first part of\nthe dec_pending() or target drivers), because the flag is checked again\nwith md-\u003epushback_lock held when the bio is really queued to md-\u003epushback\nas described above.  So even if the flag is cleared after the lockless\ncheckings, the bio isn\u0027t left in md-\u003epushback but returned to applications\nwith -EIO.\n\n    Other notes on the current patch\n    --------------------------------\n\n- md-\u003epushback is added to the struct mapped_device instead of using\n  md-\u003edeferred directly because md-\u003eio_lock which protects md-\u003edeferred is\n  rw_semaphore and can\u0027t be used in interrupt context like dec_pending(),\n  and md-\u003eio_lock protects the DMF_BLOCK_IO flag of md-\u003eflags too.\n\n- Don\u0027t issue lock_fs() in dm_suspend() if the DM_NOFLUSH_FLAG\n  ioctl option is specified, because I/Os generated by lock_fs() would be\n  pushed back and never return if there were no valid devices.\n\n- If an error occurs in dm_suspend() after the DMF_NOFLUSH_SUSPENDING\n  flag is set, md-\u003epushback must be flushed because I/Os may be queued to\n  the list already.  (flush_and_out label in dm_suspend())\n\n    Test results\n    ------------\n\nI have tested using multipath target with the next patch.\n\nThe following tests are for regression/compatibility:\n  - I/Os succeed when valid paths exist;\n  - I/Os fail when there are no valid paths and queue_if_no_path is not\n    set;\n  - I/Os are queued in the multipath target when there are no valid paths and\n    queue_if_no_path is set;\n  - The queued I/Os above fail when suspend is issued without the\n    DM_NOFLUSH_FLAG ioctl option.  I/Os spanning 2 multipath targets also\n    fail.\n\nThe following tests are for the normal code path of new pushback feature:\n  - Queued I/Os in the multipath target are flushed from the target\n    but don\u0027t return when suspend is issued with the DM_NOFLUSH_FLAG\n    ioctl option;\n  - The I/Os above are queued in the multipath target again when\n    resume is issued without path recovery;\n  - The I/Os above succeed when resume is issued after path recovery\n    or table load;\n  - Queued I/Os in the multipath target succeed when resume is issued\n    with the DM_NOFLUSH_FLAG ioctl option after table load. I/Os\n    spanning 2 multipath targets also succeed.\n\nThe following tests are for the error paths of the new pushback feature:\n  - When the bdget_disk() fails in dm_suspend(), the\n    DMF_NOFLUSH_SUSPENDING flag is cleared and I/Os already queued to the\n    pushback list are flushed properly.\n  - When suspend with the DM_NOFLUSH_FLAG ioctl option is interrupted,\n      o I/Os which had already been queued to the pushback list\n        at the time don\u0027t return, and are re-issued at resume time;\n      o I/Os which hadn\u0027t been returned at the time return with EIO.\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\nCc: dm-devel@redhat.com\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "45cbcd798354251b99694086af9d57c99e89bb43",
      "tree": "a9822364a37993b72ffecf356aa040e8fefe6cb5",
      "parents": [
        "a3d77d35be6f416a250c528c3ed5c70013a915e8"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Dec 08 02:41:05 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:09 2006 -0800"
      },
      "message": "[PATCH] dm: map and endio return code clarification\n\nTighten the use of return values from the target map and end_io functions.\nValues of 2 and above are now explictly reserved for future use.  There are no\nexisting targets using such values.\n\nThe patch has no effect on existing behaviour.\n\no Reserve return values of 2 and above from target map functions.\n  Any positive value currently indicates \"mapping complete\", but all\n  existing drivers use the value 1.  We now make that a requirement\n  so we can assign new meaning to higher values in future.\n\n  The new definition of return values from target map functions is:\n      \u003c 0 : error\n      \u003d 0 : The target will handle the io (DM_MAPIO_SUBMITTED).\n      \u003d 1 : Mapping completed (DM_MAPIO_REMAPPED).\n      \u003e 1 : Reserved (undefined).  Previously this was the same as \u0027\u003d 1\u0027.\n\no Reserve return values of 2 and above from target end_io functions\n  for similar reasons.\n  DM_ENDIO_INCOMPLETE is introduced for a return value of 1.\n\nTest results:\n\n  I have tested by using the multipath target.\n\n  I/Os succeed when valid paths exist.\n\n  I/Os are queued in the multipath target when there are no valid paths and\nqueue_if_no_path is set.\n\n  I/Os fail when there are no valid paths and queue_if_no_path is not set.\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\nCc: dm-devel@redhat.com\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a3d77d35be6f416a250c528c3ed5c70013a915e8",
      "tree": "6aaecdf78b4da52f8a3b3ded2bd320812e3db6df",
      "parents": [
        "74859364633963cb660c4fa518adca9ab1ca4229"
      ],
      "author": {
        "name": "Kiyoshi Ueda",
        "email": "k-ueda@ct.jp.nec.com",
        "time": "Fri Dec 08 02:41:04 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:29:09 2006 -0800"
      },
      "message": "[PATCH] dm: suspend: parameter change\n\nChange the interface of dm_suspend() so that we can pass several options\nwithout increasing the number of parameters.  The existing \u0027do_lockfs\u0027 integer\nparameter is replaced by a flag DM_SUSPEND_LOCKFS_FLAG.\n\nThere is no functional change to the code.\n\nTest results:\nI have tested \u0027dmsetup suspend\u0027 command with/without the \u0027--nolockfs\u0027\noption and confirmed the do_lockfs value is correctly set.\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\nCc: dm-devel@redhat.com\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "999d816851c3e080412a19558f111d01852d2f04",
      "tree": "8b75a8e97d6fa7c41e81169e9b2ba5f7806e23a9",
      "parents": [
        "3cb4021453a69585e458ec2177677c0c1300dccf"
      ],
      "author": {
        "name": "Bryn Reeves",
        "email": "breeves@redhat.com",
        "time": "Tue Oct 03 01:15:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:16 2006 -0700"
      },
      "message": "[PATCH] dm table: add target flush\n\nThis patch adds support for a per-target dm_flush_fn method.  This is needed\nto allow dm-loop to invalidate page cache mappings in response to BLKFLSBUF\nioctl commands.\n\nSigned-off-by: Bryn Reeves \u003cbreeves@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3cb4021453a69585e458ec2177677c0c1300dccf",
      "tree": "cc2394e0eb52d6bed2fbc523641499714d6159c4",
      "parents": [
        "9faf400f7e51e56ec76b2fc481c3191c01cb3a57"
      ],
      "author": {
        "name": "Bryn Reeves",
        "email": "breeves@redhat.com",
        "time": "Tue Oct 03 01:15:42 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:16 2006 -0700"
      },
      "message": "[PATCH] dm: extract device limit setting\n\nSeparate the setting of device I/O limits from dm_get_device().  dm-loop will\nuse this.\n\nSigned-off-by: Bryn Reeves \u003cbreeves@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "8757b7764f13e336f3c0eb1f634440d4ee4c3a67",
      "tree": "c91b00ace6ee438a9e447bce311808a698e9d487",
      "parents": [
        "cc1092019ce3d9b3e85a285b41e852ff94a6b590"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 03 01:15:36 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:15 2006 -0700"
      },
      "message": "[PATCH] dm table: add target preresume\n\nThis patch adds a target preresume hook.\n\nIt is called before the targets are resumed and if it returns an error the\nresume gets cancelled.\n\nThe crypt target will use this to indicate that it is unable to process I/O\nbecause no encryption key has been supplied.\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "aa129a2247b164173d45da8ad43cca5de9211403",
      "tree": "8adecb4d15d49b0a1fd4b459a24dff22a961d71c",
      "parents": [
        "70abac6e4f4bfb05a8198e22225f9e066239c7a2"
      ],
      "author": {
        "name": "Milan Broz",
        "email": "mbroz@redhat.com",
        "time": "Tue Oct 03 01:15:15 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 03 08:04:13 2006 -0700"
      },
      "message": "[PATCH] dm: support ioctls on mapped devices\n\nExtend the core device-mapper infrastructure to accept arbitrary ioctls on a\nmapped device provided that it has exactly one target and it is capable of\nsupporting ioctls.\n\n[We can\u0027t use unlocked_ioctl because we need \u0027inode\u0027: \u0027file\u0027 might be NULL.\nIs it worth changing this?]\n\nSigned-off-by: Milan Broz \u003cmbroz@redhat.com\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n\nArnd Bergmann \u003carnd@arndb.de\u003e wrote:\n\n\u003e Am Wednesday 21 June 2006 21:31 schrieb Alasdair G Kergon:\n\u003e \u003e static struct block_device_operations dm_blk_dops \u003d {\n\u003e \u003e .open \u003d dm_blk_open,\n\u003e \u003e .release \u003d dm_blk_close,\n\u003e \u003e +.ioctl \u003d dm_blk_ioctl,\n\u003e \u003e .getgeo \u003d dm_blk_getgeo,\n\u003e \u003e .owner \u003d THIS_MODULE\n\u003e\n\u003e I guess this also needs a -\u003ecompat_ioctl method, otherwise it won\u0027t\n\u003e work for ioctl numbers that have a compat_ioctl implementation in the\n\u003e low-level device driver.\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "72d9486169a2a8353e022813185ba2f32d7dde69",
      "tree": "2fe6c382feb3f21d829abf543c54be486007557c",
      "parents": [
        "5c6bd75d06db512515a3781aa97e42df2faf0815"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:35 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] dm: improve error message consistency\n\nTidy device-mapper error messages to include context information\nautomatically.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "c2ade42dd35466d90aa6fc7cc717f396e165492f",
      "tree": "245baeabfea43a3b2654adb962e776a877da0059",
      "parents": [
        "17b2f66f2a39a4e4d1ed456f35ee3bb598e41d35"
      ],
      "author": {
        "name": "David Teigland",
        "email": "teigland@redhat.com",
        "time": "Mon Jun 26 00:27:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] dm: create error table\n\nAdd a library function dm_create_error_table() to create a table that rejects\nany I/O sent to a device with EIO.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "17b2f66f2a39a4e4d1ed456f35ee3bb598e41d35",
      "tree": "64801e095918f685fa83bface7f8289e33bb9bcd",
      "parents": [
        "2b06cfff12f0f87c4bc4d4c4dd76997e72c360ba"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Mon Jun 26 00:27:33 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jun 26 09:58:36 2006 -0700"
      },
      "message": "[PATCH] dm: add exports\n\nMove definitions of core device-mapper functions for manipulating mapped\ndevices and their tables to \u003clinux/device-mapper.h\u003e advertising their\navailability for use elsewhere in the kernel.\n\nProtect the contents of device-mapper.h with ifdef __KERNEL__.  And throw\nin a few formatting clean-ups and extra comments.\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "969429b504ae866d3f8b1cafd68a2c099e305093",
      "tree": "538c0a77049450e434cfc890807822491f766113",
      "parents": [
        "4ee218cd67b385759993a6c840ea45f0ee0a8b30"
      ],
      "author": {
        "name": "NeilBrown",
        "email": "neilb@suse.de",
        "time": "Mon Mar 27 01:17:49 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Mar 27 08:44:59 2006 -0800"
      },
      "message": "[PATCH] dm: make sure QUEUE_FLAG_CLUSTER is set properly\n\nThis flag should be set for a virtual device iff it is set for all\nunderlying devices.\n\nSigned-off-by: Neil Brown \u003cneilb@suse.de\u003e\nAcked-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3ee247ebce93a526f482d6bc714ce796fa85a81a",
      "tree": "7e796c3a2cb37aa5be802783fae23e8d0636caab",
      "parents": [
        "4aac0a63fe8d418a2b74e43708f59380ba379a3b"
      ],
      "author": {
        "name": "Alasdair G Kergon",
        "email": "agk@redhat.com",
        "time": "Wed Feb 01 03:04:55 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Feb 01 08:53:11 2006 -0800"
      },
      "message": "[PATCH] dm: dm-table warning fix\n\ndrivers/md/dm-table.c:500: warning: comparison of distinct pointer types lacks a cast\n\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
