[PATCH v3 00/34] iser target for 3.19

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

 



Hey Nic & Co,

Addressed comments from Or Gerlitz.

This series mainly consists of:

Patches 1-14: Some error flow fixes for live target stack shutdown
	and cable pull with stress IO scenarios, as well as some
	fixes in the area of bond failover scenarios.
	(stable 3.10+ material)

Patches 15-19: expose t10_pi attribute correctly and fix a crash
	due to a bad dereference.
	(stable 3.15+ material)

Patch 20: Workaround for live target stack unload in the presence
	of multiple (60+) of active sessions.

Patches 21-29: Some completion processing modifications done for
	simplification and enhancements.

Patches 30-31: Some more fixes needed in the live shutdown case.

Patches 32-33: Some logging refactoring. It is much easier to
	instruct a user to increase the log level in this case.

Patch 34: Nit - remove code duplication.

While this set makes things better, there is still some work
left to do especially in the area of multi-session error flows.

I ran some performance benchmarks on this set, I was able to
get iser target to service ~2100K read IOPs and ~1750K write
IOPs using 4 2.6GHz Xeon cores against a single initiator
(single 40GE/FDR link). More work can be done in this area indeed,
no good reason why we wouldn't get these numbers with a single core.
Some of the todos are:
- Avoid data copy for ImmediateData writes (would require to refactor
  the post_recv buffers logic).
- Polling the CQ from a kthread instead of a work-queue which would
  benefit in:
  * better concurrency in the multi-connection case as we won't
    serialize completion works which are bound to the same MSIX vector.
  * Reduce interrupts by avoiding re-arming the CQ to maintain
    fairness between multiple connections, we can just
    schedule()/cond_resched() instead.
- Closer examination of the locking schemes taken in iscsit layer.
- Reordering iser structures to fit hot items into cachelines.


Changes from v2:
- Addressed multiple code review comments from Or.
- Addressed smatch warning from Dan Carpenter in patch 13.
- Squashed patch to postpone QP destruction to the patch before since
  it fixes a BUG resulting from it.
- added some missing log changes.

Changes from v1:
- Moved logging patches to the end.
- Reordered patches in the order of stable 3.10+, stable 3.15+ and
  enhancements/improvements
- Added completion precessing modification patches and some more
  minor fixes that have been laying around.


Changes from v0:
- Fix CHAP and mutual CHAP login breakage introduced in patch #9
  kudos to Slava for staying alert
- Fix mthca/mlx4 HCAs breakage introduced in patch #13 (non supporting PI)
  kudos to Adam for finding this quickly
- Removed patch "Remove t10_pi attribute altogether".
  Instead, included patch "Expose supported protection ops according to t10_pi"
  if t10_pi is not set we fall to SW mode.
- Added patch #21 to get rid of redundant wait for logout completion

Sagi Grimberg (34):
  iscsi-target: Add call to wait_conn in establishment error flow
  iser-target: Destroy the connection when getting a connect error
    event
  iser-target: Initiate connection termination only once
  iser-target: Don't deffer disconnected handler to a work
  iser-target: Reject connect request in failure path
  iser-target: Introduce ISER_CONN_FULL_FEATURE state
  iser-target: Parallelize CM connection establishment
  iser-target: Use kref_get_unless_zero in connected_handler
  iser-target: Acquire conn_mutex when changing connection state
  iser-target: Don't override cm_id context
  iser-target: Move cma_id setup to a function
  iser-target: Handle ADDR_CHANGE event for listener cm_id
  iser-target: Deffer the last part of wait_conn to a work
  iser-target: Decrement completion context active_qps in error flow
  iser-target: Move PI context allocation to a function
  iser-target: Move PI handling to a routine
  iser-target: Allocate PI contexts dynamically
  iser-target: Fix NULL dereference in SW mode DIF
  iscsi,iser-target: Expose supported protection ops according to
    t10_pi
  iser-target: Work-around live target stack shutdown resource cleanup
  iser-target: Remove interrupt coalescing
  iser-target: Unite error completion handler for RX and TX
  iser-target: Cast wr_id with uintptr_t instead of unsinged long
  iser-target: Centralize completion elements to a context
  iser-target: Use single CQ for TX and RX
  iser-target: Remove redundant call to isert_conn_terminate
  iser-target: Remove an atomic operation from the IO path
  iser-target: Introduce isert_poll_budget
  iser-target: Reduce CQ lock contention by batch polling
  iser-target: Don't wait for session commands from completion context
  iser-target: Fix logout sequence
  iser-target: Adjust log levels and prettify some prints
  iser-target: Remove code duplication
  iscsi-target: Don't clear transport private cmd context

 drivers/infiniband/ulp/isert/ib_isert.c   | 1612 +++++++++++++++--------------
 drivers/infiniband/ulp/isert/ib_isert.h   |   80 ++-
 drivers/target/iscsi/iscsi_target_login.c |   10 +-
 drivers/target/iscsi/iscsi_target_util.c  |    2 +-
 4 files changed, 905 insertions(+), 799 deletions(-)

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




[Index of Archives]     [Linux SCSI]     [Kernel Newbies]     [Linux SCSI Target Infrastructure]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Device Mapper]

  Powered by Linux