1. 27 10月, 2012 1 次提交
    • R
      tcm_qla2xxx: Format VPD page 83h SCSI name string according to SPC · c046aa0f
      Roland Dreier 提交于
      My draft of SPC-4 says the following about the SCSI name string in
      inquiry VPD page 83h:
      
          The SCSI NAME STRING field starts with either:
      
          a) the four UTF-8 characters 'eui.' concatenated with 16, 24, or
             32 hexadecimal digits (i.e., the UTF-8 characters 0 through 9
             and A through F) for an EUI-64 based identifier (see
             7.8.6.5). The first hexadecimal digit shall be the most
             significant four bits of the first byte (i.e., most significant
             byte) of the EUI-64 based identifier;
          b) the four UTF-8 characters 'naa.' concatenated with 16 or 32
             hexadecimal digits for an NAA identifier (see 7.8.6.6). The
             first hexadecimal digit shall be the most significant four bits
             of the first byte (i.e., most significant byte) of the NAA
             identifier; or
          c) the four UTF-8 characters 'iqn.' concatenated with an iSCSI
             Name for an iSCSI-name based identifier (see iSCSI).
      
      However, the .tpg_get_wwn method for tcm_qla2xxx formats the WWN so
      the SCSI name string looks like "52:4a:93:7d:24:5f:b2:12,t,0x0001".
      This patch corrects the code so that VPD 83h gives a SPC-compliant
      SCSI name string like "naa.524a937d245fb212,t,0x0001" while leavig
      other uses alone (so configfs will still work with ':' separated WWNs).
      Signed-off-by: NRoland Dreier <roland@purestorage.com>
      Cc: Chad Dupuis <chad.dupuis@qlogic.com>
      Cc: Arun Easi <arun.easi@qlogic.com>
      Cc: Saurav Kashyap <saurav.kashyap@qlogic.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      c046aa0f
  2. 22 5月, 2012 1 次提交
    • N
      [SCSI] tcm_qla2xxx: Add >= 24xx series fabric module for target-core · 75f8c1f6
      Nicholas Bellinger 提交于
      This patch adds support for tcm_qla2xxx fabric module for target-core
      using the new qla_target.c LLD logic.  This includes support for explict
      NodeACLs via configfs using tcm_qla2xxx_setup_nacl_from_rport() from libfc
      struct fc_host->rports, and demo-mode support for virtual LUN=0 access.
      
      This patch also adds support for using tcm_qla2xxx_lport->lport_fcport_map
      and ->lport_loopid_map of btree_head32 to track struct se_node_acl pointers
      for individual 24-bit Port ID and 16-bit Loop ID values w/ qla_target_template
      ->find_sess_by_s_id() and ->find_sess_by_loop_id() used in a number of
      locations into the primary I/O dispatch logic in qla_target.c LLD code.
      
      The main piece for FC Nexus setup is in tcm_qla2xxx_check_initiator_node_acl(),
      which calls tcm_qla2xxx_set_sess_by_[s_id,loop_id]() to setup our
      lport->lport_fcport_map and lport_loopid_map pointers respectively, and
      register the new nexus with TCM via __transport_register_session().
      
      (nab: Add qla_tgt_mgmt_cmd usage with TARGET_SCF_ACK_KREF during TMRs +
            change tcm_qla2xxx_nacl->nport_id to u32 (DanC))
      (danc: tcm_qla2xxx: checking for NULL instead of IS_ERR())
      (roland: Fix up v3.5 breakage for removal of transport_do_task_sg_chain +
               Add hook so qla_target code can shutdown sessions)
      (steveh: Convert FC address map from flat array to btree)
      (randy: fix qla2xxx printk format warnings for size_t)
      (joern: Make most of tcm_qla2xxx static + remove unnecessary
              workqueue_struct prototypes + use WWN_SIZE instead of hard-coded
              constants)
      Signed-off-by: NNicholas A. Bellinger <nab@linux-iscsi.org>
      Signed-off-by: NChad Dupuis <chad.dupuis@qlogic.com>
      Signed-off-by: NJames Bottomley <JBottomley@Parallels.com>
      75f8c1f6