31 Mar, 2011

1 commit


24 Mar, 2011

5 commits

  • This patch adds a target_core_mib.c statistics conversion for
    backend context struct se_subsystem_dev + struct se_device config_group
    based statistics in target_core_device.c using CONFIGFS_EATTR()
    based struct config_item_types from target_core_stat.c code.

    The conversion from backend /proc/scsi_target/mib/ context output to configfs
    default groups+attributes include scsi_dev, scsi_lu, and scsi_tgt_dev output
    from within individual:

    /sys/kernel/config/target/core/$HBA/DEV/

    The legacy procfs output now appear as individual configfs attributes under:

    *) $HBA/$DEV/statistics/scsi_dev:

    |-- indx
    |-- inst
    |-- ports
    `-- role

    *) $HBA/$DEV/statistics/scsi_lu:

    |-- creation_time
    |-- dev
    |-- dev_type
    |-- full_stat
    |-- hs_num_cmds
    |-- indx
    |-- inst
    |-- lu_name
    |-- lun
    |-- num_cmds
    |-- prod
    |-- read_mbytes
    |-- resets
    |-- rev
    |-- state_bit
    |-- status
    |-- vend
    `-- write_mbytes

    *) $HBA/$DEV/statistics/scsi_tgt_dev:

    |-- indx
    |-- inst
    |-- non_access_lus
    |-- num_lus
    |-- resets
    `-- status

    The conversion from backend /proc/scsi_target/mib/ context output to configfs
    default groups+attributes include scsi_port, scsi_tgt_port and scsi_transport
    output from within individual:

    /sys/kernel/config/target/fabric/$WWN/tpgt_$TPGT/lun/lun_$LUN_ID/statistics/

    The legacy procfs output now appear as individual configfs attributes under:

    *) fabric/$WWN/tpgt_$TPGT/lun/lun_$LUN_ID/statistics/scsi_port

    |-- busy_count
    |-- dev
    |-- indx
    |-- inst
    `-- role

    *) fabric/$WWN/tpgt_$TPGT/lun/lun_$LUN_ID/statistics/scsi_tgt_port

    |-- dev
    |-- hs_in_cmds
    |-- in_cmds
    |-- indx
    |-- inst
    |-- name
    |-- port_index
    |-- read_mbytes
    `-- write_mbytes

    *) fabric/$WWN/tpgt_$TPGT/lun/lun_$LUN_ID/statistics/scsi_transport

    |-- dev_name
    |-- device
    |-- indx
    `-- inst

    The conversion from backend /proc/scsi_target/mib/ context output to configfs
    default groups+attributes include scsi_att_intr_port and scsi_auth_intr output
    from within individual:

    /sys/kernel/config/target/fabric/$WWN/tpgt_$TPGT/acls/$INITIATOR_WWN/lun_$LUN_ID/statistics/

    The legacy procfs output now appear as individual configfs attributes under:

    *) acls/$INITIATOR_WWN/lun_$LUN_ID/statistics/scsi_att_intr_port

    |-- dev
    |-- indx
    |-- inst
    |-- port
    |-- port_auth_indx
    `-- port_ident

    *) acls/$INITIATOR_WWN/lun_$LUN_ID/statistics/scsi_auth_intr

    |-- att_count
    |-- creation_time
    |-- dev
    |-- dev_or_port
    |-- hs_num_cmds
    |-- indx
    |-- inst
    |-- intr_name
    |-- map_indx
    |-- num_cmds
    |-- port
    |-- read_mbytes
    |-- row_status
    `-- write_mbytes

    Also, this includes adding struct target_fabric_configfs_template->
    tfc_wwn_fabric_stats_cit and ->tfc_tpg_nacl_stat_cit respectively for
    use during target_core_fabric_configfs.c:target_fabric_setup_cits()

    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     
  • Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     
  • This patch changes include/target/target_core_tmr.h code to use
    target specific 'TMR_*' prefixed definitions for fabric independent
    SCSI Task Management Request/Request naming in include/scsi/scsi.h
    definitions for mainline target code.

    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     
  • Reported-by: Fubo Chen
    Cc: James Bottomley
    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     
  • This patch addresses the majority of sparse warnings and adds
    proper locking annotations. It also fixes the dubious one-bit signed
    bitfield, for which the signed one-bit types can be 0 or -1 which can
    cause a problem if someone ever checks if (foo->lu_gp_assoc == 1).
    The current code is fine because everyone just checks zero vs non-zero.
    But Sparse complains about it so lets change it. The warnings look like
    this:

    include/target/target_core_base.h:228:26: error: dubious one-bit signed bitfield

    Signed-off-by: Dan Carpenter
    Signed-off-by: Fubo Chen
    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Dan Carpenter
     

