Hello Linus, The following is the first round of target core + fabric driver updates for the freshly opened v3.6 merge window. Please go ahead and pull from: git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git for-next This series is based on target-pending/master commit 1765fe5edcb83f53f So I ended up needing to rebase for-next last week to pick up fixes in master that for-next ended up conflicting with, but the bulk of the series has been in linux-next a number of weeks and has getting a good amount of testing. There have been lots of work in a number of areas this past round. The highlights include: *) Break out target_core_cdb.c emulation into SPC/SBC ops (hch) *) Add a parse_cdb method to target backend drivers (hch) *) Move sync_cache + write_same + unmap into spc_ops (hch) *) Use target_execute_cmd for WRITEs in iscsi_target + srpt (hch) *) Offload WRITE I/O backend submission in tcm_qla2xxx + tcm_fc (hch + nab) *) Refactor core_update_device_list_for_node() into enable/disable funcs (agrover) *) Replace the TCM processing thread with a TMR work queue (hch) *) Fix regression in transport_add_device_to_core_hba from TMR conversion (DanC) *) Remove racy, now-redundant check of sess_tearing_down with qla2xxx (roland) *) Add range checking, fix reading of data len + possible underflow in UNMAP (roland) *) Allow for target_submit_cmd() returning errors + convert fabrics (roland + nab) *) Drop bogus struct file usage for iSCSI/SCTP (viro) Thanks again to everyone who has contributed! On the new target fabric module front for-3.6, tcm_vhost is currently in RFC-v4 on the lists + queued up + waiting for ACKs from MST & Co here: http://marc.info/?l=kvm&m=134285417314176&w=2 At this point I think the vhost folks are pretty agreeable for an initial merge of this kernel code, but the vhost-scsi bits in upstream QEMU userspace code will still need to be shorted out. So because of this fact, MST has requested to mark this driver as STAGING o indicate the userspace ABI is not (yet) set in stone. Currently the last item being discussed for initial merge is if this code can just be marked as STAGING + live in drivers/vhost/, or if it should actually reside under drivers/staging/ and go upstream via the staging tree. The last -v4 series of the code keeps the initial merge in drivers/vhost/, which is easier than getting staging to depending on vhost + target-pending.. So the current plan is to send a [GIT PULL] next weekend, in order to give MST a chance to review + ACK as he returns from holiday. Otherwise if folks object, I'll move this code to drivers/staginig/tcm_vhost/ and let Greg-KH decide if he's OK to take it via staging for this round. Thank you! --nab Al Viro (1): iscsi-target: Drop bogus struct file usage for iSCSI/SCTP Andy Grover (7): target: Do not special-case loop and iscsi fabric module loads target/iblock: Add parameter to specify read-only devices target: Remove unneeded double parentheses target: Remove hba param from core_dev_add_lun target: Misc retval cleanups target: Eliminate else using boolean logic target: refactor core_update_device_list_for_node() Christoph Hellwig (26): target: move unrelated code out of transport_generic_cmd_sequencer target: remove control CDB flags target: split overflow and underflow checks into a helper target: split parsing of SPC commands into a separate helper target: add a parse_cdb method to the backend drivers target: move code for CDB emulation target: move transport_generic_prepare_cdb into pscsi target: remove the execute list target: move ref_cmd from the generic se_tmr_req into iscsi code target: remove dead SCF_ flags target: add struct spc_ops + initial ->execute_rw pointer usage target: move sync_cache to struct spc_ops target: move write_same to struct spc_ops target: move unmap to struct spc_ops target: split transport_cmd_check_stop target: remove transport_generic_process_write target: call transport_check_aborted_status from target_execute_cmd target: merge transport_generic_write_pending into transport_generic_new_cmd iscsit: use target_execute_cmd for WRITEs srpt: use target_execute_cmd for WRITEs in srpt_handle_rdma_comp tcm_qla2xxx: Offload WRITE I/O backend submission to tcm_qla2xxx wq tcm_fc: Offload WRITE I/O backend submission to tpg workqueue target: remove transport_generic_handle_data target: simply fabric driver queue full processing target: remove transport_generic_handle_cdb_map target: replace the processing thread with a TMR work queue Dan Carpenter (1): target: NULL dereference on error path Nicholas Bellinger (4): target: Move MAINTENANCE_[IN,OUT] from pscsi_parse_cdb -> spc_parse_cdb target/pscsi: Only emulate REPORT_LUNS for passthrough Revert "target: Do not special-case loop and iscsi fabric module loads" target: Make core_disable_device_list_for_node use pre-refactoring lock ordering Roland Dreier (14): target/iscsi: Remove dead code in lio_get_tpg_from_tpg_item() qla2xxx: Get rid of redundant qla_tgt_sess.tearing_down target: Un-export target_get_sess_cmd() sbp-target: Consolidate duplicated error path code in sbp_handle_command() target: Check sess_tearing_down in target_get_sess_cmd() qla2xxx: Remove racy, now-redundant check of sess_tearing_down target: Remove se_session.sess_wait_list target: Make unnecessarily global se_dev_align_max_sectors() static target: Add generation of LOGICAL BLOCK ADDRESS OUT OF RANGE target: Add range checking to UNMAP emulation target: Fix reading of data length fields for UNMAP commands target: Fix possible integer underflow in UNMAP emulation target: Check number of unmap descriptors against our limit target: Allow for target_submit_cmd() returning errors Sachin Kamat (1): tcm_qla2xxx: Remove duplicate header file inclusion drivers/infiniband/ulp/srpt/ib_srpt.c | 15 +- drivers/scsi/qla2xxx/qla_target.c | 16 +- drivers/scsi/qla2xxx/qla_target.h | 3 +- drivers/scsi/qla2xxx/tcm_qla2xxx.c | 55 +- drivers/target/Makefile | 3 +- drivers/target/iscsi/iscsi_target.c | 30 +- drivers/target/iscsi/iscsi_target_configfs.c | 22 - drivers/target/iscsi/iscsi_target_core.h | 3 +- drivers/target/iscsi/iscsi_target_erl1.c | 4 +- drivers/target/iscsi/iscsi_target_login.c | 66 +- drivers/target/iscsi/iscsi_target_parameters.c | 2 +- drivers/target/iscsi/iscsi_target_tmr.c | 46 +- drivers/target/iscsi/iscsi_target_tpg.c | 27 +- drivers/target/loopback/tcm_loop.c | 11 +- drivers/target/sbp/sbp_target.c | 39 +- drivers/target/target_core_device.c | 170 +- drivers/target/target_core_fabric_configfs.c | 3 +- drivers/target/target_core_file.c | 25 +- drivers/target/target_core_iblock.c | 142 ++- drivers/target/target_core_iblock.h | 1 + drivers/target/target_core_internal.h | 22 +- drivers/target/target_core_pr.c | 6 +- drivers/target/target_core_pscsi.c | 84 +- drivers/target/target_core_rd.c | 17 +- drivers/target/target_core_sbc.c | 581 ++++++ .../{target_core_cdb.c => target_core_spc.c} | 434 ++--- drivers/target/target_core_tmr.c | 57 +- drivers/target/target_core_tpg.c | 14 +- drivers/target/target_core_transport.c | 2088 ++++---------------- drivers/target/tcm_fc/tfc_cmd.c | 10 +- drivers/target/tcm_fc/tfc_io.c | 13 +- drivers/usb/gadget/tcm_usb_gadget.c | 54 +- include/target/target_core_backend.h | 17 +- include/target/target_core_base.h | 56 +- include/target/target_core_fabric.h | 15 +- 35 files changed, 1718 insertions(+), 2433 deletions(-) create mode 100644 drivers/target/target_core_sbc.c rename drivers/target/{target_core_cdb.c => target_core_spc.c} (76%) -- 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