1. 18 1月, 2012 1 次提交
  2. 14 12月, 2011 2 次提交
    • J
      target: remove useless casts · 8359cf43
      Jörn Engel 提交于
      A reader should spend an extra moment whenever noticing a cast,
      because either something special is going on that deserves extra
      attention or, as is all too often the case, the code is wrong.
      
      These casts, afaics, have all been useless.  They cast a foo* to a
      foo*, cast a void* to the assigned type, cast a foo* to void*, before
      assigning it to a void* variable, etc.
      
      In a few cases I also removed an additional &...[0], which is equally
      useless.
      
      Lastly I added three FIXMEs where, to the best of my judgement, the
      code appears to have a bug.  It would be good if someone could check
      these.
      Signed-off-by: NJoern Engel <joern@logfs.org>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      8359cf43
    • C
      target: header reshuffle, part2 · c4795fb2
      Christoph Hellwig 提交于
      This reorganized the headers under include/target into:
      
       - target_core_base.h stays as is with all target-wide data stuctures and defines
       - target_core_backend.h contains the whole interface to I/O backends
       - target_core_fabric.h contains the whole interface to fabric modules
      
      Except for those only the various configfs macro headers stay around.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      c4795fb2
  3. 06 12月, 2011 4 次提交
    • T
      iscsi-target: Use kmemdup rather than duplicating its implementation · 1c3d5794
      Thomas Meyer 提交于
      The semantic patch that makes this change is available
      in scripts/coccinelle/api/memdup.cocci.
      Signed-off-by: NThomas Meyer <thomas@m3y3r.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      1c3d5794
    • 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
  4. 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
  5. 01 11月, 2011 1 次提交
  6. 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
  7. 23 8月, 2011 1 次提交
  8. 28 7月, 2011 3 次提交
  9. 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