The following patches made over Linus's current tree cleanup the locking in libiscsi so we again, for the main SCSI IO path, have the frwd lock only used in the xmit/queue path and the back lock used in the completion path and no taskqueuelock used in all the paths. The EH paths still use both the frwd/back lock though. These patches are still not ready for merging. I have now tested iscsi_tcp, ib_iser, and be2iscsi. Manish tested qedi but it failed. However, this version should work for qedi and bnx2i's normal IO path, but there are still some questions for qedi in patch 18 "qedi: prep driver for switch to blk tags". V3: - Fix iscsi task double free that occurs with bnx2i and qedi. - Use blk tagging for scsi cmd lookups. - Rebase over patches that fixed the timeout/EH use after free race. V2: - Fix issue where we used the back lock to make sure all recv completion paths saw the window reopened falg. - Fix ping_task path, so it accounts for send/completion race Lee had fixed. - Fix bug hit with qedi and bnx2i during testing where I forgot to allow this drivers to preallocate mgmt task resources. - Tested ib_iser and be2iscsi.