lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 02 Feb 2009 19:05:57 -0800 From: "Nicholas A. Bellinger" <nab@...ux-iscsi.org> To: LKML <linux-kernel@...r.kernel.org>, linux-scsi <linux-scsi@...r.kernel.org> Cc: Douglas Gilbert <dgilbert@...erlog.com>, James Bottomley <James.Bottomley@...senPartnership.com>, Hannes Reinecke <hare@...e.de>, Mike Christie <michaelc@...wisc.edu>, FUJITA Tomonori <fujita.tomonori@....ntt.co.jp>, Ming Zhang <blackmagic02881@...il.com>, "Ross S. W. Walker" <rswwalker@...il.com>, Arne Redlich <agr@...erkom-dd.de>, "Martin K. Petersen" <martin.petersen@...cle.com>, Rafiu Fakunle <rafiu@...nfiler.com> Subject: [PATCH] [Target_Core_Mod/ALUA]: Add initial support for EVPD 0x83 Target port group and Logical Unit Group identifiers Greetings all, This patch adds basic hardcoded support for EVPD 0x83 Target port group identifier (0x5) and Logical Unit Group (0x6) identifiers. These values will eventually be used by Target_Core_Mod/ConfigFS for implict ALUA configuration. Here is what it looks like with LIO-Target v3.0: initiator# sg_inq -v -l 16384 -p 0x83 /dev/sdh VPD INQUIRY: Device Identification page inquiry cdb: 12 01 83 00 fc 00 Designation descriptor number 1, descriptor length: 58 id_type: T10 vendor identification, code_set: ASCII associated with the addressed logical unit vendor id: LIO-ORG vendor specific: IBLOCK:eEaqKo-gYF8-vnDA-jJhf-Xqzy-pjGF-G6Y50v Designation descriptor number 2, descriptor length: 8 transport: Internet SCSI (iSCSI) id_type: Relative target port, code_set: Binary associated with the target port Relative target port: 0x1 Designation descriptor number 3, descriptor length: 8 transport: Internet SCSI (iSCSI) id_type: Target port group, code_set: Binary associated with the target port Target port group: 0x0 Designation descriptor number 4, descriptor length: 8 id_type: Logical unit group, code_set: Binary associated with the addressed logical unit Logical unit group: 0x0 Designation descriptor number 5, descriptor length: 72 transport: Internet SCSI (iSCSI) id_type: SCSI name string, code_set: UTF-8 associated with the target port SCSI name string: iqn.2003-01.org.linux-iscsi.target.i686:sn.cff3eedbd2fd,t,0x0001 This patch is made against lio-core-2.6.git/master and tested on v2.6.29-rc2 x86 32-bit HVM. The lio-core-2.6.git tree can be found at: http://git.kernel.org/?p=linux/kernel/git/nab/lio-core-2.6.git;a=summary Signed-off-by: Nicholas A. Bellinger <nab@...ux-iscsi.org> --- drivers/lio-core/target_core_transport.c | 38 ++++++++++++++++++++++++++++++ 1 files changed, 38 insertions(+), 0 deletions(-) diff --git a/drivers/lio-core/target_core_transport.c b/drivers/lio-core/target_core_transport.c index 19c5100..ae51b5f 100644 --- a/drivers/lio-core/target_core_transport.c +++ b/drivers/lio-core/target_core_transport.c @@ -4168,6 +4168,8 @@ extern int transport_generic_emulate_inquiry ( if ((port = lun->lun_sep)) { se_portal_group_t *tpg = port->sep_tpg; u32 padding, scsi_name_len; + u16 lun_gp = 0; // Set to zero for implict ALUA + u16 tg_pg_i = 0; // Set to zero for implict ALUA u16 tpgt; /* * Relative target port identifer, see spc4r17 section 7.7.3.7 @@ -4191,6 +4193,42 @@ extern int transport_generic_emulate_inquiry ( buf[off++] = (port->sep_rtpi & 0xff); len += 8; // Header size + Designation descriptor /* + * Target port group identifier, see spc4r17 section 7.7.3.8 + * + * Get the PROTOCOL IDENTIFIER as defined by spc4r17 + * section 7.5.1 Table 362 + */ + if (((len + 4) + 8) > cmd->data_length) { + len += 8; // Make check: below fail + goto check; + } + buf[off] = (TPG_TFO(tpg)->get_fabric_proto_ident() << 4); + buf[off++] |= 0x1; // CODE SET == Binary + buf[off] = 0x80; // Set PIV=1 + buf[off] |= 0x10; // Set ASSOICATION == target port: 01b + buf[off++] |= 0x5; // DESIGNATOR TYPE == Target port group identifier + off++; // Skip over Reserved + buf[off++] = 4; /* DESIGNATOR LENGTH */ + off += 2; // Skip over Reserved Field + buf[off++] = ((tg_pg_i >> 8) & 0xff); + buf[off++] = (tg_pg_i & 0xff); + len += 8; // Header size + Designation descriptor + /* + * Logical Unit Group identifier, see spc4r17 section 7.7.3.8 + */ + if (((len + 4) + 8) > cmd->data_length) { + len += 8; // Make check: below fail + goto check; + } + buf[off++] |= 0x1; // CODE SET == Binary + buf[off++] |= 0x6; // DESIGNATOR TYPE == Logical Unit Group identifier + off++; // Skip over Reserved + buf[off++] = 4; /* DESIGNATOR LENGTH */ + off += 2; // Skip over Reserved Field + buf[off++] = ((lun_gp >> 8) & 0xff); + buf[off++] = (lun_gp & 0xff); + len += 8; // Header size + Designation descriptor + /* * SCSI name string designator, see spc4r17 section 7.7.3.11 * * Get the PROTOCOL IDENTIFIER as defined by spc4r17 -- 1.5.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists