)]}'
{
  "commit": "466c08c71a7dc19528e9b336c5bfa5ec41730c7c",
  "tree": "586cdcc5d9bd5b5bccd5b8594a5b5379b722b79f",
  "parents": [
    "05b080fc933bb068b32fa119db00e8efcc10e3bd"
  ],
  "author": {
    "name": "Shaohua Li",
    "email": "shaohua.li@intel.com",
    "time": "Tue Jan 10 11:27:01 2012 +0800"
  },
  "committer": {
    "name": "James Bottomley",
    "email": "JBottomley@Parallels.com",
    "time": "Mon Jan 16 11:54:04 2012 +0400"
  },
  "message": "[SCSI] don\u0027t change sdev starvation list order without request dispatched\n\nThe sdev is deleted from starved list and then try to dispatch from this\ndevice. It\u0027s quite possible the sdev can\u0027t eventually dispatch a request,\nthen the sdev will be in starved list tail. This isn\u0027t fair.\nThere are two cases here:\n1. unplug path. scsi_request_fn() calls to scsi_target_queue_ready(), then\nthe dev is removed from starved list, but quite possible host queue isn\u0027t\nready, the dev is moved to starved list without dispatching any request.\n2. scsi_run_queue path. It deletes the dev from starved list first (both\nglobal and local starved lists), then handles the dev. Then we could have\nthe same process like case 1.\n\nThis patch fixes the first case. Case 2 isn\u0027t fixed, because there is a\nrare case scsi_run_queue finds host isn\u0027t busy but scsi_request_fn finds\nhost is busy (other CPU is faster to get host queue depth). Not deleting\nthe dev from starved list in scsi_run_queue will keep scsi_run_queue\nlooping (though this is very rare case, because host will become busy).\nFortunately fixing case 1 already gives big improvement for starvation in\nmy test. In a 12 disk JBOD setup, running file creation under EXT4, this\ngives 12% more throughput.\n\nSigned-off-by: Shaohua Li \u003cshaohua.li@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJBottomley@Parallels.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f85cfa6c47b5212982bcbfcd9065936c27360f3d",
      "old_mode": 33188,
      "old_path": "drivers/scsi/scsi_lib.c",
      "new_id": "b2c95dbe9d651d3a82b9e7a269ec3b5bd7e7c167",
      "new_mode": 33188,
      "new_path": "drivers/scsi/scsi_lib.c"
    }
  ]
}
