1. 06 12月, 2011 3 次提交
    • N
      iscsi-target: Add missing F_BIT for iscsi_tm_rsp · 7ae0b103
      Nicholas Bellinger 提交于
      This patch sets the missing ISCSI_FLAG_CMD_FINAL bit in
      iscsit_send_task_mgt_rsp() for a struct iscsi_tm_rsp PDU.
      
      This usage is hardcoded for all TM response PDUs in RFC-3720
      section 10.6.
      Reported-by: Nwhucecil <whucecil1999@gmail.com>
      Cc: stable@kernel.org
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      7ae0b103
    • N
      iscsi-target: Fix residual count hanlding + remove iscsi_cmd->residual_count · 7e46cf02
      Nicholas Bellinger 提交于
      This patch fixes iscsi-target handling of underflow where residual data is
      causing an OOPs by using the incorrect iscsi_cmd_t->data_length initially
      assigned in iscsit_allocate_se_cmd().  It resets iscsi_cmd_t->data_length
      from se_cmd_t->data_length after transport_generic_allocate_tasks()
      has been invoked in iscsit_handle_scsi_cmd() RX context, and converts
      iscsi_cmd->residual_count usage to access iscsi_cmd->se_cmd.residual_count
      to get the proper residual count set by target-core.
      
      Reported-by: <lists@internyc.net>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Andy Grover <agrover@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      7e46cf02
    • 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
  2. 02 11月, 2011 2 次提交
    • N
      iscsi-target: Fix non-immediate TMR handling · 5a4c8666
      Nicholas Bellinger 提交于
      This patch addresses two issues with non immediate TMR handling in
      iscsit_handle_task_mgt_cmd().  The first involves breakage due to
      v3.1-rc conversion of iscsit_sequence_cmd(), which upon good status
      would hit the iscsit_add_reject_from_cmd() block of code.  This patch
      adds an explict check for CMDSN_ERROR_CANNOT_RECOVER.
      
      The second adds a check to return when non immediate TMR operation is
      detected after iscsit_ack_from_expstatsn(), as iscsit_sequence_cmd()
      -> iscsit_execute_cmd() will have called transport_generic_handle_tmr()
      for the non immediate TMR case already.
      
      Cc: Andy Grover <agrover@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      5a4c8666
    • N
      iscsi-target: Add missing CMDSN_LOWER_THAN_EXP check in iscsit_handle_scsi_cmd · 7e32da55
      Nicholas Bellinger 提交于
      This patch adds a missing CMDSN_LOWER_THAN_EXP return check for
      iscsit_sequence_cmd() in iscsit_handle_scsi_cmd() that was incorrectly
      dropped during the v3.1-rc cleanups to use iscsit_sequence_cmd().
      
      Cc: Andy Grover <agrover@redhat.com>
      Cc: stable@kernel.org
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      7e32da55
  3. 01 11月, 2011 1 次提交
  4. 24 10月, 2011 5 次提交
    • C
      target: Cleanup unused target_core_base.h bits · c0427f15
      Christoph Hellwig 提交于
      This is a squashed version of the following target_core_base.h
      cleanup patches:
      
          target: remove the unused SHUTDOWN_SIGS defintion
          target: remove unused se_mem leftovers
          target: remove the unused map_func_t typedef
          target: move TRANSPORT_IOV_DATA_BUFFER to the iscsi-specific code
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      c0427f15
    • N
      iscsi-target: Remove SCF_SE_LUN_CMD flag abuses · d270190a
      Nicholas Bellinger 提交于
      This patch removes a number of SCF_SE_LUN_CMD flag abuses within iscsi-target
      code to determine when iscsit_release_cmd() or transport_generic_free_cmd()
      should be called while releasing an individual iscsi_cmd descriptor.
      
      In the place of SCF_SE_LUN_CMD checks, this patch converts existing code to
      use a new iscsit_free_cmd() that inspects iscsi_cmd->iscsi_opcode types to
      determine which of the above functions should be invoked.  It also removes the
      now unnecessary special case checking in iscsit_release_commands_from_conn().
      
      (hch: Use iscsit_free_cmd instead of open-coded alternative)
      Reported-by: NChristoph Hellwig <hch@lst.de>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      d270190a
    • N
      target: Convert ->transport_wait_for_tasks usage to transport_generic_free_cmd · d14921d6
      Nicholas Bellinger 提交于
      This patch converts se_cmd->transport_wait_for_tasks(se_cmd, 1) usage to use
      transport_generic_free_cmd() directly in target-core and iscsi-target fabric
      usage.  The includes:
      
      *) Removal of the optional transport_generic_free_cmd() call from within
         transport_generic_wait_for_tasks()
      *) Usage of existing SCF_SUPPORTED_SAM_OPCODE to determine when
         transport_generic_wait_for_tasks() processing may occur instead of
         checking se_cmd->transport_wait_for_tasks()
      *) Move transport_generic_wait_for_tasks() call ahead of core_dec_lacl_count()
         and transport_lun_remove_cmd() in transport_generic_free_cmd() to follow
         existing logic for iscsi-target w/ se_cmd->transport_wait_for_tasks(se_cmd, 1)
      *) Removal of se_cmd->transport_wait_for_tasks() function pointer
      *) Rename transport_generic_wait_for_tasks() -> transport_wait_for_tasks(), and
         add docbook comment.
      *) Add EXPORT_SYMBOL for transport_wait_for_tasks()
      
      For the case in iscsi_target_erl2.c:iscsit_prepare_cmds_for_realligance()
      where se_cmd->transport_wait_for_tasks(se_cmd, 0) is called, this patch
      adds a direct call to transport_wait_for_tasks().
      
      (hch: Fix transport_generic_free_cmd() usage in iscsit_release_commands_from_conn)
      (nab: Add patch: Ensure that TMRs hit wait_for_tasks logic during release)
      Reported-by: NChristoph Hellwig <hch@lst.de>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      d14921d6
    • N
      target: Remove session_reinstatement parameter from ->transport_wait_for_tasks · 39c05f32
      Nicholas Bellinger 提交于
      This patch removes the unnecessary session_reinstatement parameter from
      se_cmd->transport_wait_for_tasks(), logic in transport_generic_wait_for_tasks,
      and usage within iscsi-target code.
      
      This also includes the removal of the 'bool' return from transport_put_cmd() +
      transport_generic_free_cmd() that is no longer necessary.
      
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      39c05f32
    • C
      target: push session reinstatement out of transport_generic_free_cmd · 82f1c8a4
      Christoph Hellwig 提交于
      Push session reinstatement out of transport_generic_free_cmd into the only
      caller that actually needs it.  Clean up transport_generic_free_cmd a bit,
      and remove the useless comment.  I'd love to add a more useful kerneldoc
      comment for it, but as this point I'm still a bit confused in where it
      stands in the command release stack.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      82f1c8a4
  5. 23 8月, 2011 1 次提交
  6. 28 7月, 2011 3 次提交
  7. 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