24 Mar, 2011

1 commit

  • 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

1 commit

  • 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