1. 08 5月, 2013 1 次提交
  2. 25 4月, 2013 1 次提交
    • N
      iscsi-target: Refactor RX PDU logic + export request PDU handling · 3e1c81a9
      Nicholas Bellinger 提交于
      This patch refactors existing traditional iscsi RX side PDU handling
      to use iscsit_transport, and exports the necessary logic for external
      transport modules.
      
      This includes:
      
      - Refactor iscsit_handle_scsi_cmd() into PDU setup / processing
      - Add updated iscsit_handle_scsi_cmd() for tradtional iscsi code
      - Add iscsit_set_unsoliticed_dataout() wrapper
      - Refactor iscsit_handle_data_out() into PDU check / processing
      - Add updated iscsit_handle_data_out() for tradtional iscsi code
      - Add iscsit_handle_nop_out() + iscsit_handle_task_mgt_cmd() to
        accept pre-allocated struct iscsi_cmd
      - Add iscsit_build_r2ts_for_cmd() caller for iscsi_target_transport
        to handle ISTATE_SEND_R2T for TX immediate queue
      - Refactor main traditional iscsi iscsi_target_rx_thread() PDU switch
        into iscsi_target_rx_opcode() using iscsit_allocate_cmd()
      - Turn iscsi_target_rx_thread() process context into NOP for
        ib_isert side work-queue.
      
      v5 changes:
      
      - Make iscsit_handle_scsi_cmd() static (Fengguang)
      - Fix iscsit_handle_scsi_cmd() exception se_cmd leak (nab)
      
      v3 changes:
      - Add extra target_put_sess_cmd call in iscsit_add_reject_from_cmd
        after completion
      
      v2 changes:
      
      - Disable iscsit_ack_from_expstatsn() usage for RDMAExtentions=Yes
      - Disable iscsit_allocate_datain_req() usage for RDMAExtentions=Yes
      - Add target_get_sess_cmd() reference counting to
        iscsit_setup_scsi_cmd()
      - Add TFO->lio_check_stop_free() fabric API caller
      - Add export of iscsit_stop_dataout_timer() symbol
      - Add iscsit_build_r2ts_for_cmd() for iscsit_transport->iscsit_get_dataout()
      - Convert existing usage of iscsit_build_r2ts_for_cmd() to
        ->iscsit_get_dataout()
      - Drop RDMAExtentions=Yes specific check in iscsit_build_r2ts_for_cmd()
      - Fix RDMAExtentions -> RDMAExtensions typo (andy)
      - Pass correct dump_payload value into iscsit_get_immediate_data()
        for iscsit_handle_scsi_cmd()
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      3e1c81a9
  3. 07 11月, 2012 1 次提交
    • C
      target: pass sense_reason as a return value · de103c93
      Christoph Hellwig 提交于
      Pass the sense reason as an explicit return value from the I/O submission
      path instead of storing it in struct se_cmd and using negative return
      values.  This cleans up a lot of the code pathes, and with the sparse
      annotations for the new sense_reason_t type allows for much better
      error checking.
      
      (nab: Convert spc_emulate_modesense + spc_emulate_modeselect to use
            sense_reason_t with Roland's MODE SELECT changes)
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Cc: Roland Dreier <roland@purestorage.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      de103c93
  4. 04 10月, 2012 1 次提交
  5. 17 7月, 2012 1 次提交
  6. 15 4月, 2012 3 次提交
  7. 26 2月, 2012 1 次提交
  8. 18 1月, 2012 1 次提交
  9. 14 12月, 2011 1 次提交
  10. 06 12月, 2011 1 次提交
    • N
      target: Address legacy PYX_TRANSPORT_* return code breakage · 03e98c9e
      Nicholas Bellinger 提交于
      This patch removes legacy usage of PYX_TRANSPORT_* return codes in a number
      of locations and addresses cases where transport_generic_request_failure()
      was returning the incorrect sense upon CHECK_CONDITION status after the
      v3.1 converson to use errno return codes.
      
      This includes the conversion of transport_generic_request_failure() to
      process cmd->scsi_sense_reason and handle extra TCM_RESERVATION_CONFLICT
      before calling transport_send_check_condition_and_sense() to queue up
      response status.  It also drops PYX_TRANSPORT_OUT_OF_MEMORY_RESOURCES legacy
      usgae, and returns TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE w/ a response
      for these cases.
      
      transport_generic_allocate_tasks(), transport_generic_new_cmd(), backend
      SCF_SCSI_DATA_SG_IO_CDB ->do_task(), and emulated ->execute_task() have
      all been updated to set se_cmd->scsi_sense_reason and return errno codes
      universally upon failure.  This includes cmd->scsi_sense_reason assignment
      in target_core_alua.c, target_core_pr.c and target_core_cdb.c emulation code.
      
      Finally it updates fabric modules to remove the legacy usage, and for
      TFO->new_cmd_map() callers forwards return values outside of fabric code.
      iscsi-target has also been updated to remove a handful of special cases
      related to the cleanup and signaling QUEUE_FULL handling w/ ft_write_pending()
      
      (v2: Drop extra SCF_SCSI_CDB_EXCEPTION check during failure from
           transport_generic_new_cmd, and re-add missing task->task_error_status
           assignment in transport_complete_task)
      
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: stable@kernel.org
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      03e98c9e
  11. 23 8月, 2011 1 次提交
  12. 26 7月, 2011 1 次提交
    • N
      iscsi-target: Add iSCSI fabric support for target v4.1 · e48354ce
      Nicholas Bellinger 提交于
      The Linux-iSCSI.org target module is a full featured in-kernel
      software implementation of iSCSI target mode (RFC-3720) for the
      current WIP mainline target v4.1 infrastructure code for the v3.1
      kernel.  More information can be found here:
      
      http://linux-iscsi.org/wiki/ISCSI
      
      This includes support for:
      
         * RFC-3720 defined request / response state machines and support for
           all defined iSCSI operation codes from Section 10.2.1.2 using libiscsi
           include/scsi/iscsi_proto.h PDU definitions
         * Target v4.1 compatible control plane using the generic layout in
           target_core_fabric_configfs.c and fabric dependent attributes
           within /sys/kernel/config/target/iscsi/ subdirectories.
         * Target v4.1 compatible iSCSI statistics based on RFC-4544 (iSCSI MIBS)
         * Support for IPv6 and IPv4 network portals in M:N mapping to TPGs
         * iSCSI Error Recovery Hierarchy support
         * Per iSCSI connection RX/TX thread pair scheduling affinity
         * crc32c + crc32c_intel SSEv4 instruction offload support using libcrypto
         * CHAP Authentication support using libcrypto
         * Conversion to use internal SGl allocation with iscsit_alloc_buffs() ->
           transport_generic_map_mem_to_cmd()
      
      (nab: Fix iscsi_proto.h struct scsi_lun usage from linux-next in commit:
            iscsi: Use struct scsi_lun in iscsi structs instead of u8[8])
      (nab: Fix 32-bit compile warnings)
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NAndy Grover <agrover@redhat.com>
      Acked-by: NRoland Dreier <roland@kernel.org>
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      e48354ce