[PATCH 00/22] FCoE VN2VN fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

after long and painful debugging session I finally managed to get
FCoE VN2VN running on a point-to-point connection.
There wasn't so much a single issue, but rather an entire slew
of rather annoying problems:
- rport kref handling is bonkers. Taking a kref once and releasing
  it when attempting to free the structure is just not what krefs
  are designed for.
- The FCoE stack reacts allergic to out-of-order frames. While in
  theory this shouldn't happen, it's hard to avoid with modern HW.
  Plus I even had been seeing this when using virtio. And to make
  matters worse, it would occasionally just drop any out of order
  frames, while handling them correctly in other cases.
- Failed FC REC/ABTS will cause an I/O error. There are perfectly
  legit cases where a REC might fail (eg if the exchange was already
  sent and it just got stuck in the RX queue), so it should not
  considered an error. A simple retry will be sufficient.
- FLOGI are handled ... interestingly. If both ends attempt an
  FLOGI the state machine is advanved on the incoming FLOGI
  request, so the stack gets confused when the (original) FLOGI
  ACC is being returned.

Additionally I've added lots of debugging statements and some
general cleanup.

As usual, comments and reviews are welcome.

The entire patchset can be found at
git://git.kernel.org/hare/scsi-devel/h/vn2vn

Hannes Reinecke (22):
  libfc: Revisit kref handling
  libfc: additional debugging messages
  fcoe: FIP debugging
  libfc: spurious I/O error under high load
  libfc: Do not attempt to login if the port is already started
  libfc: Debug PRLI failures
  fcoe: filter out frames from invalid vlans
  fcoe: make R_A_TOV and E_D_TOV configurable
  libfc: use configured lport R_A_TOV when sending exchange
  libfc: use configured e_d_tov for remote port state retries
  fcoe: inhibit writing invalid values into the 'enabled' attribute
  libfc: don't fail sequence abort for completed exchanges
  libfc: do not overwrite DID_TIME_OUT status
  libfc: use error code for fc_rport_error()
  libfc: frame alloc failure messages
  fc: add missing ELS explanation values
  libfc: Send LS_RJT responses on frame allocation failure
  libfc: don't advance state machine for incoming FLOGI
  libfc: Implement RTV responder
  libfc: Do not drop out-of-order frames
  libfc: reset timeout on queue full
  fcoe: set default TC priority

 drivers/scsi/fcoe/fcoe.c       |  21 ++-
 drivers/scsi/fcoe/fcoe_ctlr.c  |  63 +++++++-
 drivers/scsi/fcoe/fcoe_sysfs.c |  83 +++++++++-
 drivers/scsi/libfc/fc_exch.c   |  64 ++++++--
 drivers/scsi/libfc/fc_fcp.c    | 131 ++++++++++++----
 drivers/scsi/libfc/fc_rport.c  | 349 ++++++++++++++++++++++++++++++-----------
 include/scsi/libfc.h           |   8 +-
 include/uapi/scsi/fc/fc_els.h  |  17 +-
 8 files changed, 584 insertions(+), 152 deletions(-)

-- 
1.8.5.6

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux