)]}'
{
  "commit": "b4a9c7ede96e90f7b1ec009ce7256059295e76df",
  "tree": "19b6322ba27e296a9350921c2e1511fb7c303694",
  "parents": [
    "4b53662bd594941e5e5e540baaaff6a3e66d062c"
  ],
  "author": {
    "name": "Joe Eykholt",
    "email": "jeykholt@cisco.com",
    "time": "Wed Oct 21 16:28:30 2009 -0700"
  },
  "committer": {
    "name": "James Bottomley",
    "email": "James.Bottomley@suse.de",
    "time": "Fri Dec 04 12:00:37 2009 -0600"
  },
  "message": "[SCSI] libfc: fix free of fc_rport_priv with timer pending\n\nTimer crashes were caused by freeing a struct fc_rport_priv\nwith a timer pending, causing the timer facility list to be\ncorrupted.  This was during FC uplink flap tests with a lot\nof targets.\n\nAfter discovery, we were doing an PLOGI on an rdata that was\nin DELETE state but not yet removed from the lookup list.\nThis moved the rdata from DELETE state to PLOGI state.\nIf the PLOGI exchange allocation failed and needed to be\nretried, the timer scheduling could race with the free\nbeing done by fc_rport_work().\n\nWhen fc_rport_login() is called on a rport in DELETE state,\nmove it to a new state RESTART.  In fc_rport_work, when\nhandling a LOGO, STOPPED or FAILED event, look for restart\nstate.  In the RESTART case, don\u0027t take the rdata off the\nlist and after the transport remote port is deleted and\nexchanges are reset, re-login to the remote port.\n\nNote that the new RESTART state also corrects a problem we\nhad when re-discovering a port that had moved to DELETE state.\nIn that case, a new rdata was created, but the old rdata\nwould do an exchange manager reset affecting the FC_ID\nfor both the new rdata and old rdata.  With the new state,\nthe new port isn\u0027t logged into until after any old exchanges\nare reset.\n\nSigned-off-by: Joe Eykholt \u003cjeykholt@cisco.com\u003e\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "49abb839a2239895dd22825c8ef1db36da44a3af",
      "old_mode": 33188,
      "old_path": "drivers/scsi/libfc/fc_rport.c",
      "new_id": "324e156b5d07e15d310e528d26dadab628817a87",
      "new_mode": 33188,
      "new_path": "drivers/scsi/libfc/fc_rport.c"
    },
    {
      "type": "modify",
      "old_id": "4ff14858056232a7e51a5ecd16cdf08edc564756",
      "old_mode": 33188,
      "old_path": "include/scsi/libfc.h",
      "new_id": "1662d73d85a72b4ab5522f0b5032134bf5ea2e24",
      "new_mode": 33188,
      "new_path": "include/scsi/libfc.h"
    }
  ]
}
