)]}'
{
  "commit": "f40c67f0f7e2767f80f7cbcbc1ab86c4113c202e",
  "tree": "e8a20f3ceac54ac6edd0f25ffa95c0216a949c52",
  "parents": [
    "523d9297d43cce3fa6de6474b7674329e98743b1"
  ],
  "author": {
    "name": "Kiyoshi Ueda",
    "email": "k-ueda@ct.jp.nec.com",
    "time": "Mon Jun 22 10:12:37 2009 +0100"
  },
  "committer": {
    "name": "Alasdair G Kergon",
    "email": "agk@redhat.com",
    "time": "Mon Jun 22 10:12:37 2009 +0100"
  },
  "message": "dm mpath: change to be request based\n\nThis patch converts dm-multipath target to request-based from bio-based.\n\nBasically, the patch just converts the I/O unit from struct bio\nto struct request.\nIn the course of the conversion, it also changes the I/O queueing\nmechanism.  The change in the I/O queueing is described in details\nas follows.\n\nI/O queueing mechanism change\n-----------------------------\nIn I/O submission, map_io(), there is no mechanism change from\nbio-based, since the clone request is ready for retry as it is.\nHowever, in I/O complition, do_end_io(), there is a mechanism change\nfrom bio-based, since the clone request is not ready for retry.\n\nIn do_end_io() of bio-based, the clone bio has all needed memory\nfor resubmission.  So the target driver can queue it and resubmit\nit later without memory allocations.\nThe mechanism has almost no overhead.\n\nOn the other hand, in do_end_io() of request-based, the clone request\ndoesn\u0027t have clone bios, so the target driver can\u0027t resubmit it\nas it is.  To resubmit the clone request, memory allocation for\nclone bios is needed, and it takes some overheads.\nTo avoid the overheads just for queueing, the target driver doesn\u0027t\nqueue the clone request inside itself.\nInstead, the target driver asks dm core for queueing and remapping\nthe original request of the clone request, since the overhead for\nqueueing is just a freeing memory for the clone request.\n\nAs a result, the target driver doesn\u0027t need to record/restore\nthe information of the original request for resubmitting\nthe clone request.  So dm_bio_details in dm_mpath_io is removed.\n\nmultipath_busy()\n---------------------\nThe target driver returns \"busy\", only when the following case:\n  o The target driver will map I/Os, if map() function is called\n  and\n  o The mapped I/Os will wait on underlying device\u0027s queue due to\n    their congestions, if map() function is called now.\n\nIn other cases, the target driver doesn\u0027t return \"busy\".\nOtherwise, dm core will keep the I/Os and the target driver can\u0027t\ndo what it wants.\n(e.g. the target driver can\u0027t map I/Os now, so wants to kill I/Os.)\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\nAcked-by: Hannes Reinecke \u003chare@suse.de\u003e\nSigned-off-by: Alasdair G Kergon \u003cagk@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f8aeaaa54afe1bd5a65ae3a2bb02d1b7dc323708",
      "old_mode": 33188,
      "old_path": "drivers/md/dm-mpath.c",
      "new_id": "c70604a208979b4b1f87e4a9e98f10b5ce00036d",
      "new_mode": 33188,
      "new_path": "drivers/md/dm-mpath.c"
    }
  ]
}
