SCSI RDMA Protocol/configFS
From Linux-iSCSI
![]() | |
|---|---|
|
Mellanox Technologies, Ltd. Mellanox Infiniband SRP fabric module | |
| Original author(s) |
Vu Pham Bart Van Assche Nicholas Bellinger |
| Developer(s) | Mellanox Technologies, Ltd. |
| Initial release | February 15, 2011 |
| Preview release | 4.1.0-rc1 / February 21, 2011 |
| Development status | Production |
| Written in | C |
| Operating system | Linux |
| Type | Fabric module |
| License | GNU General Public License |
| Website | mellanox.com |
- See Target for a complete overview over all fabric modules.
SCSI RDMA Protocol/configFS describes the configFS kernel interface for the Mellanox SCSI RDMA Protocol 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 an SRP 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 SRP configFS object tree. ConfigFS uses symbolic links for inter- and intra-modules configuration, and the SRP fabric module is mapped into configFS at /sys/kernel/config/target/srpt/. A $FABRIC shell variable is defined to point to the SRP root:
export FABRIC=/sys/kernel/config/target/srpt/
Object tree
Here is the tree configFS output of an active Mellanox SRP target from /sys/kernel/config/target/srpt.
/sys/kernel/config/target/srpt/ ├── discovery_auth ├── mlx4_0 │ └── mlx4_0 │ ├── acls │ │ └── 0x00000000000000000002c903000e8be9 │ │ ├── attrib │ │ ├── auth │ │ ├── lun_0 │ │ │ ├── mapped_lun -> ../../../../../../../target/srpt/mlx4_0/mlx4_0/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 │ │ └── param │ ├── attrib │ ├── lun │ │ └── lun_0 │ │ ├── alua_tg_pt_gp │ │ ├── alua_tg_pt_offline │ │ ├── alua_tg_pt_status │ │ ├── alua_tg_pt_write_md │ │ ├── srpt_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 │ │ ├── device │ │ ├── dev_name │ │ ├── indx │ │ └── inst │ ├── np │ └── param └── version
Kernel ring buffer
An example for the Target side kernel ring buffer output by dmesg for a of connected SRP I_T Nexus is:
[ 1007.797934] Setup generic discovery
[ 1007.797934] Setup generic wwn
[ 1007.797934] Setup generic tpg
[ 1007.797934] Setup generic tpg_base
[ 1007.797934] Setup generic tpg_port
[ 1007.797934] Setup generic tpg_port_stat
[ 1007.801965] Setup generic tpg_lun
[ 1007.802424] Setup generic tpg_np
[ 1007.802854] Setup generic tpg_np_base
[ 1007.803286] Setup generic tpg_attrib
[ 1007.803707] Setup generic tpg_param
[ 1007.804118] Setup generic tpg_nacl
[ 1007.804520] Setup generic tpg_nacl_base
[ 1007.804971] Setup generic tpg_nacl_attrib
[ 1007.805441] Setup generic tpg_nacl_auth
[ 1007.805904] Setup generic tpg_nacl_param
[ 1007.805952] Setup generic tpg_mappedlun
[ 1007.805952] Setup generic tpg_mappedlun_stat
[ 1007.805952] <<<<<<<<<<<<<<<<<<<<<< BEGIN FABRIC API >>>>>>>>>>>>>>>>>>>>>>
[ 1007.805952] Initialized struct target_fabric_configfs: ffff8800517d98d8 for srpt
[ 1007.805952] <<<<<<<<<<<<<<<<<<<<<< END FABRIC API >>>>>>>>>>>>>>>>>>>>>>
[ 1007.809840] TARGET_CORE[srpt]: Allocated Normal struct se_portal_group for endpoint: 0x2c903000e8acc, Portal Tag: 1
[ 1013.031822] Target_Core_ConfigFS: REGISTER -> group: ffffffffa045fe80 name: srpt
[ 1013.032706] Target_Core_ConfigFS: REGISTER -> Located fabric: srpt
[ 1013.033424] Target_Core_ConfigFS: REGISTER tfc_wwn_cit -> ffff8800517d9be0
[ 1013.034329] Target_Core_ConfigFS: REGISTER -> Allocated Fabric: srpt
[ 1013.035067] Target_Core_ConfigFS: REGISTER -> Set tf->tf_fabric for srpt
[ 1013.037105] rd_mcp/srpt: Adding to default ALUA Target Port Group: alua/default_tg_pt_gp
[ 1013.038071] srpt_TPG[1]_LUN[0] - Activated srpt Logical Unit from CORE HBA: 5
[ 1013.040303] srpt_TPG[1] - Added ACL with TCQ Depth: 1 for srpt Initiator Node: 0x00000000000000000002c903000e8be9
[ 1013.042623] srpt_TPG[1]_LUN[0->0] - Added RW ACL for InitiatorNode: 0x00000000000000000002c903000e8be9
[ 1017.578436] Received SRP_LOGIN_REQ with i_port_id 0x0:0x2c903000e8be9, t_port_id 0x2c903000e8acc:0x2c903000e8acc and it_iu_len 260 on port 1
(guid=0xfe80000000000000:0x2c903000e8acd)
[ 1017.583298] Session : kernel thread ib_srpt_compl (PID 2868) started
[ 1017.584060] TARGET_CORE[srpt]: Registered fabric_sess_ptr: ffff88007356f3f0
