QLogic/configFS
From Linux-iSCSI
|
QLogic Corp. QLogic Fibre Channel fabric module | |
| Original author(s) | Nicholas Bellinger |
| Developer(s) | RisingTide Systems LLC |
| Initial release | December 17, 2010 |
| Preview release | 4.1.0-rc1 / February 21, 2011 |
| Development status | RC |
| Written in | C |
| Operating system | Linux |
| Type | Fabric module |
| License | GNU General Public License |
| Website | risingtidesystems.com |
- See Target for a complete overview over all fabric modules.
QLogic/configFS describes the configFS kernel interface for the QLogic Fibre Channel fabric module. ConfigFS is a RAM-based virtual file system provided by the 2.6 Linux kernel, originally based on sysfs code and developed as a hybrid control mechanism for OCFS2.
Contents |
Introduction
To setup a QLogic Fibre Channel Target, targetcli (from RisingTide Systems) should be used. targetcli is a comprehensive, powerful, yet easy storage management tool that can efficiently handle complex LIO Target installations.
This page describes the resulting low-level user-space configuration of the QLogic configFS object tree. ConfigFS uses symbolic links for inter- and intra-modules configuration, and the QLogic fabric module is mapped into configFS at /sys/kernel/config/target/qla2xxx/. A $FABRIC shell variable is defined to point to the qla2xxx root:
export FABRIC=/sys/kernel/config/target/qla2xxx/
Object tree
Here is the tree configFS output of a running QLogic qla2xxx target from /sys/kernel/config/target/qla2xxx.
This is using a single QLA2xxx FC Target Port (21:00:00:24:ff:31:4c:48), with TPG LUN=0 and LUN=1. There is also an explict FC Initiator Port NodeACL (21:00:00:24:ff:31:4c:4c) and MappedLUN=0 and MappedLUN=1.
lenny64guest0:/usr/src/lio-core-2.6.git# tree /sys/kernel/config/target/qla2xxx/ /sys/kernel/config/target/qla2xxx/ |-- 21:00:00:24:ff:31:4c:48 | `-- tpgt_1 | |-- acls | | `-- 21:00:00:24:ff:31:4c:4c | | |-- attrib | | |-- auth | | |-- lun_0 | | | |-- mapped_lun -> ../../../../../../../target/qla2xxx/21:00:00:24:ff:31:4c:48/tpgt_1/lun/lun_0 | | | |-- statistics | | | | |-- scsi_att_intr_port | | | | | |-- dev | | | | | |-- indx | | | | | |-- inst | | | | | |-- port | | | | | |-- port_auth_indx | | | | | `-- port_ident | | | | `-- 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 | | | `-- write_protect | | |-- lun_1 | | | |-- mapped_lun -> ../../../../../../../target/qla2xxx/21:00:00:24:ff:31:4c:48/tpgt_1/lun/lun_1 | | | |-- statistics | | | | |-- scsi_att_intr_port | | | | | |-- dev | | | | | |-- indx | | | | | |-- inst | | | | | |-- port | | | | | |-- port_auth_indx | | | | | `-- port_ident | | | | `-- 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 | | | `-- write_protect | | `-- param | |-- attrib | | |-- cache_dynamic_acls | | |-- demo_mode_write_protect | | |-- generate_node_acls | | `-- prod_mode_write_protect | |-- enable | |-- lun | | |-- lun_0 | | | |-- alua_tg_pt_gp | | | |-- alua_tg_pt_offline | | | |-- alua_tg_pt_status | | | |-- alua_tg_pt_write_md | | | |-- qla2xxx_port -> ../../../../../../target/core/rd_mcp_0/mcp_ramdisk | | | `-- statistics | | | |-- scsi_port | | | | |-- busy_count | | | | |-- dev | | | | |-- indx | | | | |-- inst | | | | `-- role | | | |-- scsi_tgt_port | | | | |-- dev | | | | |-- hs_in_cmds | | | | |-- in_cmds | | | | |-- indx | | | | |-- inst | | | | |-- name | | | | |-- port_index | | | | |-- read_mbytes | | | | `-- write_mbytes | | | `-- scsi_transport | | | |-- dev_name | | | |-- device | | | |-- indx | | | `-- inst | | `-- lun_1 | | |-- alua_tg_pt_gp | | |-- alua_tg_pt_offline | | |-- alua_tg_pt_status | | |-- alua_tg_pt_write_md | | |-- qla2xxx_port -> ../../../../../../target/core/rd_mcp_1/mcp_ramdisk | | `-- statistics | | |-- scsi_port | | | |-- busy_count | | | |-- dev | | | |-- indx | | | |-- inst | | | `-- role | | |-- scsi_tgt_port | | | |-- dev | | | |-- hs_in_cmds | | | |-- in_cmds | | | |-- indx | | | |-- inst | | | |-- name | | | |-- port_index | | | |-- read_mbytes | | | `-- write_mbytes | | `-- scsi_transport | | |-- dev_name | | |-- device | | |-- indx | | `-- inst | |-- np | `-- param |-- discovery_auth `-- version 34 directories, 92 files
Kernel ring buffer
An example for the Target side kernel ring buffer output by dmesg during initiator login is:
[ 5591.511559] TCM QLOGIC QLA2XXX fabric module v0.1 on Linux/x86_64 on 2.6.38-rc6+ [ 5591.512835] Setup generic discovery [ 5591.513430] Setup generic wwn [ 5591.513941] Setup generic tpg [ 5591.514452] Setup generic tpg_base [ 5591.515032] Setup generic tpg_port [ 5591.515740] Setup generic tpg_port_stat [ 5591.516388] Setup generic tpg_lun [ 5591.516950] Setup generic tpg_np [ 5591.517497] Setup generic tpg_np_base [ 5591.518115] Setup generic tpg_attrib [ 5591.518717] Setup generic tpg_param [ 5591.519407] Setup generic tpg_nacl [ 5591.519990] Setup generic tpg_nacl_base [ 5591.520640] Setup generic tpg_nacl_attrib [ 5591.521319] Setup generic tpg_nacl_auth [ 5591.521969] Setup generic tpg_nacl_param [ 5591.522634] Setup generic tpg_mappedlun [ 5591.523339] Setup generic tpg_mappedlun_stat [ 5591.524062] <<<<<<<<<<<<<<<<<<<<<< BEGIN FABRIC API >>>>>>>>>>>>>>>>>>>>>> [ 5591.525202] Initialized struct target_fabric_configfs: ffff88007492e360 for qla2xxx [ 5591.526468] <<<<<<<<<<<<<<<<<<<<<< END FABRIC API >>>>>>>>>>>>>>>>>>>>>> [ 5591.527640] TCM_QLA2XXX[0] - Set fabric -> tcm_qla2xxx_fabric_configfs [ 5591.528752] Setup generic discovery [ 5591.529350] Setup generic wwn [ 5591.529861] Setup generic tpg [ 5591.530373] Setup generic tpg_base [ 5591.530955] Setup generic tpg_port [ 5591.531594] Setup generic tpg_port_stat [ 5591.532253] Setup generic tpg_lun [ 5591.532821] Setup generic tpg_np [ 5591.533375] Setup generic tpg_np_base [ 5591.534000] Setup generic tpg_attrib [ 5591.534610] Setup generic tpg_param [ 5591.535261] Setup generic tpg_nacl [ 5591.535851] Setup generic tpg_nacl_base [ 5591.536508] Setup generic tpg_nacl_attrib [ 5591.537190] Setup generic tpg_nacl_auth [ 5591.537847] Setup generic tpg_nacl_param [ 5591.538517] Setup generic tpg_mappedlun [ 5591.539224] Setup generic tpg_mappedlun_stat [ 5591.539959] <<<<<<<<<<<<<<<<<<<<<< BEGIN FABRIC API >>>>>>>>>>>>>>>>>>>>>> [ 5591.541120] Initialized struct target_fabric_configfs: ffff88007492d2d0 for qla2xxx_npiv [ 5591.542477] <<<<<<<<<<<<<<<<<<<<<< END FABRIC API >>>>>>>>>>>>>>>>>>>>>> [ 5591.543667] TCM_QLA2XXX[0] - Set fabric -> tcm_qla2xxx_npiv_fabric_configfs [ 5591.547279] Target_Core_ConfigFS: REGISTER -> group: ffffffffa0418200 name: qla2xxx [ 5591.548584] Target_Core_ConfigFS: REGISTER -> Located fabric: qla2xxx [ 5591.549669] Target_Core_ConfigFS: REGISTER tfc_wwn_cit -> ffff88007492e668 [ 5591.550829] Target_Core_ConfigFS: REGISTER -> Allocated Fabric: qla2xxx [ 5591.552090] Target_Core_ConfigFS: REGISTER -> Set tf->tf_fabric for qla2xxx [ 5591.553494] qla2xxx HW vha->node_name: 20 00 00 24 ff 31 4c 48 [ 5591.554671] qla2xxx HW vha->port_name: 21 00 00 24 ff 31 4c 48 [ 5591.555887] qla2xxx passed configfs WWPN: 21 00 00 24 ff 31 4c 48 [ 5591.556080] qla2xxx: Found matching HW WWPN: 21:00:00:24:ff:31:4c:48 for lport [ 5591.581149] qla2xxx: Allocated lport_fcport_map of 134217728 bytes [ 5591.582348] qla2xxx: Allocated lport_loopid_map of 524288 bytes [ 5591.583751] TARGET_CORE[qla2xxx]: Allocated Normal struct se_portal_group for endpoint: 21:00:00:24:ff:31:4c:48, Portal Tag: 1 [ 5591.590213] rd_mcp/qla2xxx: Adding to default ALUA Target Port Group: alua/default_tg_pt_gp [ 5591.591728] qla2xxx_TPG[1]_LUN[0] - Activated qla2xxx Logical Unit from CORE HBA: 3 [ 5591.594744] rd_mcp/qla2xxx: Adding to default ALUA Target Port Group: alua/default_tg_pt_gp [ 5591.596220] qla2xxx_TPG[1]_LUN[1] - Activated qla2xxx Logical Unit from CORE HBA: 1 [ 5591.599846] qla2xxx_TPG[1] - Added ACL with TCQ Depth: 1 for qla2xxx Initiator Node: 21:00:00:24:ff:31:4c:4c [ 5591.603289] qla2xxx_TPG[1]_LUN[0->0] - Added RW ACL for InitiatorNode: 21:00:00:24:ff:31:4c:4c [ 5591.608725] qla2xxx_TPG[1]_LUN[1->1] - Added RW ACL for InitiatorNode: 21:00:00:24:ff:31:4c:4c [ 5592.615582] qla2xxx 0000:00:05.0: Performing ISP error recovery - ha= ffff880051728000. [ 5592.628582] qla2xxx 0000:00:05.0: FW: Loading via request-firmware... [ 5592.980888] qla2xxx 0000:00:05.0: LIP occurred (f8f7). [ 5592.982918] qla2xxx 0000:00:05.0: LOOP UP detected (8 Gbps). [ 5596.046689] Unable to locate se_nacl by loop_id: 0x0000 [ 5596.080570] qla2xxx 0000:00:05.0: LOOP DOWN detected (0 3 0 0). [ 5596.084860] qla_target(0): Link failure detected [ 5596.362080] qla2xxx 0000:00:05.0: LIP occurred (f8f7). [ 5596.364231] qla2xxx 0000:00:05.0: LOOP UP detected (8 Gbps). [ 5596.365244] Unable to locate se_nacl by loop_id: 0x0000 [ 5596.366272] Unable to locate se_nacl by loop_id: 0x0000 [ 5596.519110] TARGET_CORE[qla2xxx]: Registered fabric_sess_ptr: ffff8800554950a8 [ 5596.520354] qla_target(0): session for wwn 21:00:00:24:ff:31:4c:4c (loop_id 0, s_id 0:0:e8, confirmed completion supported) added