)]}'
{
  "commit": "253b92ecbd3d2e9f5a79fc7632c89ac74bff16c4",
  "tree": "8153c5044d97f5a46ee57329a9895256ab161500",
  "parents": [
    "3f9dd27a22ff79b6b6c4eccd19e4063bff0ddc7e"
  ],
  "author": {
    "name": "Darrick J. Wong",
    "email": "djwong@us.ibm.com",
    "time": "Tue Nov 14 09:55:41 2006 -0500"
  },
  "committer": {
    "name": "Jeff Garzik",
    "email": "jeff@garzik.org",
    "time": "Tue Nov 14 09:55:41 2006 -0500"
  },
  "message": "libata: fix double-completion on error\n\nA curious thing happens, however, when ata_qc_new_init fails to get\nan ata_queued_cmd:\n\nFirst, ata_qc_new_init handles the failure like this:\n    cmd-\u003eresult \u003d (DID_OK \u003c\u003c 16) | (QUEUE_FULL \u003c\u003c 1);\n    done(cmd);\n\nThen, we return to ata_scsi_translate and do this:\n    err_mem:\n        cmd-\u003eresult \u003d (DID_ERROR \u003c\u003c 16);\n        done(cmd);\n\nIt appears to me that first we set a status code indicating that we\u0027re\nok but the device queue is full and finish the command,  but then\nwe blow away that status code and replace it with an error flag and\nfinish the command a second time!  That does not seem to be desirable\nbehavior since we merely want the I/O to wait until a command slot\nfrees up, not send errors up the block layer.\n\nIn the err_mem case, we should simply exit out of ata_scsi_translate\ninstead.\n\nSigned-off-by: Darrick J. Wong \u003cdjwong@us.ibm.com\u003e\nSigned-off-by: Jeff Garzik \u003cjeff@garzik.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7af2a4ba49905e068d7eb38c4ad0f778ccc3702e",
      "old_mode": 33188,
      "old_path": "drivers/ata/libata-scsi.c",
      "new_id": "5c1fc467fc7fd0ed25172def2417f6c420993cf3",
      "new_mode": 33188,
      "new_path": "drivers/ata/libata-scsi.c"
    }
  ]
}
