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