01 Mar, 2011

1 commit

  • This patch addresses two outstanding bugs related to
    T_TASK(cmd)->t_transport_aborted handling during TMR LUN_RESET and
    active I/O shutdown.

    This first involves adding two explict t_transport_aborted=1
    assignments in core_tmr_lun_reset() in order to signal the task has
    been aborted, and updating transport_generic_wait_for_tasks() to skip
    sleeping when t_transport_aborted=1 has been set. This fixes an issue
    where transport_generic_wait_for_tasks() would end up sleeping
    indefinately when called from fabric module context while TMR
    LUN_RESET was happening with long outstanding backend struct se_task
    not yet being completed.

    The second adds a missing call to
    transport_remove_task_from_execute_queue() when
    task->task_execute_queue=1 is set in order to fix an OOPs when
    task->t_execute_list has not been dropped. It also fixes the same
    case in transport_processing_shutdown() to prevent the issue from
    happening during active I/O struct se_device shutdown.

    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     

13 Feb, 2011

2 commits

  • This patch moves a large number of memory release paths inside of the
    configfs callback target_core_hba_item_ops->release() called from
    within fs/configfs/item.c: config_item_cleanup() context. This patch
    resolves the SLUB 'Poison overwritten' warnings.

    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     
  • This patch removes the legacy procfs based target_core_mib.c code,
    and moves the necessary scsi_index_tables functions and defines into
    target_core_transport.c and target_core_base.h code to allow existing
    fabric independent statistics to function.

    This includes the removal of a handful of 'atomic_t mib_ref_count'
    counters used in struct se_node_acl, se_session and se_hba to prevent
    removal while using seq_list procfs walking logic.

    [jejb: fix up compile failures]
    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger
     

15 Jan, 2011

1 commit

  • LIO target is a full featured in-kernel target framework with the
    following feature set:

    High-performance, non-blocking, multithreaded architecture with SIMD
    support.

    Advanced SCSI feature set:

    * Persistent Reservations (PRs)
    * Asymmetric Logical Unit Assignment (ALUA)
    * Protocol and intra-nexus multiplexing, load-balancing and failover (MC/S)
    * Full Error Recovery (ERL=0,1,2)
    * Active/active task migration and session continuation (ERL=2)
    * Thin LUN provisioning (UNMAP and WRITE_SAMExx)

    Multiprotocol target plugins

    Storage media independence:

    * Virtualization of all storage media; transparent mapping of IO to LUNs
    * No hard limits on number of LUNs per Target; maximum LUN size ~750 TB
    * Backstores: SATA, SAS, SCSI, BluRay, DVD, FLASH, USB, ramdisk, etc.

    Standards compliance:

    * Full compliance with IETF (RFC 3720)
    * Full implementation of SPC-4 PRs and ALUA

    Significant code cleanups done by Christoph Hellwig.

    [jejb: fix up for new block bdev exclusive interface. Minor fixes from
    Randy Dunlap and Dan Carpenter.]
    Signed-off-by: Nicholas A. Bellinger
    Signed-off-by: James Bottomley

    Nicholas Bellinger