)]}'
{
  "log": [
    {
      "commit": "a366695592ebc9151dd5a248681270f0925d8324",
      "tree": "cbf40a330cdd04733a34fb8f684cfe1d7a979c31",
      "parents": [
        "d17bf602fbfe4a5ab134a90f6c082fa161d398ee"
      ],
      "author": {
        "name": "Abhijeet Joglekar",
        "email": "abjoglek@cisco.com",
        "time": "Fri May 01 10:01:26 2009 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Sat May 23 15:44:18 2009 -0500"
      },
      "message": "[SCSI] libfc,fcoe,fnic: Separate rport and lport max retry counts\n\nThis allows fnic to configure number of retries for lport and rport\nseparately.\n\nSigned-off-by: Abhijeet Joglekar \u003cabjoglek@cisco.com\u003e\nAcked-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "b4c6f54632ad664a3d9e7f05e4ea0f1803e32755",
      "tree": "6d419c4a2cdf1e58ae8044d006c53df9cb856f07",
      "parents": [
        "76f6804e7e7bb836cbdf4a73fe6c5485e4cc04c2"
      ],
      "author": {
        "name": "Abhijeet Joglekar",
        "email": "abjoglek@cisco.com",
        "time": "Tue Apr 21 16:27:04 2009 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Mon Apr 27 10:18:57 2009 -0500"
      },
      "message": "[SCSI] libfc: Track rogue remote ports\n\nRogue ports are currently not tracked on any list. The only reference\nto them is through any outstanding exchanges pending on the rogue ports.\nIf the module is removed while a retry is set on a rogue port\n(say a Plogi retry for instance), this retry is not cancelled because there\nis no reference to the rogue port in the discovery rports list. Thus the\nlocal port can clean itself up, delete the exchange pool, and then the\nrogue port timeout can fire and try to start up another exchange.\n\nThis patch tracks the rogue ports in a new list disc-\u003erogue_rports. Creating\na new list instead of using the disc-\u003erports list keeps remote port code\nchange to a minimum.\n\n1)  Whenever a rogue port is created, it is immediately added to the\ndisc-\u003erogue_rports list.\n\n2) When the rogues port goes to ready, it is removed from the rogue list\nand the real remote port is added to the disc-\u003erports list\n\n3) The removal of the rogue from the disc-\u003erogue_rports list is done in\nthe context of the fc_rport_work() workQ thread in discovery callback.\n\n4) Real rports are removed from the disc-\u003erports list like before. Lookup\nis done only in the real rports list. This avoids making large changes\nto the remote port code.\n\n5) In fc_disc_stop_rports, the rogues list is traversed in addition to the\nreal list to stop the rogue ports and issue logoffs on them. This way, rogue\nports get cleaned up when the local port goes away.\n\n6) rogue remote ports are not removed from the list right away, but\nremoved late in fc_rport_work() context, multiple threads can find the same\nremote port in the list and call rport_logoff(). Rport_logoff() only\ncontinues with the logoff if port is not in NONE state, thus preventing\nmultiple logoffs and multiple list deletions.\n\n7) Since the rport is removed from the disc list at a later stage\n(in the disc callback), incoming frames can find the rport even if\nrport_logoff() has been called on the rport. When rport_logoff() is called,\nthe rport state is set to NONE, and we are trying to cancel all exchanges\nand retries on that port. While in this state, if an incoming\nPlogi/Prli/Logo or other frames match the rport, we should not reply\nbecause the rport is in the NONE state. Just drop the frame, since the\nrport will be deleted soon in the disc callback (fc_rport_work)\n\n8)  In fc_disc_single(), remove rport lookup and call to fc_disc_del_target.\nfc_disc_single() is called from recv_rscn_req() where rport lookup\nand rport_logoff is already done.\n\nSigned-off-by: Abhijeet Joglekar \u003cabjoglek@cisco.com\u003e\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "a0a25da2a495a889664dc946942b8666665cd1e1",
      "tree": "f3ac1dd6adb76490afa828298e71992ba5045d8f",
      "parents": [
        "fdd78027fd472351783fb6110a72d991c1a07402"
      ],
      "author": {
        "name": "Vasu Dev",
        "email": "vasu.dev@intel.com",
        "time": "Tue Mar 17 11:42:29 2009 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Apr 03 09:23:07 2009 -0500"
      },
      "message": "[SCSI] fcoe, libfc: fix double fcoe_softc memory alloc\n\nThe foce_softc mem was reserved by libfc_host_alloc as well as\nby fcoe_host_alloc.\n\nRemoves one liner fcoe_host_alloc completely, instead directly calls\nlibfc_host_alloc to alloc scsi_host with libfc for just one fcoe_softc\nas fcoe private data.\n\nMoves libfc_host_alloc to libfc.h since it is a libfc API, placed\nlport_priv API adjacent to libfc_host_alloc since this is related\nto scsi_host priv data.\n\nSigned-off-by: Vasu Dev \u003cvasu.dev@intel.com\u003e\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "582b45bc577f78b5bfff3db874594ce2d962b846",
      "tree": "b0cfe95b235aeca9b967cba8446db58b8a102533",
      "parents": [
        "5e5e92df49d4dfbef9ba981297c7f76d189376ac"
      ],
      "author": {
        "name": "Robert Love",
        "email": "robert.w.love@intel.com",
        "time": "Tue Mar 31 15:51:50 2009 -0700"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Apr 03 09:22:58 2009 -0500"
      },
      "message": "[SCSI] fcoe: Use per-CPU kernel function for dev_stats instead of an array\n\nRemove the hotplug creation of dev_stats, we allocate for all possible CPUs\nnow when we allocate the lport.\n\nv2: Durring the 2.6.30 merge window, before these patches were comitted,\n\u0027percpu_ptr\u0027 was renamed \u0027per_cpu_ptr\u0027. This latest update updates this\npatch for the name change.\n\nSigned-off-by: Yi Zou \u003cyi.zou@intel.com\u003e\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "b277d2aa9a4d969002c4157bf77b76b9ad9ca04a",
      "tree": "1054ff4ab2d03eaaa527919380ed6334233f632b",
      "parents": [
        "39ca9a065a5a0a6f2f0cd648090a979ba3f4f018"
      ],
      "author": {
        "name": "Yi Zou",
        "email": "yi.zou@intel.com",
        "time": "Fri Feb 27 14:07:21 2009 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Mar 13 15:15:15 2009 -0500"
      },
      "message": "[SCSI] libfc: add support of large receive offload by ddp in fc_fcp\n\nWhen LLD supports direct data placement (ddp) for large receive of an scsi\ni/o coming into fc_fcp, we call into libfc_function_template\u0027s ddp_setup()\nto prepare for a ddp of large receive for this read I/O. When I/O is complete,\nwe call the corresponding ddp_done() to get the length of data ddped as well\nas to let LLD do clean up.\n\nfc_fcp_ddp_setup()/fc_fcp_ddp_done() are added to setup and complete a ddped\nread I/O described by the given fc_fcp_pkt. They would call into corresponding\nddp_setup/ddp_done implemented by the fcoe layer. Eventually, fcoe layer calls\ninto LLD\u0027s ddp_setup/ddp_done provided through net_device\n\nSigned-off-by: Yi Zou \u003cyi.zou@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "ea1e9a9df5e1fde7ad8878c85b4a097cad0ddcea",
      "tree": "5594c002619125f8976c7d3dacdd6791db497d2e",
      "parents": [
        "4d288d5767f853bfca25adc7b6030dc95518cb2e"
      ],
      "author": {
        "name": "Yi Zou",
        "email": "yi.zou@intel.com",
        "time": "Fri Feb 27 14:07:04 2009 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Mar 13 15:13:48 2009 -0500"
      },
      "message": "[SCSI] fcoe, libfc: check offload features from LLD through netdev\n\nThis checks if net_devices supports FCoE offload ops in netdev_ops and it\nif it does, then sets up the corresponding flags in the associated fc_lport.\n\nFor large send offload, the maximum length supported in one large send is now\ndescribed by the added lso_max in fc_lport, which is setup initially from\nnetdev-\u003egso_max_size.\n\nSigned-off-by: Yi Zou \u003cyi.zou@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "34f42a070fc98f5dc07e9fa2338b7b8d1dc347eb",
      "tree": "7e08edd537159be8a4fa341e7022cafd6f13b9e4",
      "parents": [
        "0ae4d4ae47d2ccbcad813b0d6d8fe12590c7d648"
      ],
      "author": {
        "name": "Robert Love",
        "email": "robert.w.love@intel.com",
        "time": "Fri Feb 27 10:55:45 2009 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Tue Mar 10 09:04:40 2009 -0500"
      },
      "message": "[SCSI] libfc, fcoe: Fix kerneldoc comments\n\n1) Added \u0027()\u0027 for function names in kerneldoc comments\n\n2) Changed comment bookends from \u0027**/\u0027 to \u0027*/\u0027. The comment on the the\n   mailing list was that \u0027**/\u0027 \"is consistently unconventional.  Not\n   wrong, just odd.\" The Documentation/kernel-doc-nano-HOWTO.txt\n   states that kerneldoc comment blocks should end with \u0027**/\u0027 but most\n   (if not all) instance I found under drivers/scsi/ were only using\n   the \u0027*/\u0027 so I converted to that style.\n\n3) Removed incorrect linebreaks in kerneldoc comments where found\n\n4) Removed a few unnecessary blank comment lines in kerneldoc comment\n   blocks\n\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "0ae4d4ae47d2ccbcad813b0d6d8fe12590c7d648",
      "tree": "a58434d723ef74a7282c29835dec8496326a14a9",
      "parents": [
        "efaf5c085dd2d31757b0ff7886970dfddd8d1808"
      ],
      "author": {
        "name": "Robert Love",
        "email": "robert.w.love@intel.com",
        "time": "Fri Feb 27 10:55:39 2009 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Mar 06 15:45:32 2009 -0600"
      },
      "message": "[SCSI] libfc: Cleanup libfc_function_template comments\n\nMade the comments more like the comments for struct scsi_host_template.\n\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "5101ff99f59aefb72e0c96e82aa32048ac9f8425",
      "tree": "83fba57c7cf542eed4466265619632e7d804eb88",
      "parents": [
        "f7db2c150cf5082cf74555f30a1305938041de80"
      ],
      "author": {
        "name": "Robert Love",
        "email": "robert.w.love@intel.com",
        "time": "Fri Feb 27 10:55:18 2009 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Mar 06 15:41:01 2009 -0600"
      },
      "message": "[SCSI] libfc: Don\u0027t violate transport template for rogue port creation\n\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "bc0e17f691085315ae9303eb5b0883fe16dfe6b1",
      "tree": "53138e80aec810604d4eca4626e4f8df65376ccc",
      "parents": [
        "a7e84f2b83f17f8f11da34ccef3ba5a862dc0182"
      ],
      "author": {
        "name": "Vasu Dev",
        "email": "vasu.dev@intel.com",
        "time": "Fri Feb 27 10:54:57 2009 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Mar 06 15:37:49 2009 -0600"
      },
      "message": "[SCSI] libfc, fcoe: fixed locking issues with lport-\u003elp_mutex around lport-\u003elink_status\n\nThe fcoe_xmit could call fc_pause in case the pending skb queue len is larger\nthan FCOE_MAX_QUEUE_DEPTH, the fc_pause was trying to grab lport-\u003elp_muex to\nchange lport-\u003elink_status and that had these issues :-\n\n1. The fcoe_xmit was getting called with bh disabled, thus causing\n\"BUG: scheduling while atomic\" when grabbing lport-\u003elp_muex with bh disabled.\n\n2. fc_linkup and fc_linkdown function calls lport_enter function with\nlport-\u003elp_mutex held and these enter function in turn calls fcoe_xmit to send\nlport related FC frame, e.g. fc_linkup \u003d\u003e fc_lport_enter_flogi to send flogi\nreq. In this case grabbing the same lport-\u003elp_mutex again in fc_puase from\nfcoe_xmit would cause deadlock.\n\nThe lport-\u003elp_mutex was used for setting FC_PAUSE in fcoe_xmit path but\nFC_PAUSE bit was not used anywhere beside just setting and clear this\nbit in lport-\u003elink_status, instead used a separate field qfull in fc_lport\nto eliminate need for lport-\u003elp_mutex to track pending queue full condition\nand in turn avoid above described two locking issues.\n\nAlso added check for lp-\u003eqfull in fc_fcp_lport_queue_ready to trigger\nSCSI_MLQUEUE_HOST_BUSY when lp-\u003eqfull is set to prevent more scsi-ml cmds\nwhile lp-\u003eqfull is set.\n\nThis patch eliminated FC_LINK_UP and FC_PAUSE and instead used dedicated\nfields in fc_lport for this, this simplified all related conditional\ncode.\n\nAlso removed fc_pause and fc_unpause functions and instead used newly added\nlport-\u003eqfull directly in fcoe.\n\nSigned-off-by: Vasu Dev \u003cvasu.dev@intel.com\u003e\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "1f6ff364ceda516f88351a8ab640e656beed0b26",
      "tree": "227a5f6e39372eaf3c898d1de8feb2b88df707b0",
      "parents": [
        "33dd6f92a1a7ad85c54d47fd9d73371a32c0bde4"
      ],
      "author": {
        "name": "Abhijeet Joglekar",
        "email": "abjoglek@cisco.com",
        "time": "Fri Feb 27 10:54:35 2009 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Fri Mar 06 15:35:47 2009 -0600"
      },
      "message": "[SCSI] libfc: Pass lport in exch_mgr_reset\n\nfc_exch_mgr structure is private to fc_exch.c. To export exch_mgr_reset to\ntransport, transport needs access to the exch manager. Change\nexch_mgr_reset to use lport param which is the shared structure between\nlibFC and transport.\n\nAlternatively, fc_exch_mgr definition can be moved to libfc.h so that lport\ncan be accessed from mp*.\n\nSigned-off-by: Abhijeet Joglekar \u003cabjoglek@cisco.com\u003e\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    },
    {
      "commit": "42e9a92fe6a9095bd68a379aaec7ad2be0337f7a",
      "tree": "344f8d9f72a3d926d652632abb8d319f8e32343a",
      "parents": [
        "f032c2f7cdaae0e8907cd3b26426fc651dc5c275"
      ],
      "author": {
        "name": "Robert Love",
        "email": "robert.w.love@intel.com",
        "time": "Tue Dec 09 15:10:17 2008 -0800"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@HansenPartnership.com",
        "time": "Mon Dec 29 11:24:33 2008 -0600"
      },
      "message": "[SCSI] libfc: A modular Fibre Channel library\n\nlibFC is composed of 4 blocks supported by an exchange manager\nand a framing library. The upper 4 layers are fc_lport, fc_disc,\nfc_rport and fc_fcp. A LLD that uses libfc could choose to\neither use libfc\u0027s block, or using the transport template\ndefined in libfc.h, override one or more blocks with its own\nimplementation.\n\nThe EM (Exchange Manager) manages exhcanges/sequences for all\ncommands- ELS, CT and FCP.\n\nThe framing library frames ELS and CT commands.\n\nThe fc_lport block manages the library\u0027s representation of the\nhost\u0027s FC enabled ports.\n\nThe fc_disc block manages discovery of targets as well as\nhandling changes that occur in the FC fabric (via. RSCN events).\n\nThe fc_rport block manages the library\u0027s representation of other\nentities in the FC fabric. Currently the library uses this block\nfor targets, its peer when in point-to-point mode and the\ndirectory server, but can be extended for other entities if\nneeded.\n\nThe fc_fcp block interacts with the scsi-ml and handles all\nI/O.\n\nSigned-off-by: Robert Love \u003crobert.w.love@intel.com\u003e\n[jejb: added include of delay.h to fix ppc64 compile prob spotted by sfr]\nSigned-off-by: James Bottomley \u003cJames.Bottomley@HansenPartnership.com\u003e\n"
    }
  ]
}
