)]}'
{
  "commit": "80a761fd33cf812f771e212139157bf8f58d4b3f",
  "tree": "21ea67ad749c15f25cb8a9278fe9bd7643c0ba31",
  "parents": [
    "a82afdfcb8c0df09776b6458af6b68fc58b2e87b"
  ],
  "author": {
    "name": "Tejun Heo",
    "email": "tj@kernel.org",
    "time": "Fri Jul 03 17:48:17 2009 +0900"
  },
  "committer": {
    "name": "Jens Axboe",
    "email": "jens.axboe@oracle.com",
    "time": "Fri Sep 11 14:33:30 2009 +0200"
  },
  "message": "block: implement mixed merge of different failfast requests\n\nFailfast has characteristics from other attributes.  When issuing,\nexecuting and successuflly completing requests, failfast doesn\u0027t make\nany difference.  It only affects how a request is handled on failure.\nAllowing requests with different failfast settings to be merged cause\nnormal IOs to fail prematurely while not allowing has performance\npenalties as failfast is used for read aheads which are likely to be\nlocated near in-flight or to-be-issued normal IOs.\n\nThis patch introduces the concept of \u0027mixed merge\u0027.  A request is a\nmixed merge if it is merge of segments which require different\nhandling on failure.  Currently the only mixable attributes are\nfailfast ones (or lack thereof).\n\nWhen a bio with different failfast settings is added to an existing\nrequest or requests of different failfast settings are merged, the\nmerged request is marked mixed.  Each bio carries failfast settings\nand the request always tracks failfast state of the first bio.  When\nthe request fails, blk_rq_err_bytes() can be used to determine how\nmany bytes can be safely failed without crossing into an area which\nrequires further retrials.\n\nThis allows request merging regardless of failfast settings while\nkeeping the failure handling correct.\n\nThis patch only implements mixed merge but doesn\u0027t enable it.  The\nnext one will update SCSI to make use of mixed merge.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Niel Lambrechts \u003cniel.lambrechts@gmail.com\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4daae1ee2b237f5c0ec69b792f079f1567cbdb73",
      "old_mode": 33188,
      "old_path": "block/blk-core.c",
      "new_id": "c822239bcc9d2ae3b750c4d9e2e05b3ad38c82ed",
      "new_mode": 33188,
      "new_path": "block/blk-core.c"
    },
    {
      "type": "modify",
      "old_id": "e1999679a4d5156b967729c5e2b6b229a8747954",
      "old_mode": 33188,
      "old_path": "block/blk-merge.c",
      "new_id": "7c9ca01baa45eb33a4b14316a34a4c14c9a72115",
      "new_mode": 33188,
      "new_path": "block/blk-merge.c"
    },
    {
      "type": "modify",
      "old_id": "3fae6add54301495ffbdd1c3e6e37b559b3c4482",
      "old_mode": 33188,
      "old_path": "block/blk.h",
      "new_id": "5ee3d7e72feb0eda7a3abb127f06e82d96142b51",
      "new_mode": 33188,
      "new_path": "block/blk.h"
    },
    {
      "type": "modify",
      "old_id": "c3015736d814baa82ff80676dbf56fa941241c80",
      "old_mode": 33188,
      "old_path": "include/linux/blkdev.h",
      "new_id": "650b6a9cb679f9999b6af1ecbd4c084ac6ad213d",
      "new_mode": 33188,
      "new_path": "include/linux/blkdev.h"
    }
  ]
}
