linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/22] FCoE VN2VN fixes
@ 2016-08-03 13:13 Hannes Reinecke
  2016-08-03 13:13 ` [PATCH 01/22] libfc: Revisit kref handling Hannes Reinecke
                   ` (22 more replies)
  0 siblings, 23 replies; 56+ messages in thread
From: Hannes Reinecke @ 2016-08-03 13:13 UTC (permalink / raw)
  To: Martin K. Petersen
  Cc: Christoph Hellwig, linux-scsi, Johannes Thumshirn, Chad Dupuis,
	Hannes Reinecke

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


^ permalink raw reply	[flat|nested] 56+ messages in thread

end of thread, other threads:[~2016-08-18 14:45 UTC | newest]

Thread overview: 56+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-03 13:13 [PATCH 00/22] FCoE VN2VN fixes Hannes Reinecke
2016-08-03 13:13 ` [PATCH 01/22] libfc: Revisit kref handling Hannes Reinecke
2016-08-04 10:59   ` Johannes Thumshirn
2016-08-18 14:43   ` Chad Dupuis
2016-08-03 13:13 ` [PATCH 02/22] libfc: additional debugging messages Hannes Reinecke
2016-08-03 17:33   ` Bart Van Assche
2016-08-04  6:05     ` Hannes Reinecke
2016-08-04 11:02   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 03/22] fcoe: FIP debugging Hannes Reinecke
2016-08-03 17:36   ` Bart Van Assche
2016-08-04  6:07     ` Hannes Reinecke
2016-08-04 11:09   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 04/22] libfc: spurious I/O error under high load Hannes Reinecke
2016-08-04 11:15   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 05/22] libfc: Do not attempt to login if the port is already started Hannes Reinecke
2016-08-04 11:18   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 06/22] libfc: Debug PRLI failures Hannes Reinecke
2016-08-04 11:21   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 07/22] fcoe: filter out frames from invalid vlans Hannes Reinecke
2016-08-04 11:35   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 08/22] fcoe: make R_A_TOV and E_D_TOV configurable Hannes Reinecke
2016-08-04 11:52   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 09/22] libfc: use configured lport R_A_TOV when sending exchange Hannes Reinecke
2016-08-04 12:04   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 10/22] libfc: use configured e_d_tov for remote port state retries Hannes Reinecke
2016-08-04 12:08   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 11/22] fcoe: inhibit writing invalid values into the 'enabled' attribute Hannes Reinecke
2016-08-03 17:25   ` Bart Van Assche
2016-08-04  6:02     ` Hannes Reinecke
2016-08-03 13:13 ` [PATCH 12/22] libfc: don't fail sequence abort for completed exchanges Hannes Reinecke
2016-08-04 13:29   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 13/22] libfc: do not overwrite DID_TIME_OUT status Hannes Reinecke
2016-08-04 13:30   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 14/22] libfc: use error code for fc_rport_error() Hannes Reinecke
2016-08-04 13:40   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 15/22] libfc: frame alloc failure messages Hannes Reinecke
2016-08-04 13:45   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 16/22] fc: add missing ELS explanation values Hannes Reinecke
2016-08-04 13:54   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 17/22] libfc: Send LS_RJT responses on frame allocation failure Hannes Reinecke
2016-08-04 13:58   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 18/22] libfc: don't advance state machine for incoming FLOGI Hannes Reinecke
2016-08-04 13:59   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 19/22] libfc: Implement RTV responder Hannes Reinecke
2016-08-04 14:03   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 20/22] libfc: Do not drop out-of-order frames Hannes Reinecke
2016-08-04 14:03   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 21/22] libfc: reset timeout on queue full Hannes Reinecke
2016-08-04 14:08   ` Johannes Thumshirn
2016-08-03 13:13 ` [PATCH 22/22] fcoe: set default TC priority Hannes Reinecke
2016-08-03 13:38   ` kbuild test robot
2016-08-04 14:59 ` [PATCH 00/22] FCoE VN2VN fixes Bart Van Assche
2016-08-05  7:43   ` Hannes Reinecke
2016-08-05 15:33     ` Bart Van Assche
2016-08-05 16:16       ` Hannes Reinecke
2016-08-07  0:12         ` Bart Van Assche

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).