[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*******************************************************************************
* Filename : target_core_pr . c
*
* This file contains SPC - 3 compliant persistent reservations and
* legacy SPC - 2 reservations with compatible reservation handling ( CRH = 1 )
*
* Copyright ( c ) 2009 , 2010 Rising Tide Systems
* Copyright ( c ) 2009 , 2010 Linux - iSCSI . org
*
* Nicholas A . Bellinger < nab @ kernel . org >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <linux/version.h>
# include <linux/slab.h>
# include <linux/spinlock.h>
# include <linux/list.h>
# include <scsi/scsi.h>
# include <scsi/scsi_cmnd.h>
# include <asm/unaligned.h>
# include <target/target_core_base.h>
# include <target/target_core_device.h>
# include <target/target_core_tmr.h>
# include <target/target_core_tpg.h>
# include <target/target_core_transport.h>
# include <target/target_core_fabric_ops.h>
# include <target/target_core_configfs.h>
# include "target_core_hba.h"
# include "target_core_pr.h"
# include "target_core_ua.h"
/*
* Used for Specify Initiator Ports Capable Bit ( SPEC_I_PT )
*/
struct pr_transport_id_holder {
int dest_local_nexus ;
struct t10_pr_registration * dest_pr_reg ;
struct se_portal_group * dest_tpg ;
struct se_node_acl * dest_node_acl ;
struct se_dev_entry * dest_se_deve ;
struct list_head dest_list ;
} ;
int core_pr_dump_initiator_port (
struct t10_pr_registration * pr_reg ,
char * buf ,
u32 size )
{
2011-06-08 21:36:43 +04:00
if ( ! pr_reg - > isid_present_at_reg )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
snprintf ( buf , size , " ,i,0x%s " , & pr_reg - > pr_reg_isid [ 0 ] ) ;
return 1 ;
}
static void __core_scsi3_complete_pro_release ( struct se_device * , struct se_node_acl * ,
struct t10_pr_registration * , int ) ;
static int core_scsi2_reservation_seq_non_holder (
struct se_cmd * cmd ,
unsigned char * cdb ,
u32 pr_reg_type )
{
switch ( cdb [ 0 ] ) {
case INQUIRY :
case RELEASE :
case RELEASE_10 :
return 0 ;
default :
return 1 ;
}
return 1 ;
}
static int core_scsi2_reservation_check ( struct se_cmd * cmd , u32 * pr_reg_type )
{
struct se_device * dev = cmd - > se_dev ;
struct se_session * sess = cmd - > se_sess ;
int ret ;
2011-06-08 21:36:43 +04:00
if ( ! sess )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
spin_lock ( & dev - > dev_reservation_lock ) ;
if ( ! dev - > dev_reserved_node_acl | | ! sess ) {
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
if ( dev - > dev_reserved_node_acl ! = sess - > se_node_acl ) {
spin_unlock ( & dev - > dev_reservation_lock ) ;
2011-07-19 12:55:10 +04:00
return - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
if ( ! ( dev - > dev_flags & DF_SPC2_RESERVATIONS_WITH_ISID ) ) {
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
2011-07-19 12:55:10 +04:00
ret = ( dev - > dev_res_bin_isid = = sess - > sess_bin_isid ) ? 0 : - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & dev - > dev_reservation_lock ) ;
return ret ;
}
static int core_scsi2_reservation_release ( struct se_cmd * cmd )
{
struct se_device * dev = cmd - > se_dev ;
struct se_session * sess = cmd - > se_sess ;
struct se_portal_group * tpg = sess - > se_tpg ;
2011-06-08 21:36:43 +04:00
if ( ! sess | | ! tpg )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
spin_lock ( & dev - > dev_reservation_lock ) ;
if ( ! dev - > dev_reserved_node_acl | | ! sess ) {
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
if ( dev - > dev_reserved_node_acl ! = sess - > se_node_acl ) {
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
dev - > dev_reserved_node_acl = NULL ;
dev - > dev_flags & = ~ DF_SPC2_RESERVATIONS ;
if ( dev - > dev_flags & DF_SPC2_RESERVATIONS_WITH_ISID ) {
dev - > dev_res_bin_isid = 0 ;
dev - > dev_flags & = ~ DF_SPC2_RESERVATIONS_WITH_ISID ;
}
2011-06-08 21:36:43 +04:00
pr_debug ( " SCSI-2 Released reservation for %s LUN: %u -> "
2011-07-19 12:55:10 +04:00
" MAPPED LUN: %u for %s \n " , tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
cmd - > se_lun - > unpacked_lun , cmd - > se_deve - > mapped_lun ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
sess - > se_node_acl - > initiatorname ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
static int core_scsi2_reservation_reserve ( struct se_cmd * cmd )
{
struct se_device * dev = cmd - > se_dev ;
struct se_session * sess = cmd - > se_sess ;
struct se_portal_group * tpg = sess - > se_tpg ;
2011-05-03 04:12:10 +04:00
if ( ( cmd - > t_task_cdb [ 1 ] & 0x01 ) & &
( cmd - > t_task_cdb [ 1 ] & 0x02 ) ) {
2011-06-08 21:36:43 +04:00
pr_err ( " LongIO and Obselete Bits set, returning "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" ILLEGAL_REQUEST \n " ) ;
return PYX_TRANSPORT_ILLEGAL_REQUEST ;
}
/*
* This is currently the case for target_core_mod passthrough struct se_cmd
* ops
*/
2011-06-08 21:36:43 +04:00
if ( ! sess | | ! tpg )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
spin_lock ( & dev - > dev_reservation_lock ) ;
if ( dev - > dev_reserved_node_acl & &
( dev - > dev_reserved_node_acl ! = sess - > se_node_acl ) ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SCSI-2 RESERVATION CONFLIFT for %s fabric \n " ,
2011-07-19 12:55:10 +04:00
tpg - > se_tpg_tfo - > get_fabric_name ( ) ) ;
2011-06-08 21:36:43 +04:00
pr_err ( " Original reserver LUN: %u %s \n " ,
2011-07-19 12:55:10 +04:00
cmd - > se_lun - > unpacked_lun ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dev - > dev_reserved_node_acl - > initiatorname ) ;
2011-06-08 21:36:43 +04:00
pr_err ( " Current attempt - LUN: %u -> MAPPED LUN: %u "
2011-07-19 12:55:10 +04:00
" from %s \n " , cmd - > se_lun - > unpacked_lun ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
cmd - > se_deve - > mapped_lun ,
sess - > se_node_acl - > initiatorname ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
dev - > dev_reserved_node_acl = sess - > se_node_acl ;
dev - > dev_flags | = DF_SPC2_RESERVATIONS ;
if ( sess - > sess_bin_isid ! = 0 ) {
dev - > dev_res_bin_isid = sess - > sess_bin_isid ;
dev - > dev_flags | = DF_SPC2_RESERVATIONS_WITH_ISID ;
}
2011-06-08 21:36:43 +04:00
pr_debug ( " SCSI-2 Reserved %s LUN: %u -> MAPPED LUN: %u "
2011-07-19 12:55:10 +04:00
" for %s \n " , tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
cmd - > se_lun - > unpacked_lun , cmd - > se_deve - > mapped_lun ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
sess - > se_node_acl - > initiatorname ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
static struct t10_pr_registration * core_scsi3_locate_pr_reg ( struct se_device * ,
struct se_node_acl * , struct se_session * ) ;
static void core_scsi3_put_pr_reg ( struct t10_pr_registration * ) ;
/*
* Setup in target_core_transport . c : transport_generic_cmd_sequencer ( )
* and called via struct se_cmd - > transport_emulate_cdb ( ) in TCM processing
* thread context .
*/
int core_scsi2_emulate_crh ( struct se_cmd * cmd )
{
struct se_session * se_sess = cmd - > se_sess ;
struct se_subsystem_dev * su_dev = cmd - > se_dev - > se_sub_dev ;
struct t10_pr_registration * pr_reg ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & su_dev - > t10_pr ;
2011-05-03 04:12:10 +04:00
unsigned char * cdb = & cmd - > t_task_cdb [ 0 ] ;
2011-07-19 12:55:10 +04:00
int crh = ( su_dev - > t10_pr . res_type = = SPC3_PERSISTENT_RESERVATIONS ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
int conflict = 0 ;
2011-06-08 21:36:43 +04:00
if ( ! se_sess )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
2011-06-08 21:36:43 +04:00
if ( ! crh )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
goto after_crh ;
pr_reg = core_scsi3_locate_pr_reg ( cmd - > se_dev , se_sess - > se_node_acl ,
se_sess ) ;
if ( pr_reg ) {
/*
* From spc4r17 5.7 .3 Exceptions to SPC - 2 RESERVE and RELEASE
* behavior
*
* A RESERVE ( 6 ) or RESERVE ( 10 ) command shall complete with GOOD
* status , but no reservation shall be established and the
* persistent reservation shall not be changed , if the command
* is received from a ) and b ) below .
*
* A RELEASE ( 6 ) or RELEASE ( 10 ) command shall complete with GOOD
* status , but the persistent reservation shall not be released ,
* if the command is received from a ) and b )
*
* a ) An I_T nexus that is a persistent reservation holder ; or
* b ) An I_T nexus that is registered if a registrants only or
* all registrants type persistent reservation is present .
*
* In all other cases , a RESERVE ( 6 ) command , RESERVE ( 10 ) command ,
* RELEASE ( 6 ) command , or RELEASE ( 10 ) command shall be processed
* as defined in SPC - 2.
*/
if ( pr_reg - > pr_res_holder ) {
core_scsi3_put_pr_reg ( pr_reg ) ;
return 0 ;
}
if ( ( pr_reg - > pr_res_type = = PR_TYPE_WRITE_EXCLUSIVE_REGONLY ) | |
( pr_reg - > pr_res_type = = PR_TYPE_EXCLUSIVE_ACCESS_REGONLY ) | |
( pr_reg - > pr_res_type = = PR_TYPE_WRITE_EXCLUSIVE_ALLREG ) | |
( pr_reg - > pr_res_type = = PR_TYPE_EXCLUSIVE_ACCESS_ALLREG ) ) {
core_scsi3_put_pr_reg ( pr_reg ) ;
return 0 ;
}
core_scsi3_put_pr_reg ( pr_reg ) ;
conflict = 1 ;
} else {
/*
* Following spc2r20 5.5 .1 Reservations overview :
*
* If a logical unit has executed a PERSISTENT RESERVE OUT
* command with the REGISTER or the REGISTER AND IGNORE
* EXISTING KEY service action and is still registered by any
* initiator , all RESERVE commands and all RELEASE commands
* regardless of initiator shall conflict and shall terminate
* with a RESERVATION CONFLICT status .
*/
spin_lock ( & pr_tmpl - > registration_lock ) ;
conflict = ( list_empty ( & pr_tmpl - > registration_list ) ) ? 0 : 1 ;
spin_unlock ( & pr_tmpl - > registration_lock ) ;
}
if ( conflict ) {
2011-06-08 21:36:43 +04:00
pr_err ( " Received legacy SPC-2 RESERVE/RELEASE "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" while active SPC-3 registrations exist, "
" returning RESERVATION_CONFLICT \n " ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
after_crh :
if ( ( cdb [ 0 ] = = RESERVE ) | | ( cdb [ 0 ] = = RESERVE_10 ) )
return core_scsi2_reservation_reserve ( cmd ) ;
else if ( ( cdb [ 0 ] = = RELEASE ) | | ( cdb [ 0 ] = = RELEASE_10 ) )
return core_scsi2_reservation_release ( cmd ) ;
else
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
/*
* Begin SPC - 3 / SPC - 4 Persistent Reservations emulation support
*
* This function is called by those initiator ports who are * NOT *
* the active PR reservation holder when a reservation is present .
*/
static int core_scsi3_pr_seq_non_holder (
struct se_cmd * cmd ,
unsigned char * cdb ,
u32 pr_reg_type )
{
struct se_dev_entry * se_deve ;
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
int other_cdb = 0 , ignore_reg ;
int registered_nexus = 0 , ret = 1 ; /* Conflict by default */
int all_reg = 0 , reg_only = 0 ; /* ALL_REG, REG_ONLY */
int we = 0 ; /* Write Exclusive */
int legacy = 0 ; /* Act like a legacy device and return
* RESERVATION CONFLICT on some CDBs */
/*
* A legacy SPC - 2 reservation is being held .
*/
if ( cmd - > se_dev - > dev_flags & DF_SPC2_RESERVATIONS )
return core_scsi2_reservation_seq_non_holder ( cmd ,
cdb , pr_reg_type ) ;
se_deve = & se_sess - > se_node_acl - > device_list [ cmd - > orig_fe_lun ] ;
/*
* Determine if the registration should be ignored due to
* non - matching ISIDs in core_scsi3_pr_reservation_check ( ) .
*/
ignore_reg = ( pr_reg_type & 0x80000000 ) ;
if ( ignore_reg )
pr_reg_type & = ~ 0x80000000 ;
switch ( pr_reg_type ) {
case PR_TYPE_WRITE_EXCLUSIVE :
we = 1 ;
case PR_TYPE_EXCLUSIVE_ACCESS :
/*
* Some commands are only allowed for the persistent reservation
* holder .
*/
if ( ( se_deve - > def_pr_registered ) & & ! ( ignore_reg ) )
registered_nexus = 1 ;
break ;
case PR_TYPE_WRITE_EXCLUSIVE_REGONLY :
we = 1 ;
case PR_TYPE_EXCLUSIVE_ACCESS_REGONLY :
/*
* Some commands are only allowed for registered I_T Nexuses .
*/
reg_only = 1 ;
if ( ( se_deve - > def_pr_registered ) & & ! ( ignore_reg ) )
registered_nexus = 1 ;
break ;
case PR_TYPE_WRITE_EXCLUSIVE_ALLREG :
we = 1 ;
case PR_TYPE_EXCLUSIVE_ACCESS_ALLREG :
/*
* Each registered I_T Nexus is a reservation holder .
*/
all_reg = 1 ;
if ( ( se_deve - > def_pr_registered ) & & ! ( ignore_reg ) )
registered_nexus = 1 ;
break ;
default :
2011-07-19 12:55:10 +04:00
return - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
/*
* Referenced from spc4r17 table 45 for * NON * PR holder access
*/
switch ( cdb [ 0 ] ) {
case SECURITY_PROTOCOL_IN :
if ( registered_nexus )
return 0 ;
ret = ( we ) ? 0 : 1 ;
break ;
case MODE_SENSE :
case MODE_SENSE_10 :
case READ_ATTRIBUTE :
case READ_BUFFER :
case RECEIVE_DIAGNOSTIC :
if ( legacy ) {
ret = 1 ;
break ;
}
if ( registered_nexus ) {
ret = 0 ;
break ;
}
ret = ( we ) ? 0 : 1 ; /* Allowed Write Exclusive */
break ;
case PERSISTENT_RESERVE_OUT :
/*
* This follows PERSISTENT_RESERVE_OUT service actions that
* are allowed in the presence of various reservations .
* See spc4r17 , table 46
*/
switch ( cdb [ 1 ] & 0x1f ) {
case PRO_CLEAR :
case PRO_PREEMPT :
case PRO_PREEMPT_AND_ABORT :
ret = ( registered_nexus ) ? 0 : 1 ;
break ;
case PRO_REGISTER :
case PRO_REGISTER_AND_IGNORE_EXISTING_KEY :
ret = 0 ;
break ;
case PRO_REGISTER_AND_MOVE :
case PRO_RESERVE :
ret = 1 ;
break ;
case PRO_RELEASE :
ret = ( registered_nexus ) ? 0 : 1 ;
break ;
default :
2011-06-08 21:36:43 +04:00
pr_err ( " Unknown PERSISTENT_RESERVE_OUT service "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" action: 0x%02x \n " , cdb [ 1 ] & 0x1f ) ;
2011-07-19 12:55:10 +04:00
return - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
break ;
case RELEASE :
case RELEASE_10 :
/* Handled by CRH=1 in core_scsi2_emulate_crh() */
ret = 0 ;
break ;
case RESERVE :
case RESERVE_10 :
/* Handled by CRH=1 in core_scsi2_emulate_crh() */
ret = 0 ;
break ;
case TEST_UNIT_READY :
ret = ( legacy ) ? 1 : 0 ; /* Conflict for legacy */
break ;
case MAINTENANCE_IN :
switch ( cdb [ 1 ] & 0x1f ) {
case MI_MANAGEMENT_PROTOCOL_IN :
if ( registered_nexus ) {
ret = 0 ;
break ;
}
ret = ( we ) ? 0 : 1 ; /* Allowed Write Exclusive */
break ;
case MI_REPORT_SUPPORTED_OPERATION_CODES :
case MI_REPORT_SUPPORTED_TASK_MANAGEMENT_FUNCTIONS :
if ( legacy ) {
ret = 1 ;
break ;
}
if ( registered_nexus ) {
ret = 0 ;
break ;
}
ret = ( we ) ? 0 : 1 ; /* Allowed Write Exclusive */
break ;
case MI_REPORT_ALIASES :
case MI_REPORT_IDENTIFYING_INFORMATION :
case MI_REPORT_PRIORITY :
case MI_REPORT_TARGET_PGS :
case MI_REPORT_TIMESTAMP :
ret = 0 ; /* Allowed */
break ;
default :
2011-06-08 21:36:43 +04:00
pr_err ( " Unknown MI Service Action: 0x%02x \n " ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
( cdb [ 1 ] & 0x1f ) ) ;
2011-07-19 12:55:10 +04:00
return - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
break ;
case ACCESS_CONTROL_IN :
case ACCESS_CONTROL_OUT :
case INQUIRY :
case LOG_SENSE :
case READ_MEDIA_SERIAL_NUMBER :
case REPORT_LUNS :
case REQUEST_SENSE :
ret = 0 ; /*/ Allowed CDBs */
break ;
default :
other_cdb = 1 ;
break ;
}
/*
2011-03-31 05:57:33 +04:00
* Case where the CDB is explicitly allowed in the above switch
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
* statement .
*/
2011-06-08 21:36:43 +04:00
if ( ! ret & & ! other_cdb ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
#if 0
2011-06-08 21:36:43 +04:00
pr_debug ( " Allowing explict CDB: 0x%02x for %s "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" reservation holder \n " , cdb [ 0 ] ,
core_scsi3_pr_dump_type ( pr_reg_type ) ) ;
# endif
return ret ;
}
/*
* Check if write exclusive initiator ports * NOT * holding the
* WRITE_EXCLUSIVE_ * reservation .
*/
if ( ( we ) & & ! ( registered_nexus ) ) {
if ( cmd - > data_direction = = DMA_TO_DEVICE ) {
/*
* Conflict for write exclusive
*/
2011-06-08 21:36:43 +04:00
pr_debug ( " %s Conflict for unregistered nexus "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %s CDB: 0x%02x to %s reservation \n " ,
transport_dump_cmd_direction ( cmd ) ,
se_sess - > se_node_acl - > initiatorname , cdb [ 0 ] ,
core_scsi3_pr_dump_type ( pr_reg_type ) ) ;
return 1 ;
} else {
/*
* Allow non WRITE CDBs for all Write Exclusive
* PR TYPEs to pass for registered and
* non - registered_nexuxes NOT holding the reservation .
*
* We only make noise for the unregisterd nexuses ,
* as we expect registered non - reservation holding
* nexuses to issue CDBs .
*/
#if 0
2011-06-08 21:36:43 +04:00
if ( ! registered_nexus ) {
pr_debug ( " Allowing implict CDB: 0x%02x "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for %s reservation on unregistered "
" nexus \n " , cdb [ 0 ] ,
core_scsi3_pr_dump_type ( pr_reg_type ) ) ;
}
# endif
return 0 ;
}
} else if ( ( reg_only ) | | ( all_reg ) ) {
if ( registered_nexus ) {
/*
* For PR_ * _REG_ONLY and PR_ * _ALL_REG reservations ,
* allow commands from registered nexuses .
*/
#if 0
2011-06-08 21:36:43 +04:00
pr_debug ( " Allowing implict CDB: 0x%02x for %s "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" reservation \n " , cdb [ 0 ] ,
core_scsi3_pr_dump_type ( pr_reg_type ) ) ;
# endif
return 0 ;
}
}
2011-06-08 21:36:43 +04:00
pr_debug ( " %s Conflict for %sregistered nexus %s CDB: 0x%2x "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for %s reservation \n " , transport_dump_cmd_direction ( cmd ) ,
( registered_nexus ) ? " " : " un " ,
se_sess - > se_node_acl - > initiatorname , cdb [ 0 ] ,
core_scsi3_pr_dump_type ( pr_reg_type ) ) ;
return 1 ; /* Conflict by default */
}
static u32 core_scsi3_pr_generation ( struct se_device * dev )
{
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u32 prg ;
/*
* PRGeneration field shall contain the value of a 32 - bit wrapping
* counter mainted by the device server .
*
* Note that this is done regardless of Active Persist across
* Target PowerLoss ( APTPL )
*
* See spc4r17 section 6.3 .12 READ_KEYS service action
*/
spin_lock ( & dev - > dev_reservation_lock ) ;
2011-07-19 12:55:10 +04:00
prg = su_dev - > t10_pr . pr_generation + + ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & dev - > dev_reservation_lock ) ;
return prg ;
}
static int core_scsi3_pr_reservation_check (
struct se_cmd * cmd ,
u32 * pr_reg_type )
{
struct se_device * dev = cmd - > se_dev ;
struct se_session * sess = cmd - > se_sess ;
int ret ;
2011-06-08 21:36:43 +04:00
if ( ! sess )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
/*
* A legacy SPC - 2 reservation is being held .
*/
if ( dev - > dev_flags & DF_SPC2_RESERVATIONS )
return core_scsi2_reservation_check ( cmd , pr_reg_type ) ;
spin_lock ( & dev - > dev_reservation_lock ) ;
2011-06-08 21:36:43 +04:00
if ( ! dev - > dev_pr_res_holder ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
* pr_reg_type = dev - > dev_pr_res_holder - > pr_res_type ;
cmd - > pr_res_key = dev - > dev_pr_res_holder - > pr_res_key ;
if ( dev - > dev_pr_res_holder - > pr_reg_nacl ! = sess - > se_node_acl ) {
spin_unlock ( & dev - > dev_reservation_lock ) ;
2011-07-19 12:55:10 +04:00
return - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
2011-06-08 21:36:43 +04:00
if ( ! dev - > dev_pr_res_holder - > isid_present_at_reg ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & dev - > dev_reservation_lock ) ;
return 0 ;
}
ret = ( dev - > dev_pr_res_holder - > pr_reg_bin_isid = =
2011-07-19 12:55:10 +04:00
sess - > sess_bin_isid ) ? 0 : - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Use bit in * pr_reg_type to notify ISID mismatch in
* core_scsi3_pr_seq_non_holder ( ) .
*/
if ( ret ! = 0 )
* pr_reg_type | = 0x80000000 ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
return ret ;
}
static struct t10_pr_registration * __core_scsi3_do_alloc_registration (
struct se_device * dev ,
struct se_node_acl * nacl ,
struct se_dev_entry * deve ,
unsigned char * isid ,
u64 sa_res_key ,
int all_tg_pt ,
int aptpl )
{
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg ;
pr_reg = kmem_cache_zalloc ( t10_pr_reg_cache , GFP_ATOMIC ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg ) {
pr_err ( " Unable to allocate struct t10_pr_registration \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return NULL ;
}
2011-07-19 12:55:10 +04:00
pr_reg - > pr_aptpl_buf = kzalloc ( su_dev - > t10_pr . pr_aptpl_buf_len ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
GFP_ATOMIC ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg - > pr_aptpl_buf ) {
pr_err ( " Unable to allocate pr_reg->pr_aptpl_buf \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
kmem_cache_free ( t10_pr_reg_cache , pr_reg ) ;
return NULL ;
}
INIT_LIST_HEAD ( & pr_reg - > pr_reg_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_abort_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_aptpl_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_atp_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_atp_mem_list ) ;
atomic_set ( & pr_reg - > pr_res_holders , 0 ) ;
pr_reg - > pr_reg_nacl = nacl ;
pr_reg - > pr_reg_deve = deve ;
pr_reg - > pr_res_mapped_lun = deve - > mapped_lun ;
pr_reg - > pr_aptpl_target_lun = deve - > se_lun - > unpacked_lun ;
pr_reg - > pr_res_key = sa_res_key ;
pr_reg - > pr_reg_all_tg_pt = all_tg_pt ;
pr_reg - > pr_reg_aptpl = aptpl ;
pr_reg - > pr_reg_tg_pt_lun = deve - > se_lun ;
/*
* If an ISID value for this SCSI Initiator Port exists ,
* save it to the registration now .
*/
if ( isid ! = NULL ) {
pr_reg - > pr_reg_bin_isid = get_unaligned_be64 ( isid ) ;
snprintf ( pr_reg - > pr_reg_isid , PR_REG_ISID_LEN , " %s " , isid ) ;
pr_reg - > isid_present_at_reg = 1 ;
}
return pr_reg ;
}
static int core_scsi3_lunacl_depend_item ( struct se_dev_entry * ) ;
static void core_scsi3_lunacl_undepend_item ( struct se_dev_entry * ) ;
/*
* Function used for handling PR registrations for ALL_TG_PT = 1 and ALL_TG_PT = 0
* modes .
*/
static struct t10_pr_registration * __core_scsi3_alloc_registration (
struct se_device * dev ,
struct se_node_acl * nacl ,
struct se_dev_entry * deve ,
unsigned char * isid ,
u64 sa_res_key ,
int all_tg_pt ,
int aptpl )
{
struct se_dev_entry * deve_tmp ;
struct se_node_acl * nacl_tmp ;
struct se_port * port , * port_tmp ;
struct target_core_fabric_ops * tfo = nacl - > se_tpg - > se_tpg_tfo ;
struct t10_pr_registration * pr_reg , * pr_reg_atp , * pr_reg_tmp , * pr_reg_tmp_safe ;
int ret ;
/*
* Create a registration for the I_T Nexus upon which the
* PROUT REGISTER was received .
*/
pr_reg = __core_scsi3_do_alloc_registration ( dev , nacl , deve , isid ,
sa_res_key , all_tg_pt , aptpl ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return NULL ;
/*
* Return pointer to pr_reg for ALL_TG_PT = 0
*/
2011-06-08 21:36:43 +04:00
if ( ! all_tg_pt )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return pr_reg ;
/*
* Create list of matching SCSI Initiator Port registrations
* for ALL_TG_PT = 1
*/
spin_lock ( & dev - > se_port_lock ) ;
list_for_each_entry_safe ( port , port_tmp , & dev - > dev_sep_list , sep_list ) {
atomic_inc ( & port - > sep_tg_pt_ref_cnt ) ;
smp_mb__after_atomic_inc ( ) ;
spin_unlock ( & dev - > se_port_lock ) ;
spin_lock_bh ( & port - > sep_alua_lock ) ;
list_for_each_entry ( deve_tmp , & port - > sep_alua_list ,
alua_port_list ) {
/*
* This pointer will be NULL for demo mode MappedLUNs
* that have not been make explict via a ConfigFS
* MappedLUN group for the SCSI Initiator Node ACL .
*/
2011-06-08 21:36:43 +04:00
if ( ! deve_tmp - > se_lun_acl )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
nacl_tmp = deve_tmp - > se_lun_acl - > se_lun_nacl ;
/*
* Skip the matching struct se_node_acl that is allocated
* above . .
*/
if ( nacl = = nacl_tmp )
continue ;
/*
* Only perform PR registrations for target ports on
* the same fabric module as the REGISTER w / ALL_TG_PT = 1
* arrived .
*/
if ( tfo ! = nacl_tmp - > se_tpg - > se_tpg_tfo )
continue ;
/*
* Look for a matching Initiator Node ACL in ASCII format
*/
if ( strcmp ( nacl - > initiatorname , nacl_tmp - > initiatorname ) )
continue ;
atomic_inc ( & deve_tmp - > pr_ref_count ) ;
smp_mb__after_atomic_inc ( ) ;
spin_unlock_bh ( & port - > sep_alua_lock ) ;
/*
* Grab a configfs group dependency that is released
* for the exception path at label out : below , or upon
* completion of adding ALL_TG_PT = 1 registrations in
* __core_scsi3_add_registration ( )
*/
ret = core_scsi3_lunacl_depend_item ( deve_tmp ) ;
if ( ret < 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " core_scsi3_lunacl_depend "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" _item() failed \n " ) ;
atomic_dec ( & port - > sep_tg_pt_ref_cnt ) ;
smp_mb__after_atomic_dec ( ) ;
atomic_dec ( & deve_tmp - > pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
goto out ;
}
/*
* Located a matching SCSI Initiator Port on a different
* port , allocate the pr_reg_atp and attach it to the
* pr_reg - > pr_reg_atp_list that will be processed once
* the original * pr_reg is processed in
* __core_scsi3_add_registration ( )
*/
pr_reg_atp = __core_scsi3_do_alloc_registration ( dev ,
nacl_tmp , deve_tmp , NULL ,
sa_res_key , all_tg_pt , aptpl ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg_atp ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
atomic_dec ( & port - > sep_tg_pt_ref_cnt ) ;
smp_mb__after_atomic_dec ( ) ;
atomic_dec ( & deve_tmp - > pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
core_scsi3_lunacl_undepend_item ( deve_tmp ) ;
goto out ;
}
list_add_tail ( & pr_reg_atp - > pr_reg_atp_mem_list ,
& pr_reg - > pr_reg_atp_list ) ;
spin_lock_bh ( & port - > sep_alua_lock ) ;
}
spin_unlock_bh ( & port - > sep_alua_lock ) ;
spin_lock ( & dev - > se_port_lock ) ;
atomic_dec ( & port - > sep_tg_pt_ref_cnt ) ;
smp_mb__after_atomic_dec ( ) ;
}
spin_unlock ( & dev - > se_port_lock ) ;
return pr_reg ;
out :
list_for_each_entry_safe ( pr_reg_tmp , pr_reg_tmp_safe ,
& pr_reg - > pr_reg_atp_list , pr_reg_atp_mem_list ) {
list_del ( & pr_reg_tmp - > pr_reg_atp_mem_list ) ;
core_scsi3_lunacl_undepend_item ( pr_reg_tmp - > pr_reg_deve ) ;
kmem_cache_free ( t10_pr_reg_cache , pr_reg_tmp ) ;
}
kmem_cache_free ( t10_pr_reg_cache , pr_reg ) ;
return NULL ;
}
int core_scsi3_alloc_aptpl_registration (
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u64 sa_res_key ,
unsigned char * i_port ,
unsigned char * isid ,
u32 mapped_lun ,
unsigned char * t_port ,
u16 tpgt ,
u32 target_lun ,
int res_holder ,
int all_tg_pt ,
u8 type )
{
struct t10_pr_registration * pr_reg ;
2011-06-08 21:36:43 +04:00
if ( ! i_port | | ! t_port | | ! sa_res_key ) {
pr_err ( " Illegal parameters for APTPL registration \n " ) ;
2011-07-19 12:55:10 +04:00
return - EINVAL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
pr_reg = kmem_cache_zalloc ( t10_pr_reg_cache , GFP_KERNEL ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg ) {
pr_err ( " Unable to allocate struct t10_pr_registration \n " ) ;
2011-07-19 12:55:10 +04:00
return - ENOMEM ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
pr_reg - > pr_aptpl_buf = kzalloc ( pr_tmpl - > pr_aptpl_buf_len , GFP_KERNEL ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_abort_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_aptpl_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_atp_list ) ;
INIT_LIST_HEAD ( & pr_reg - > pr_reg_atp_mem_list ) ;
atomic_set ( & pr_reg - > pr_res_holders , 0 ) ;
pr_reg - > pr_reg_nacl = NULL ;
pr_reg - > pr_reg_deve = NULL ;
pr_reg - > pr_res_mapped_lun = mapped_lun ;
pr_reg - > pr_aptpl_target_lun = target_lun ;
pr_reg - > pr_res_key = sa_res_key ;
pr_reg - > pr_reg_all_tg_pt = all_tg_pt ;
pr_reg - > pr_reg_aptpl = 1 ;
pr_reg - > pr_reg_tg_pt_lun = NULL ;
pr_reg - > pr_res_scope = 0 ; /* Always LUN_SCOPE */
pr_reg - > pr_res_type = type ;
/*
* If an ISID value had been saved in APTPL metadata for this
* SCSI Initiator Port , restore it now .
*/
if ( isid ! = NULL ) {
pr_reg - > pr_reg_bin_isid = get_unaligned_be64 ( isid ) ;
snprintf ( pr_reg - > pr_reg_isid , PR_REG_ISID_LEN , " %s " , isid ) ;
pr_reg - > isid_present_at_reg = 1 ;
}
/*
* Copy the i_port and t_port information from caller .
*/
snprintf ( pr_reg - > pr_iport , PR_APTPL_MAX_IPORT_LEN , " %s " , i_port ) ;
snprintf ( pr_reg - > pr_tport , PR_APTPL_MAX_TPORT_LEN , " %s " , t_port ) ;
pr_reg - > pr_reg_tpgt = tpgt ;
/*
* Set pr_res_holder from caller , the pr_reg who is the reservation
* holder will get it ' s pointer set in core_scsi3_aptpl_reserve ( ) once
* the Initiator Node LUN ACL from the fabric module is created for
* this registration .
*/
pr_reg - > pr_res_holder = res_holder ;
list_add_tail ( & pr_reg - > pr_reg_aptpl_list , & pr_tmpl - > aptpl_reg_list ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR APTPL Successfully added registration%s from "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" metadata \n " , ( res_holder ) ? " +reservation " : " " ) ;
return 0 ;
}
static void core_scsi3_aptpl_reserve (
struct se_device * dev ,
struct se_portal_group * tpg ,
struct se_node_acl * node_acl ,
struct t10_pr_registration * pr_reg )
{
char i_buf [ PR_REG_ISID_ID_LEN ] ;
int prf_isid ;
memset ( i_buf , 0 , PR_REG_ISID_ID_LEN ) ;
prf_isid = core_pr_dump_initiator_port ( pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
spin_lock ( & dev - > dev_reservation_lock ) ;
dev - > dev_pr_res_holder = pr_reg ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: APTPL RESERVE created "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" new reservation holder TYPE: %s ALL_TG_PT: %d \n " ,
2011-07-19 12:55:10 +04:00
tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_pr_dump_type ( pr_reg - > pr_res_type ) ,
( pr_reg - > pr_reg_all_tg_pt ) ? 1 : 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] RESERVE Node: %s%s \n " ,
2011-07-19 12:55:10 +04:00
tpg - > se_tpg_tfo - > get_fabric_name ( ) , node_acl - > initiatorname ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
( prf_isid ) ? & i_buf [ 0 ] : " " ) ;
}
static void __core_scsi3_add_registration ( struct se_device * , struct se_node_acl * ,
struct t10_pr_registration * , int , int ) ;
static int __core_scsi3_check_aptpl_registration (
struct se_device * dev ,
struct se_portal_group * tpg ,
struct se_lun * lun ,
u32 target_lun ,
struct se_node_acl * nacl ,
struct se_dev_entry * deve )
{
struct t10_pr_registration * pr_reg , * pr_reg_tmp ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
unsigned char i_port [ PR_APTPL_MAX_IPORT_LEN ] ;
unsigned char t_port [ PR_APTPL_MAX_TPORT_LEN ] ;
u16 tpgt ;
memset ( i_port , 0 , PR_APTPL_MAX_IPORT_LEN ) ;
memset ( t_port , 0 , PR_APTPL_MAX_TPORT_LEN ) ;
/*
* Copy Initiator Port information from struct se_node_acl
*/
snprintf ( i_port , PR_APTPL_MAX_IPORT_LEN , " %s " , nacl - > initiatorname ) ;
snprintf ( t_port , PR_APTPL_MAX_TPORT_LEN , " %s " ,
2011-07-19 12:55:10 +04:00
tpg - > se_tpg_tfo - > tpg_get_wwn ( tpg ) ) ;
tpgt = tpg - > se_tpg_tfo - > tpg_get_tag ( tpg ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Look for the matching registrations + reservation from those
* created from APTPL metadata . Note that multiple registrations
* may exist for fabrics that use ISIDs in their SCSI Initiator Port
* TransportIDs .
*/
spin_lock ( & pr_tmpl - > aptpl_reg_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp , & pr_tmpl - > aptpl_reg_list ,
pr_reg_aptpl_list ) {
2011-06-08 21:36:43 +04:00
if ( ! strcmp ( pr_reg - > pr_iport , i_port ) & &
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
( pr_reg - > pr_res_mapped_lun = = deve - > mapped_lun ) & &
! ( strcmp ( pr_reg - > pr_tport , t_port ) ) & &
( pr_reg - > pr_reg_tpgt = = tpgt ) & &
( pr_reg - > pr_aptpl_target_lun = = target_lun ) ) {
pr_reg - > pr_reg_nacl = nacl ;
pr_reg - > pr_reg_deve = deve ;
pr_reg - > pr_reg_tg_pt_lun = lun ;
list_del ( & pr_reg - > pr_reg_aptpl_list ) ;
spin_unlock ( & pr_tmpl - > aptpl_reg_lock ) ;
/*
* At this point all of the pointers in * pr_reg will
* be setup , so go ahead and add the registration .
*/
__core_scsi3_add_registration ( dev , nacl , pr_reg , 0 , 0 ) ;
/*
* If this registration is the reservation holder ,
* make that happen now . .
*/
if ( pr_reg - > pr_res_holder )
core_scsi3_aptpl_reserve ( dev , tpg ,
nacl , pr_reg ) ;
/*
* Reenable pr_aptpl_active to accept new metadata
* updates once the SCSI device is active again . .
*/
spin_lock ( & pr_tmpl - > aptpl_reg_lock ) ;
pr_tmpl - > pr_aptpl_active = 1 ;
}
}
spin_unlock ( & pr_tmpl - > aptpl_reg_lock ) ;
return 0 ;
}
int core_scsi3_check_aptpl_registration (
struct se_device * dev ,
struct se_portal_group * tpg ,
struct se_lun * lun ,
struct se_lun_acl * lun_acl )
{
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_node_acl * nacl = lun_acl - > se_lun_nacl ;
struct se_dev_entry * deve = & nacl - > device_list [ lun_acl - > mapped_lun ] ;
2011-07-19 12:55:10 +04:00
if ( su_dev - > t10_pr . res_type ! = SPC3_PERSISTENT_RESERVATIONS )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
return __core_scsi3_check_aptpl_registration ( dev , tpg , lun ,
lun - > unpacked_lun , nacl , deve ) ;
}
static void __core_scsi3_dump_registration (
struct target_core_fabric_ops * tfo ,
struct se_device * dev ,
struct se_node_acl * nacl ,
struct t10_pr_registration * pr_reg ,
int register_type )
{
struct se_portal_group * se_tpg = nacl - > se_tpg ;
char i_buf [ PR_REG_ISID_ID_LEN ] ;
int prf_isid ;
memset ( & i_buf [ 0 ] , 0 , PR_REG_ISID_ID_LEN ) ;
prf_isid = core_pr_dump_initiator_port ( pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: REGISTER%s Initiator "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" Node: %s%s \n " , tfo - > get_fabric_name ( ) , ( register_type = = 2 ) ?
" _AND_MOVE " : ( register_type = = 1 ) ?
" _AND_IGNORE_EXISTING_KEY " : " " , nacl - > initiatorname ,
( prf_isid ) ? i_buf : " " ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] registration on Target Port: %s,0x%04x \n " ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
tfo - > get_fabric_name ( ) , tfo - > tpg_get_wwn ( se_tpg ) ,
tfo - > tpg_get_tag ( se_tpg ) ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] for %s TCM Subsystem %s Object Target "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" Port(s) \n " , tfo - > get_fabric_name ( ) ,
( pr_reg - > pr_reg_all_tg_pt ) ? " ALL " : " SINGLE " ,
2011-07-19 12:55:10 +04:00
dev - > transport - > name ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] SA Res Key: 0x%016Lx PRgeneration: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" 0x%08x APTPL: %d \n " , tfo - > get_fabric_name ( ) ,
pr_reg - > pr_res_key , pr_reg - > pr_res_generation ,
pr_reg - > pr_reg_aptpl ) ;
}
/*
* this function can be called with struct se_device - > dev_reservation_lock
* when register_move = 1
*/
static void __core_scsi3_add_registration (
struct se_device * dev ,
struct se_node_acl * nacl ,
struct t10_pr_registration * pr_reg ,
int register_type ,
int register_move )
{
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct target_core_fabric_ops * tfo = nacl - > se_tpg - > se_tpg_tfo ;
struct t10_pr_registration * pr_reg_tmp , * pr_reg_tmp_safe ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Increment PRgeneration counter for struct se_device upon a successful
* REGISTER , see spc4r17 section 6.3 .2 READ_KEYS service action
*
* Also , when register_move = 1 for PROUT REGISTER_AND_MOVE service
* action , the struct se_device - > dev_reservation_lock will already be held ,
* so we do not call core_scsi3_pr_generation ( ) which grabs the lock
* for the REGISTER .
*/
pr_reg - > pr_res_generation = ( register_move ) ?
2011-07-19 12:55:10 +04:00
su_dev - > t10_pr . pr_generation + + :
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_pr_generation ( dev ) ;
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_add_tail ( & pr_reg - > pr_reg_list , & pr_tmpl - > registration_list ) ;
pr_reg - > pr_reg_deve - > def_pr_registered = 1 ;
__core_scsi3_dump_registration ( tfo , dev , nacl , pr_reg , register_type ) ;
spin_unlock ( & pr_tmpl - > registration_lock ) ;
/*
* Skip extra processing for ALL_TG_PT = 0 or REGISTER_AND_MOVE .
*/
2011-06-08 21:36:43 +04:00
if ( ! pr_reg - > pr_reg_all_tg_pt | | register_move )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return ;
/*
* Walk pr_reg - > pr_reg_atp_list and add registrations for ALL_TG_PT = 1
* allocated in __core_scsi3_alloc_registration ( )
*/
list_for_each_entry_safe ( pr_reg_tmp , pr_reg_tmp_safe ,
& pr_reg - > pr_reg_atp_list , pr_reg_atp_mem_list ) {
list_del ( & pr_reg_tmp - > pr_reg_atp_mem_list ) ;
pr_reg_tmp - > pr_res_generation = core_scsi3_pr_generation ( dev ) ;
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_add_tail ( & pr_reg_tmp - > pr_reg_list ,
& pr_tmpl - > registration_list ) ;
pr_reg_tmp - > pr_reg_deve - > def_pr_registered = 1 ;
__core_scsi3_dump_registration ( tfo , dev ,
pr_reg_tmp - > pr_reg_nacl , pr_reg_tmp ,
register_type ) ;
spin_unlock ( & pr_tmpl - > registration_lock ) ;
/*
* Drop configfs group dependency reference from
* __core_scsi3_alloc_registration ( )
*/
core_scsi3_lunacl_undepend_item ( pr_reg_tmp - > pr_reg_deve ) ;
}
}
static int core_scsi3_alloc_registration (
struct se_device * dev ,
struct se_node_acl * nacl ,
struct se_dev_entry * deve ,
unsigned char * isid ,
u64 sa_res_key ,
int all_tg_pt ,
int aptpl ,
int register_type ,
int register_move )
{
struct t10_pr_registration * pr_reg ;
pr_reg = __core_scsi3_alloc_registration ( dev , nacl , deve , isid ,
sa_res_key , all_tg_pt , aptpl ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg )
2011-07-19 12:55:10 +04:00
return - EPERM ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
__core_scsi3_add_registration ( dev , nacl , pr_reg ,
register_type , register_move ) ;
return 0 ;
}
static struct t10_pr_registration * __core_scsi3_locate_pr_reg (
struct se_device * dev ,
struct se_node_acl * nacl ,
unsigned char * isid )
{
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg , * pr_reg_tmp ;
struct se_portal_group * tpg ;
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
/*
* First look for a matching struct se_node_acl
*/
if ( pr_reg - > pr_reg_nacl ! = nacl )
continue ;
tpg = pr_reg - > pr_reg_nacl - > se_tpg ;
/*
* If this registration does NOT contain a fabric provided
* ISID , then we have found a match .
*/
2011-06-08 21:36:43 +04:00
if ( ! pr_reg - > isid_present_at_reg ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Determine if this SCSI device server requires that
* SCSI Intiatior TransportID w / ISIDs is enforced
* for fabric modules ( iSCSI ) requiring them .
*/
2011-07-19 12:55:10 +04:00
if ( tpg - > se_tpg_tfo - > sess_get_initiator_sid ! = NULL ) {
if ( dev - > se_sub_dev - > se_dev_attrib . enforce_pr_isids )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
}
atomic_inc ( & pr_reg - > pr_res_holders ) ;
smp_mb__after_atomic_inc ( ) ;
spin_unlock ( & pr_tmpl - > registration_lock ) ;
return pr_reg ;
}
/*
* If the * pr_reg contains a fabric defined ISID for multi - value
* SCSI Initiator Port TransportIDs , then we expect a valid
* matching ISID to be provided by the local SCSI Initiator Port .
*/
2011-06-08 21:36:43 +04:00
if ( ! isid )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
if ( strcmp ( isid , pr_reg - > pr_reg_isid ) )
continue ;
atomic_inc ( & pr_reg - > pr_res_holders ) ;
smp_mb__after_atomic_inc ( ) ;
spin_unlock ( & pr_tmpl - > registration_lock ) ;
return pr_reg ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
return NULL ;
}
static struct t10_pr_registration * core_scsi3_locate_pr_reg (
struct se_device * dev ,
struct se_node_acl * nacl ,
struct se_session * sess )
{
struct se_portal_group * tpg = nacl - > se_tpg ;
unsigned char buf [ PR_REG_ISID_LEN ] , * isid_ptr = NULL ;
2011-07-19 12:55:10 +04:00
if ( tpg - > se_tpg_tfo - > sess_get_initiator_sid ! = NULL ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
memset ( & buf [ 0 ] , 0 , PR_REG_ISID_LEN ) ;
2011-07-19 12:55:10 +04:00
tpg - > se_tpg_tfo - > sess_get_initiator_sid ( sess , & buf [ 0 ] ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
PR_REG_ISID_LEN ) ;
isid_ptr = & buf [ 0 ] ;
}
return __core_scsi3_locate_pr_reg ( dev , nacl , isid_ptr ) ;
}
static void core_scsi3_put_pr_reg ( struct t10_pr_registration * pr_reg )
{
atomic_dec ( & pr_reg - > pr_res_holders ) ;
smp_mb__after_atomic_dec ( ) ;
}
static int core_scsi3_check_implict_release (
struct se_device * dev ,
struct t10_pr_registration * pr_reg )
{
struct se_node_acl * nacl = pr_reg - > pr_reg_nacl ;
struct t10_pr_registration * pr_res_holder ;
int ret = 0 ;
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
2011-06-08 21:36:43 +04:00
if ( ! pr_res_holder ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & dev - > dev_reservation_lock ) ;
return ret ;
}
if ( pr_res_holder = = pr_reg ) {
/*
* Perform an implict RELEASE if the registration that
* is being released is holding the reservation .
*
* From spc4r17 , section 5.7 .11 .1 :
*
* e ) If the I_T nexus is the persistent reservation holder
* and the persistent reservation is not an all registrants
* type , then a PERSISTENT RESERVE OUT command with REGISTER
* service action or REGISTER AND IGNORE EXISTING KEY
* service action with the SERVICE ACTION RESERVATION KEY
* field set to zero ( see 5.7 .11 .3 ) .
*/
__core_scsi3_complete_pro_release ( dev , nacl , pr_reg , 0 ) ;
ret = 1 ;
/*
* For ' All Registrants ' reservation types , all existing
* registrations are still processed as reservation holders
* in core_scsi3_pr_seq_non_holder ( ) after the initial
* reservation holder is implictly released here .
*/
} else if ( pr_reg - > pr_reg_all_tg_pt & &
( ! strcmp ( pr_res_holder - > pr_reg_nacl - > initiatorname ,
pr_reg - > pr_reg_nacl - > initiatorname ) ) & &
( pr_res_holder - > pr_res_key = = pr_reg - > pr_res_key ) ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Unable to perform ALL_TG_PT=1 "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" UNREGISTER while existing reservation with matching "
" key 0x%016Lx is present from another SCSI Initiator "
" Port \n " , pr_reg - > pr_res_key ) ;
2011-07-19 12:55:10 +04:00
ret = - EPERM ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
spin_unlock ( & dev - > dev_reservation_lock ) ;
return ret ;
}
/*
2011-07-19 12:55:10 +04:00
* Called with struct t10_reservation - > registration_lock held .
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
*/
static void __core_scsi3_free_registration (
struct se_device * dev ,
struct t10_pr_registration * pr_reg ,
struct list_head * preempt_and_abort_list ,
int dec_holders )
{
struct target_core_fabric_ops * tfo =
pr_reg - > pr_reg_nacl - > se_tpg - > se_tpg_tfo ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
char i_buf [ PR_REG_ISID_ID_LEN ] ;
int prf_isid ;
memset ( i_buf , 0 , PR_REG_ISID_ID_LEN ) ;
prf_isid = core_pr_dump_initiator_port ( pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
pr_reg - > pr_reg_deve - > def_pr_registered = 0 ;
pr_reg - > pr_reg_deve - > pr_res_key = 0 ;
list_del ( & pr_reg - > pr_reg_list ) ;
/*
* Caller accessing * pr_reg using core_scsi3_locate_pr_reg ( ) ,
* so call core_scsi3_put_pr_reg ( ) to decrement our reference .
*/
if ( dec_holders )
core_scsi3_put_pr_reg ( pr_reg ) ;
/*
* Wait until all reference from any other I_T nexuses for this
* * pr_reg have been released . Because list_del ( ) is called above ,
* the last core_scsi3_put_pr_reg ( pr_reg ) will release this reference
* count back to zero , and we release * pr_reg .
*/
while ( atomic_read ( & pr_reg - > pr_res_holders ) ! = 0 ) {
spin_unlock ( & pr_tmpl - > registration_lock ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] waiting for pr_res_holders \n " ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
tfo - > get_fabric_name ( ) ) ;
cpu_relax ( ) ;
spin_lock ( & pr_tmpl - > registration_lock ) ;
}
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: UNREGISTER Initiator "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" Node: %s%s \n " , tfo - > get_fabric_name ( ) ,
pr_reg - > pr_reg_nacl - > initiatorname ,
( prf_isid ) ? & i_buf [ 0 ] : " " ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] for %s TCM Subsystem %s Object Target "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" Port(s) \n " , tfo - > get_fabric_name ( ) ,
( pr_reg - > pr_reg_all_tg_pt ) ? " ALL " : " SINGLE " ,
2011-07-19 12:55:10 +04:00
dev - > transport - > name ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] SA Res Key: 0x%016Lx PRgeneration: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" 0x%08x \n " , tfo - > get_fabric_name ( ) , pr_reg - > pr_res_key ,
pr_reg - > pr_res_generation ) ;
2011-06-08 21:36:43 +04:00
if ( ! preempt_and_abort_list ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_reg - > pr_reg_deve = NULL ;
pr_reg - > pr_reg_nacl = NULL ;
kfree ( pr_reg - > pr_aptpl_buf ) ;
kmem_cache_free ( t10_pr_reg_cache , pr_reg ) ;
return ;
}
/*
* For PREEMPT_AND_ABORT , the list of * pr_reg in preempt_and_abort_list
* are released once the ABORT_TASK_SET has completed . .
*/
list_add_tail ( & pr_reg - > pr_reg_abort_list , preempt_and_abort_list ) ;
}
void core_scsi3_free_pr_reg_from_nacl (
struct se_device * dev ,
struct se_node_acl * nacl )
{
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg , * pr_reg_tmp , * pr_res_holder ;
/*
* If the passed se_node_acl matches the reservation holder ,
* release the reservation .
*/
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
if ( ( pr_res_holder ! = NULL ) & &
( pr_res_holder - > pr_reg_nacl = = nacl ) )
__core_scsi3_complete_pro_release ( dev , nacl , pr_res_holder , 0 ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
/*
* Release any registration associated with the struct se_node_acl .
*/
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
if ( pr_reg - > pr_reg_nacl ! = nacl )
continue ;
__core_scsi3_free_registration ( dev , pr_reg , NULL , 0 ) ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
}
void core_scsi3_free_all_registrations (
struct se_device * dev )
{
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg , * pr_reg_tmp , * pr_res_holder ;
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
if ( pr_res_holder ! = NULL ) {
struct se_node_acl * pr_res_nacl = pr_res_holder - > pr_reg_nacl ;
__core_scsi3_complete_pro_release ( dev , pr_res_nacl ,
pr_res_holder , 0 ) ;
}
spin_unlock ( & dev - > dev_reservation_lock ) ;
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
__core_scsi3_free_registration ( dev , pr_reg , NULL , 0 ) ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
spin_lock ( & pr_tmpl - > aptpl_reg_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp , & pr_tmpl - > aptpl_reg_list ,
pr_reg_aptpl_list ) {
list_del ( & pr_reg - > pr_reg_aptpl_list ) ;
kfree ( pr_reg - > pr_aptpl_buf ) ;
kmem_cache_free ( t10_pr_reg_cache , pr_reg ) ;
}
spin_unlock ( & pr_tmpl - > aptpl_reg_lock ) ;
}
static int core_scsi3_tpg_depend_item ( struct se_portal_group * tpg )
{
2011-07-19 12:55:10 +04:00
return configfs_depend_item ( tpg - > se_tpg_tfo - > tf_subsys ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& tpg - > tpg_group . cg_item ) ;
}
static void core_scsi3_tpg_undepend_item ( struct se_portal_group * tpg )
{
2011-07-19 12:55:10 +04:00
configfs_undepend_item ( tpg - > se_tpg_tfo - > tf_subsys ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& tpg - > tpg_group . cg_item ) ;
atomic_dec ( & tpg - > tpg_pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
}
static int core_scsi3_nodeacl_depend_item ( struct se_node_acl * nacl )
{
struct se_portal_group * tpg = nacl - > se_tpg ;
if ( nacl - > dynamic_node_acl )
return 0 ;
2011-07-19 12:55:10 +04:00
return configfs_depend_item ( tpg - > se_tpg_tfo - > tf_subsys ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& nacl - > acl_group . cg_item ) ;
}
static void core_scsi3_nodeacl_undepend_item ( struct se_node_acl * nacl )
{
struct se_portal_group * tpg = nacl - > se_tpg ;
if ( nacl - > dynamic_node_acl ) {
atomic_dec ( & nacl - > acl_pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
return ;
}
2011-07-19 12:55:10 +04:00
configfs_undepend_item ( tpg - > se_tpg_tfo - > tf_subsys ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& nacl - > acl_group . cg_item ) ;
atomic_dec ( & nacl - > acl_pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
}
static int core_scsi3_lunacl_depend_item ( struct se_dev_entry * se_deve )
{
struct se_lun_acl * lun_acl = se_deve - > se_lun_acl ;
struct se_node_acl * nacl ;
struct se_portal_group * tpg ;
/*
* For nacl - > dynamic_node_acl = 1
*/
2011-06-08 21:36:43 +04:00
if ( ! lun_acl )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
nacl = lun_acl - > se_lun_nacl ;
tpg = nacl - > se_tpg ;
2011-07-19 12:55:10 +04:00
return configfs_depend_item ( tpg - > se_tpg_tfo - > tf_subsys ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& lun_acl - > se_lun_group . cg_item ) ;
}
static void core_scsi3_lunacl_undepend_item ( struct se_dev_entry * se_deve )
{
struct se_lun_acl * lun_acl = se_deve - > se_lun_acl ;
struct se_node_acl * nacl ;
struct se_portal_group * tpg ;
/*
* For nacl - > dynamic_node_acl = 1
*/
2011-06-08 21:36:43 +04:00
if ( ! lun_acl ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
atomic_dec ( & se_deve - > pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
return ;
}
nacl = lun_acl - > se_lun_nacl ;
tpg = nacl - > se_tpg ;
2011-07-19 12:55:10 +04:00
configfs_undepend_item ( tpg - > se_tpg_tfo - > tf_subsys ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& lun_acl - > se_lun_group . cg_item ) ;
atomic_dec ( & se_deve - > pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
}
static int core_scsi3_decode_spec_i_port (
struct se_cmd * cmd ,
struct se_portal_group * tpg ,
unsigned char * l_isid ,
u64 sa_res_key ,
int all_tg_pt ,
int aptpl )
{
2011-07-19 14:26:37 +04:00
struct se_device * dev = cmd - > se_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_port * tmp_port ;
struct se_portal_group * dest_tpg = NULL , * tmp_tpg ;
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_node_acl * dest_node_acl = NULL ;
struct se_dev_entry * dest_se_deve = NULL , * local_se_deve ;
struct t10_pr_registration * dest_pr_reg , * local_pr_reg , * pr_reg_e ;
struct t10_pr_registration * pr_reg_tmp , * pr_reg_tmp_safe ;
struct list_head tid_dest_list ;
struct pr_transport_id_holder * tidh_new , * tidh , * tidh_tmp ;
struct target_core_fabric_ops * tmp_tf_ops ;
2011-07-20 23:13:28 +04:00
unsigned char * buf ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
unsigned char * ptr , * i_str = NULL , proto_ident , tmp_proto_ident ;
char * iport_ptr = NULL , dest_iport [ 64 ] , i_buf [ PR_REG_ISID_ID_LEN ] ;
u32 tpdl , tid_len = 0 ;
int ret , dest_local_nexus , prf_isid ;
u32 dest_rtpi = 0 ;
memset ( dest_iport , 0 , 64 ) ;
INIT_LIST_HEAD ( & tid_dest_list ) ;
local_se_deve = & se_sess - > se_node_acl - > device_list [ cmd - > orig_fe_lun ] ;
/*
* Allocate a struct pr_transport_id_holder and setup the
* local_node_acl and local_se_deve pointers and add to
* struct list_head tid_dest_list for add registration
* processing in the loop of tid_dest_list below .
*/
tidh_new = kzalloc ( sizeof ( struct pr_transport_id_holder ) , GFP_KERNEL ) ;
2011-06-08 21:36:43 +04:00
if ( ! tidh_new ) {
pr_err ( " Unable to allocate tidh_new \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
INIT_LIST_HEAD ( & tidh_new - > dest_list ) ;
tidh_new - > dest_tpg = tpg ;
tidh_new - > dest_node_acl = se_sess - > se_node_acl ;
tidh_new - > dest_se_deve = local_se_deve ;
2011-07-19 14:26:37 +04:00
local_pr_reg = __core_scsi3_alloc_registration ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl , local_se_deve , l_isid ,
sa_res_key , all_tg_pt , aptpl ) ;
2011-06-08 21:36:43 +04:00
if ( ! local_pr_reg ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
kfree ( tidh_new ) ;
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
tidh_new - > dest_pr_reg = local_pr_reg ;
/*
* The local I_T nexus does not hold any configfs dependances ,
* so we set tid_h - > dest_local_nexus = 1 to prevent the
* configfs_undepend_item ( ) calls in the tid_dest_list loops below .
*/
tidh_new - > dest_local_nexus = 1 ;
list_add_tail ( & tidh_new - > dest_list , & tid_dest_list ) ;
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* For a PERSISTENT RESERVE OUT specify initiator ports payload ,
* first extract TransportID Parameter Data Length , and make sure
* the value matches up to the SCSI expected data transfer length .
*/
tpdl = ( buf [ 24 ] & 0xff ) < < 24 ;
tpdl | = ( buf [ 25 ] & 0xff ) < < 16 ;
tpdl | = ( buf [ 26 ] & 0xff ) < < 8 ;
tpdl | = buf [ 27 ] & 0xff ;
if ( ( tpdl + 28 ) ! = cmd - > data_length ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Illegal tpdl: %u + 28 byte header "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" does not equal CDB data_length: %u \n " , tpdl ,
cmd - > data_length ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
/*
* Start processing the received transport IDs using the
* receiving I_T Nexus portal ' s fabric dependent methods to
* obtain the SCSI Initiator Port / Device Identifiers .
*/
ptr = & buf [ 28 ] ;
while ( tpdl > 0 ) {
proto_ident = ( ptr [ 0 ] & 0x0f ) ;
dest_tpg = NULL ;
spin_lock ( & dev - > se_port_lock ) ;
list_for_each_entry ( tmp_port , & dev - > dev_sep_list , sep_list ) {
tmp_tpg = tmp_port - > sep_tpg ;
2011-06-08 21:36:43 +04:00
if ( ! tmp_tpg )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
2011-07-19 12:55:10 +04:00
tmp_tf_ops = tmp_tpg - > se_tpg_tfo ;
2011-06-08 21:36:43 +04:00
if ( ! tmp_tf_ops )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
2011-06-08 21:36:43 +04:00
if ( ! tmp_tf_ops - > get_fabric_proto_ident | |
! tmp_tf_ops - > tpg_parse_pr_out_transport_id )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
/*
* Look for the matching proto_ident provided by
* the received TransportID
*/
tmp_proto_ident = tmp_tf_ops - > get_fabric_proto_ident ( tmp_tpg ) ;
if ( tmp_proto_ident ! = proto_ident )
continue ;
dest_rtpi = tmp_port - > sep_rtpi ;
i_str = tmp_tf_ops - > tpg_parse_pr_out_transport_id (
tmp_tpg , ( const char * ) ptr , & tid_len ,
& iport_ptr ) ;
2011-06-08 21:36:43 +04:00
if ( ! i_str )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
atomic_inc ( & tmp_tpg - > tpg_pr_ref_count ) ;
smp_mb__after_atomic_inc ( ) ;
spin_unlock ( & dev - > se_port_lock ) ;
ret = core_scsi3_tpg_depend_item ( tmp_tpg ) ;
if ( ret ! = 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " core_scsi3_tpg_depend_item() "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for tmp_tpg \n " ) ;
atomic_dec ( & tmp_tpg - > tpg_pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
ret = PYX_TRANSPORT_LU_COMM_FAILURE ;
goto out ;
}
/*
* Locate the desination initiator ACL to be registered
* from the decoded fabric module specific TransportID
* at * i_str .
*/
spin_lock_bh ( & tmp_tpg - > acl_node_lock ) ;
dest_node_acl = __core_tpg_get_initiator_node_acl (
tmp_tpg , i_str ) ;
if ( dest_node_acl ) {
atomic_inc ( & dest_node_acl - > acl_pr_ref_count ) ;
smp_mb__after_atomic_inc ( ) ;
}
spin_unlock_bh ( & tmp_tpg - > acl_node_lock ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_node_acl ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_tpg_undepend_item ( tmp_tpg ) ;
spin_lock ( & dev - > se_port_lock ) ;
continue ;
}
ret = core_scsi3_nodeacl_depend_item ( dest_node_acl ) ;
if ( ret ! = 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " configfs_depend_item() failed "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for dest_node_acl->acl_group \n " ) ;
atomic_dec ( & dest_node_acl - > acl_pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
core_scsi3_tpg_undepend_item ( tmp_tpg ) ;
ret = PYX_TRANSPORT_LU_COMM_FAILURE ;
goto out ;
}
dest_tpg = tmp_tpg ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR SPEC_I_PT: Located %s Node: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %s Port RTPI: %hu \n " ,
2011-07-19 12:55:10 +04:00
dest_tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_node_acl - > initiatorname , dest_rtpi ) ;
spin_lock ( & dev - > se_port_lock ) ;
break ;
}
spin_unlock ( & dev - > se_port_lock ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_tpg ) {
pr_err ( " SPC-3 PR SPEC_I_PT: Unable to locate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" dest_tpg \n " ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
#if 0
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR SPEC_I_PT: Got %s data_length: %u tpdl: %u "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" tid_len: %d for %s + %s \n " ,
2011-07-19 12:55:10 +04:00
dest_tpg - > se_tpg_tfo - > get_fabric_name ( ) , cmd - > data_length ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
tpdl , tid_len , i_str , iport_ptr ) ;
# endif
if ( tid_len > tpdl ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR SPEC_I_PT: Illegal tid_len: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %u for Transport ID: %s \n " , tid_len , ptr ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
/*
* Locate the desintation struct se_dev_entry pointer for matching
* RELATIVE TARGET PORT IDENTIFIER on the receiving I_T Nexus
* Target Port .
*/
dest_se_deve = core_get_se_deve_from_rtpi ( dest_node_acl ,
dest_rtpi ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_se_deve ) {
pr_err ( " Unable to locate %s dest_se_deve "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" from destination RTPI: %hu \n " ,
2011-07-19 12:55:10 +04:00
dest_tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_rtpi ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
ret = core_scsi3_lunacl_depend_item ( dest_se_deve ) ;
if ( ret < 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " core_scsi3_lunacl_depend_item() "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" failed \n " ) ;
atomic_dec ( & dest_se_deve - > pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
ret = PYX_TRANSPORT_LU_COMM_FAILURE ;
goto out ;
}
#if 0
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR SPEC_I_PT: Located %s Node: %s "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" dest_se_deve mapped_lun: %u \n " ,
2011-07-19 12:55:10 +04:00
dest_tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_node_acl - > initiatorname , dest_se_deve - > mapped_lun ) ;
# endif
/*
* Skip any TransportIDs that already have a registration for
* this target port .
*/
pr_reg_e = __core_scsi3_locate_pr_reg ( dev , dest_node_acl ,
iport_ptr ) ;
if ( pr_reg_e ) {
core_scsi3_put_pr_reg ( pr_reg_e ) ;
core_scsi3_lunacl_undepend_item ( dest_se_deve ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
ptr + = tid_len ;
tpdl - = tid_len ;
tid_len = 0 ;
continue ;
}
/*
* Allocate a struct pr_transport_id_holder and setup
* the dest_node_acl and dest_se_deve pointers for the
* loop below .
*/
tidh_new = kzalloc ( sizeof ( struct pr_transport_id_holder ) ,
GFP_KERNEL ) ;
2011-06-08 21:36:43 +04:00
if ( ! tidh_new ) {
pr_err ( " Unable to allocate tidh_new \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_lunacl_undepend_item ( dest_se_deve ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
ret = PYX_TRANSPORT_LU_COMM_FAILURE ;
goto out ;
}
INIT_LIST_HEAD ( & tidh_new - > dest_list ) ;
tidh_new - > dest_tpg = dest_tpg ;
tidh_new - > dest_node_acl = dest_node_acl ;
tidh_new - > dest_se_deve = dest_se_deve ;
/*
* Allocate , but do NOT add the registration for the
* TransportID referenced SCSI Initiator port . This
* done because of the following from spc4r17 in section
* 6.14 .3 wrt SPEC_I_PT :
*
* " If a registration fails for any initiator port (e.g., if th
* logical unit does not have enough resources available to
* hold the registration information ) , no registrations shall be
* made , and the command shall be terminated with
* CHECK CONDITION status . "
*
* That means we call __core_scsi3_alloc_registration ( ) here ,
* and then call __core_scsi3_add_registration ( ) in the
* 2 nd loop which will never fail .
*/
2011-07-19 14:26:37 +04:00
dest_pr_reg = __core_scsi3_alloc_registration ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_node_acl , dest_se_deve , iport_ptr ,
sa_res_key , all_tg_pt , aptpl ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_pr_reg ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_lunacl_undepend_item ( dest_se_deve ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
kfree ( tidh_new ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
tidh_new - > dest_pr_reg = dest_pr_reg ;
list_add_tail ( & tidh_new - > dest_list , & tid_dest_list ) ;
ptr + = tid_len ;
tpdl - = tid_len ;
tid_len = 0 ;
}
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Go ahead and create a registrations from tid_dest_list for the
* SPEC_I_PT provided TransportID for the * tidh referenced dest_node_acl
* and dest_se_deve .
*
* The SA Reservation Key from the PROUT is set for the
* registration , and ALL_TG_PT is also passed . ALL_TG_PT = 1
* means that the TransportID Initiator port will be
* registered on all of the target ports in the SCSI target device
* ALL_TG_PT = 0 means the registration will only be for the
* SCSI target port the PROUT REGISTER with SPEC_I_PT = 1
* was received .
*/
list_for_each_entry_safe ( tidh , tidh_tmp , & tid_dest_list , dest_list ) {
dest_tpg = tidh - > dest_tpg ;
dest_node_acl = tidh - > dest_node_acl ;
dest_se_deve = tidh - > dest_se_deve ;
dest_pr_reg = tidh - > dest_pr_reg ;
dest_local_nexus = tidh - > dest_local_nexus ;
list_del ( & tidh - > dest_list ) ;
kfree ( tidh ) ;
memset ( i_buf , 0 , PR_REG_ISID_ID_LEN ) ;
prf_isid = core_pr_dump_initiator_port ( dest_pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
2011-07-19 14:26:37 +04:00
__core_scsi3_add_registration ( cmd - > se_dev , dest_node_acl ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_pr_reg , 0 , 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] SPEC_I_PT: Successfully "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" registered Transport ID for Node: %s%s Mapped LUN: "
2011-07-19 12:55:10 +04:00
" %u \n " , dest_tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_node_acl - > initiatorname , ( prf_isid ) ?
& i_buf [ 0 ] : " " , dest_se_deve - > mapped_lun ) ;
if ( dest_local_nexus )
continue ;
core_scsi3_lunacl_undepend_item ( dest_se_deve ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
}
return 0 ;
out :
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* For the failure case , release everything from tid_dest_list
* including * dest_pr_reg and the configfs dependances . .
*/
list_for_each_entry_safe ( tidh , tidh_tmp , & tid_dest_list , dest_list ) {
dest_tpg = tidh - > dest_tpg ;
dest_node_acl = tidh - > dest_node_acl ;
dest_se_deve = tidh - > dest_se_deve ;
dest_pr_reg = tidh - > dest_pr_reg ;
dest_local_nexus = tidh - > dest_local_nexus ;
list_del ( & tidh - > dest_list ) ;
kfree ( tidh ) ;
/*
* Release any extra ALL_TG_PT = 1 registrations for
* the SPEC_I_PT = 1 case .
*/
list_for_each_entry_safe ( pr_reg_tmp , pr_reg_tmp_safe ,
& dest_pr_reg - > pr_reg_atp_list ,
pr_reg_atp_mem_list ) {
list_del ( & pr_reg_tmp - > pr_reg_atp_mem_list ) ;
core_scsi3_lunacl_undepend_item ( pr_reg_tmp - > pr_reg_deve ) ;
kmem_cache_free ( t10_pr_reg_cache , pr_reg_tmp ) ;
}
kfree ( dest_pr_reg - > pr_aptpl_buf ) ;
kmem_cache_free ( t10_pr_reg_cache , dest_pr_reg ) ;
if ( dest_local_nexus )
continue ;
core_scsi3_lunacl_undepend_item ( dest_se_deve ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_tpg ) ;
}
return ret ;
}
/*
* Called with struct se_device - > dev_reservation_lock held
*/
static int __core_scsi3_update_aptpl_buf (
struct se_device * dev ,
unsigned char * buf ,
u32 pr_aptpl_buf_len ,
int clear_aptpl_metadata )
{
struct se_lun * lun ;
struct se_portal_group * tpg ;
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg ;
unsigned char tmp [ 512 ] , isid_buf [ 32 ] ;
ssize_t len = 0 ;
int reg_count = 0 ;
memset ( buf , 0 , pr_aptpl_buf_len ) ;
/*
* Called to clear metadata once APTPL has been deactivated .
*/
if ( clear_aptpl_metadata ) {
snprintf ( buf , pr_aptpl_buf_len ,
" No Registrations or Reservations \n " ) ;
return 0 ;
}
/*
* Walk the registration list . .
*/
2011-07-19 12:55:10 +04:00
spin_lock ( & su_dev - > t10_pr . registration_lock ) ;
list_for_each_entry ( pr_reg , & su_dev - > t10_pr . registration_list ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_reg_list ) {
tmp [ 0 ] = ' \0 ' ;
isid_buf [ 0 ] = ' \0 ' ;
tpg = pr_reg - > pr_reg_nacl - > se_tpg ;
lun = pr_reg - > pr_reg_tg_pt_lun ;
/*
* Write out any ISID value to APTPL metadata that was included
* in the original registration .
*/
if ( pr_reg - > isid_present_at_reg )
snprintf ( isid_buf , 32 , " initiator_sid=%s \n " ,
pr_reg - > pr_reg_isid ) ;
/*
* Include special metadata if the pr_reg matches the
* reservation holder .
*/
if ( dev - > dev_pr_res_holder = = pr_reg ) {
snprintf ( tmp , 512 , " PR_REG_START: %d "
" \n initiator_fabric=%s \n "
" initiator_node=%s \n %s "
" sa_res_key=%llu \n "
" res_holder=1 \n res_type=%02x \n "
" res_scope=%02x \n res_all_tg_pt=%d \n "
" mapped_lun=%u \n " , reg_count ,
2011-07-19 12:55:10 +04:00
tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_reg - > pr_reg_nacl - > initiatorname , isid_buf ,
pr_reg - > pr_res_key , pr_reg - > pr_res_type ,
pr_reg - > pr_res_scope , pr_reg - > pr_reg_all_tg_pt ,
pr_reg - > pr_res_mapped_lun ) ;
} else {
snprintf ( tmp , 512 , " PR_REG_START: %d \n "
" initiator_fabric=%s \n initiator_node=%s \n %s "
" sa_res_key=%llu \n res_holder=0 \n "
" res_all_tg_pt=%d \n mapped_lun=%u \n " ,
2011-07-19 12:55:10 +04:00
reg_count , tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_reg - > pr_reg_nacl - > initiatorname , isid_buf ,
pr_reg - > pr_res_key , pr_reg - > pr_reg_all_tg_pt ,
pr_reg - > pr_res_mapped_lun ) ;
}
2011-06-15 21:03:05 +04:00
if ( ( len + strlen ( tmp ) > = pr_aptpl_buf_len ) ) {
2011-06-08 21:36:43 +04:00
pr_err ( " Unable to update renaming "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" APTPL metadata \n " ) ;
2011-07-19 12:55:10 +04:00
spin_unlock ( & su_dev - > t10_pr . registration_lock ) ;
return - EMSGSIZE ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
len + = sprintf ( buf + len , " %s " , tmp ) ;
/*
* Include information about the associated SCSI target port .
*/
snprintf ( tmp , 512 , " target_fabric=%s \n target_node=%s \n "
" tpgt=%hu \n port_rtpi=%hu \n target_lun=%u \n PR_REG_END: "
2011-07-19 12:55:10 +04:00
" %d \n " , tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
tpg - > se_tpg_tfo - > tpg_get_wwn ( tpg ) ,
tpg - > se_tpg_tfo - > tpg_get_tag ( tpg ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
lun - > lun_sep - > sep_rtpi , lun - > unpacked_lun , reg_count ) ;
2011-06-15 21:03:05 +04:00
if ( ( len + strlen ( tmp ) > = pr_aptpl_buf_len ) ) {
2011-06-08 21:36:43 +04:00
pr_err ( " Unable to update renaming "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" APTPL metadata \n " ) ;
2011-07-19 12:55:10 +04:00
spin_unlock ( & su_dev - > t10_pr . registration_lock ) ;
return - EMSGSIZE ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
len + = sprintf ( buf + len , " %s " , tmp ) ;
reg_count + + ;
}
2011-07-19 12:55:10 +04:00
spin_unlock ( & su_dev - > t10_pr . registration_lock ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
2011-06-08 21:36:43 +04:00
if ( ! reg_count )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
len + = sprintf ( buf + len , " No Registrations or Reservations " ) ;
return 0 ;
}
static int core_scsi3_update_aptpl_buf (
struct se_device * dev ,
unsigned char * buf ,
u32 pr_aptpl_buf_len ,
int clear_aptpl_metadata )
{
int ret ;
spin_lock ( & dev - > dev_reservation_lock ) ;
ret = __core_scsi3_update_aptpl_buf ( dev , buf , pr_aptpl_buf_len ,
clear_aptpl_metadata ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
return ret ;
}
/*
* Called with struct se_device - > aptpl_file_mutex held
*/
static int __core_scsi3_write_aptpl_to_file (
struct se_device * dev ,
unsigned char * buf ,
u32 pr_aptpl_buf_len )
{
2011-07-19 12:55:10 +04:00
struct t10_wwn * wwn = & dev - > se_sub_dev - > t10_wwn ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct file * file ;
struct iovec iov [ 1 ] ;
mm_segment_t old_fs ;
int flags = O_RDWR | O_CREAT | O_TRUNC ;
char path [ 512 ] ;
int ret ;
memset ( iov , 0 , sizeof ( struct iovec ) ) ;
memset ( path , 0 , 512 ) ;
2011-06-15 21:03:05 +04:00
if ( strlen ( & wwn - > unit_serial [ 0 ] ) > = 512 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " WWN value for struct se_device does not fit "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" into path buffer \n " ) ;
2011-07-19 12:55:10 +04:00
return - EMSGSIZE ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
snprintf ( path , 512 , " /var/target/pr/aptpl_%s " , & wwn - > unit_serial [ 0 ] ) ;
file = filp_open ( path , flags , 0600 ) ;
if ( IS_ERR ( file ) | | ! file | | ! file - > f_dentry ) {
2011-06-08 21:36:43 +04:00
pr_err ( " filp_open(%s) for APTPL metadata "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" failed \n " , path ) ;
2011-07-19 12:55:10 +04:00
return ( PTR_ERR ( file ) < 0 ? PTR_ERR ( file ) : - ENOENT ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
iov [ 0 ] . iov_base = & buf [ 0 ] ;
2011-06-08 21:36:43 +04:00
if ( ! pr_aptpl_buf_len )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
iov [ 0 ] . iov_len = ( strlen ( & buf [ 0 ] ) + 1 ) ; /* Add extra for NULL */
else
iov [ 0 ] . iov_len = pr_aptpl_buf_len ;
old_fs = get_fs ( ) ;
set_fs ( get_ds ( ) ) ;
ret = vfs_writev ( file , & iov [ 0 ] , 1 , & file - > f_pos ) ;
set_fs ( old_fs ) ;
if ( ret < 0 ) {
2011-06-08 21:36:43 +04:00
pr_debug ( " Error writing APTPL metadata file: %s \n " , path ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
filp_close ( file , NULL ) ;
2011-07-19 12:55:10 +04:00
return - EIO ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
filp_close ( file , NULL ) ;
return 0 ;
}
static int core_scsi3_update_and_write_aptpl (
struct se_device * dev ,
unsigned char * in_buf ,
u32 in_pr_aptpl_buf_len )
{
unsigned char null_buf [ 64 ] , * buf ;
u32 pr_aptpl_buf_len ;
int ret , clear_aptpl_metadata = 0 ;
/*
* Can be called with a NULL pointer from PROUT service action CLEAR
*/
2011-06-08 21:36:43 +04:00
if ( ! in_buf ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
memset ( null_buf , 0 , 64 ) ;
buf = & null_buf [ 0 ] ;
/*
* This will clear the APTPL metadata to :
* " No Registrations or Reservations " status
*/
pr_aptpl_buf_len = 64 ;
clear_aptpl_metadata = 1 ;
} else {
buf = in_buf ;
pr_aptpl_buf_len = in_pr_aptpl_buf_len ;
}
ret = core_scsi3_update_aptpl_buf ( dev , buf , pr_aptpl_buf_len ,
clear_aptpl_metadata ) ;
if ( ret ! = 0 )
2011-07-19 12:55:10 +04:00
return ret ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* __core_scsi3_write_aptpl_to_file ( ) will call strlen ( )
* on the passed buf to determine pr_aptpl_buf_len .
*/
ret = __core_scsi3_write_aptpl_to_file ( dev , buf , 0 ) ;
if ( ret ! = 0 )
2011-07-19 12:55:10 +04:00
return ret ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return ret ;
}
static int core_scsi3_emulate_pro_register (
struct se_cmd * cmd ,
u64 res_key ,
u64 sa_res_key ,
int aptpl ,
int all_tg_pt ,
int spec_i_pt ,
int ignore_key )
{
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
2011-07-19 14:26:37 +04:00
struct se_device * dev = cmd - > se_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_dev_entry * se_deve ;
2011-07-19 12:55:10 +04:00
struct se_lun * se_lun = cmd - > se_lun ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_portal_group * se_tpg ;
struct t10_pr_registration * pr_reg , * pr_reg_p , * pr_reg_tmp , * pr_reg_e ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/* Used for APTPL metadata w/ UNREGISTER */
unsigned char * pr_aptpl_buf = NULL ;
unsigned char isid_buf [ PR_REG_ISID_LEN ] , * isid_ptr = NULL ;
int pr_holder = 0 , ret = 0 , type ;
2011-06-08 21:36:43 +04:00
if ( ! se_sess | | ! se_lun ) {
pr_err ( " SPC-3 PR: se_sess || struct se_lun is NULL! \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
se_tpg = se_sess - > se_tpg ;
se_deve = & se_sess - > se_node_acl - > device_list [ cmd - > orig_fe_lun ] ;
2011-07-19 12:55:10 +04:00
if ( se_tpg - > se_tpg_tfo - > sess_get_initiator_sid ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
memset ( & isid_buf [ 0 ] , 0 , PR_REG_ISID_LEN ) ;
2011-07-19 12:55:10 +04:00
se_tpg - > se_tpg_tfo - > sess_get_initiator_sid ( se_sess , & isid_buf [ 0 ] ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
PR_REG_ISID_LEN ) ;
isid_ptr = & isid_buf [ 0 ] ;
}
/*
* Follow logic from spc4r17 Section 5.7 .7 , Register Behaviors Table 47
*/
pr_reg_e = core_scsi3_locate_pr_reg ( dev , se_sess - > se_node_acl , se_sess ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg_e ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
if ( res_key ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " SPC-3 PR: Reservation Key non-zero "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for SA REGISTER, returning CONFLICT \n " ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* Do nothing but return GOOD status .
*/
2011-06-08 21:36:43 +04:00
if ( ! sa_res_key )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_SENT_TO_TRANSPORT ;
2011-06-08 21:36:43 +04:00
if ( ! spec_i_pt ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Perform the Service Action REGISTER on the Initiator
* Port Endpoint that the PRO was received from on the
* Logical Unit of the SCSI device server .
*/
2011-07-19 14:26:37 +04:00
ret = core_scsi3_alloc_registration ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl , se_deve , isid_ptr ,
sa_res_key , all_tg_pt , aptpl ,
ignore_key , 0 ) ;
if ( ret ! = 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " Unable to allocate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" struct t10_pr_registration \n " ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
} else {
/*
* Register both the Initiator port that received
* PROUT SA REGISTER + SPEC_I_PT = 1 and extract SCSI
* TransportID from Parameter list and loop through
* fabric dependent parameter list while calling
* logic from of core_scsi3_alloc_registration ( ) for
* each TransportID provided SCSI Initiator Port / Device
*/
ret = core_scsi3_decode_spec_i_port ( cmd , se_tpg ,
isid_ptr , sa_res_key , all_tg_pt , aptpl ) ;
if ( ret ! = 0 )
return ret ;
}
/*
* Nothing left to do for the APTPL = 0 case .
*/
2011-06-08 21:36:43 +04:00
if ( ! aptpl ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_tmpl - > pr_aptpl_active = 0 ;
2011-07-19 14:26:37 +04:00
core_scsi3_update_and_write_aptpl ( cmd - > se_dev , NULL , 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Set APTPL Bit Deactivated for "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" REGISTER \n " ) ;
return 0 ;
}
/*
* Locate the newly allocated local I_T Nexus * pr_reg , and
* update the APTPL metadata information using its
* preallocated * pr_reg - > pr_aptpl_buf .
*/
2011-07-19 14:26:37 +04:00
pr_reg = core_scsi3_locate_pr_reg ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl , se_sess ) ;
2011-07-19 14:26:37 +04:00
ret = core_scsi3_update_and_write_aptpl ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& pr_reg - > pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_tmpl - > pr_aptpl_active = 1 ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Set APTPL Bit Activated for REGISTER \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
core_scsi3_put_pr_reg ( pr_reg ) ;
return ret ;
} else {
/*
* Locate the existing * pr_reg via struct se_node_acl pointers
*/
pr_reg = pr_reg_e ;
type = pr_reg - > pr_res_type ;
2011-06-08 21:36:43 +04:00
if ( ! ignore_key ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
if ( res_key ! = pr_reg - > pr_res_key ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR REGISTER: Received "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" res_key: 0x%016Lx does not match "
" existing SA REGISTER res_key: "
" 0x%016Lx \n " , res_key ,
pr_reg - > pr_res_key ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
}
if ( spec_i_pt ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR UNREGISTER: SPEC_I_PT "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" set while sa_res_key=0 \n " ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
/*
* An existing ALL_TG_PT = 1 registration being released
* must also set ALL_TG_PT = 1 in the incoming PROUT .
*/
if ( pr_reg - > pr_reg_all_tg_pt & & ! ( all_tg_pt ) ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR UNREGISTER: ALL_TG_PT=1 "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" registration exists, but ALL_TG_PT=1 bit not "
" present in received PROUT \n " ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
/*
* Allocate APTPL metadata buffer used for UNREGISTER ops
*/
if ( aptpl ) {
pr_aptpl_buf = kzalloc ( pr_tmpl - > pr_aptpl_buf_len ,
GFP_KERNEL ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_aptpl_buf ) {
pr_err ( " Unable to allocate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" pr_aptpl_buf \n " ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
}
/*
* sa_res_key = 0 Unregister Reservation Key for registered I_T
* Nexus sa_res_key = 1 Change Reservation Key for registered I_T
* Nexus .
*/
2011-06-08 21:36:43 +04:00
if ( ! sa_res_key ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_holder = core_scsi3_check_implict_release (
2011-07-19 14:26:37 +04:00
cmd - > se_dev , pr_reg ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
if ( pr_holder < 0 ) {
kfree ( pr_aptpl_buf ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
spin_lock ( & pr_tmpl - > registration_lock ) ;
/*
* Release all ALL_TG_PT = 1 for the matching SCSI Initiator Port
* and matching pr_res_key .
*/
if ( pr_reg - > pr_reg_all_tg_pt ) {
list_for_each_entry_safe ( pr_reg_p , pr_reg_tmp ,
& pr_tmpl - > registration_list ,
pr_reg_list ) {
2011-06-08 21:36:43 +04:00
if ( ! pr_reg_p - > pr_reg_all_tg_pt )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
if ( pr_reg_p - > pr_res_key ! = res_key )
continue ;
if ( pr_reg = = pr_reg_p )
continue ;
if ( strcmp ( pr_reg - > pr_reg_nacl - > initiatorname ,
pr_reg_p - > pr_reg_nacl - > initiatorname ) )
continue ;
__core_scsi3_free_registration ( dev ,
pr_reg_p , NULL , 0 ) ;
}
}
/*
* Release the calling I_T Nexus registration now . .
*/
2011-07-19 14:26:37 +04:00
__core_scsi3_free_registration ( cmd - > se_dev , pr_reg ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
NULL , 1 ) ;
/*
* From spc4r17 , section 5.7 .11 .3 Unregistering
*
* If the persistent reservation is a registrants only
* type , the device server shall establish a unit
* attention condition for the initiator port associated
* with every registered I_T nexus except for the I_T
* nexus on which the PERSISTENT RESERVE OUT command was
* received , with the additional sense code set to
* RESERVATIONS RELEASED .
*/
if ( pr_holder & &
( ( type = = PR_TYPE_WRITE_EXCLUSIVE_REGONLY ) | |
( type = = PR_TYPE_EXCLUSIVE_ACCESS_REGONLY ) ) ) {
list_for_each_entry ( pr_reg_p ,
& pr_tmpl - > registration_list ,
pr_reg_list ) {
core_scsi3_ua_allocate (
pr_reg_p - > pr_reg_nacl ,
pr_reg_p - > pr_res_mapped_lun ,
0x2A ,
ASCQ_2AH_RESERVATIONS_RELEASED ) ;
}
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
2011-06-08 21:36:43 +04:00
if ( ! aptpl ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_tmpl - > pr_aptpl_active = 0 ;
core_scsi3_update_and_write_aptpl ( dev , NULL , 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Set APTPL Bit Deactivated "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for UNREGISTER \n " ) ;
return 0 ;
}
ret = core_scsi3_update_and_write_aptpl ( dev ,
& pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_tmpl - > pr_aptpl_active = 1 ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Set APTPL Bit Activated "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for UNREGISTER \n " ) ;
}
kfree ( pr_aptpl_buf ) ;
return ret ;
} else {
/*
* Increment PRgeneration counter for struct se_device "
* upon a successful REGISTER , see spc4r17 section 6.3 .2
* READ_KEYS service action .
*/
pr_reg - > pr_res_generation = core_scsi3_pr_generation (
2011-07-19 14:26:37 +04:00
cmd - > se_dev ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_reg - > pr_res_key = sa_res_key ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] REGISTER%s: Changed Reservation "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" Key for %s to: 0x%016Lx PRgeneration: "
2011-07-19 12:55:10 +04:00
" 0x%08x \n " , cmd - > se_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
( ignore_key ) ? " _AND_IGNORE_EXISTING_KEY " : " " ,
pr_reg - > pr_reg_nacl - > initiatorname ,
pr_reg - > pr_res_key , pr_reg - > pr_res_generation ) ;
2011-06-08 21:36:43 +04:00
if ( ! aptpl ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_tmpl - > pr_aptpl_active = 0 ;
core_scsi3_update_and_write_aptpl ( dev , NULL , 0 ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Set APTPL Bit Deactivated "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for REGISTER \n " ) ;
return 0 ;
}
ret = core_scsi3_update_and_write_aptpl ( dev ,
& pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_tmpl - > pr_aptpl_active = 1 ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Set APTPL Bit Activated "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for REGISTER \n " ) ;
}
kfree ( pr_aptpl_buf ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
}
}
return 0 ;
}
unsigned char * core_scsi3_pr_dump_type ( int type )
{
switch ( type ) {
case PR_TYPE_WRITE_EXCLUSIVE :
return " Write Exclusive Access " ;
case PR_TYPE_EXCLUSIVE_ACCESS :
return " Exclusive Access " ;
case PR_TYPE_WRITE_EXCLUSIVE_REGONLY :
return " Write Exclusive Access, Registrants Only " ;
case PR_TYPE_EXCLUSIVE_ACCESS_REGONLY :
return " Exclusive Access, Registrants Only " ;
case PR_TYPE_WRITE_EXCLUSIVE_ALLREG :
return " Write Exclusive Access, All Registrants " ;
case PR_TYPE_EXCLUSIVE_ACCESS_ALLREG :
return " Exclusive Access, All Registrants " ;
default :
break ;
}
return " Unknown SPC-3 PR Type " ;
}
static int core_scsi3_pro_reserve (
struct se_cmd * cmd ,
struct se_device * dev ,
int type ,
int scope ,
u64 res_key )
{
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_dev_entry * se_deve ;
2011-07-19 12:55:10 +04:00
struct se_lun * se_lun = cmd - > se_lun ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_portal_group * se_tpg ;
struct t10_pr_registration * pr_reg , * pr_res_holder ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
char i_buf [ PR_REG_ISID_ID_LEN ] ;
int ret , prf_isid ;
memset ( i_buf , 0 , PR_REG_ISID_ID_LEN ) ;
2011-06-08 21:36:43 +04:00
if ( ! se_sess | | ! se_lun ) {
pr_err ( " SPC-3 PR: se_sess || struct se_lun is NULL! \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
se_tpg = se_sess - > se_tpg ;
se_deve = & se_sess - > se_node_acl - > device_list [ cmd - > orig_fe_lun ] ;
/*
* Locate the existing * pr_reg via struct se_node_acl pointers
*/
2011-07-19 14:26:37 +04:00
pr_reg = core_scsi3_locate_pr_reg ( cmd - > se_dev , se_sess - > se_node_acl ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg ) {
pr_err ( " SPC-3 PR: Unable to locate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" PR_REGISTERED *pr_reg for RESERVE \n " ) ;
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
/*
* From spc4r17 Section 5.7 .9 : Reserving :
*
* An application client creates a persistent reservation by issuing
* a PERSISTENT RESERVE OUT command with RESERVE service action through
* a registered I_T nexus with the following parameters :
* a ) RESERVATION KEY set to the value of the reservation key that is
* registered with the logical unit for the I_T nexus ; and
*/
if ( res_key ! = pr_reg - > pr_res_key ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR RESERVE: Received res_key: 0x%016Lx "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" does not match existing SA REGISTER res_key: "
" 0x%016Lx \n " , res_key , pr_reg - > pr_res_key ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* From spc4r17 Section 5.7 .9 : Reserving :
*
* From above :
* b ) TYPE field and SCOPE field set to the persistent reservation
* being created .
*
* Only one persistent reservation is allowed at a time per logical unit
* and that persistent reservation has a scope of LU_SCOPE .
*/
if ( scope ! = PR_SCOPE_LU_SCOPE ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Illegal SCOPE: 0x%02x \n " , scope ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
/*
* See if we have an existing PR reservation holder pointer at
* struct se_device - > dev_pr_res_holder in the form struct t10_pr_registration
* * pr_res_holder .
*/
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
if ( ( pr_res_holder ) ) {
/*
* From spc4r17 Section 5.7 .9 : Reserving :
*
* If the device server receives a PERSISTENT RESERVE OUT
* command from an I_T nexus other than a persistent reservation
* holder ( see 5.7 .10 ) that attempts to create a persistent
* reservation when a persistent reservation already exists for
* the logical unit , then the command shall be completed with
* RESERVATION CONFLICT status .
*/
if ( pr_res_holder ! = pr_reg ) {
struct se_node_acl * pr_res_nacl = pr_res_holder - > pr_reg_nacl ;
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Attempted RESERVE from "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" [%s]: %s while reservation already held by "
" [%s]: %s, returning RESERVATION_CONFLICT \n " ,
2011-07-19 12:55:10 +04:00
cmd - > se_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl - > initiatorname ,
2011-07-19 12:55:10 +04:00
pr_res_nacl - > se_tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_res_holder - > pr_reg_nacl - > initiatorname ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* From spc4r17 Section 5.7 .9 : Reserving :
*
* If a persistent reservation holder attempts to modify the
* type or scope of an existing persistent reservation , the
* command shall be completed with RESERVATION CONFLICT status .
*/
if ( ( pr_res_holder - > pr_res_type ! = type ) | |
( pr_res_holder - > pr_res_scope ! = scope ) ) {
struct se_node_acl * pr_res_nacl = pr_res_holder - > pr_reg_nacl ;
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Attempted RESERVE from "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" [%s]: %s trying to change TYPE and/or SCOPE, "
" while reservation already held by [%s]: %s, "
" returning RESERVATION_CONFLICT \n " ,
2011-07-19 12:55:10 +04:00
cmd - > se_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl - > initiatorname ,
2011-07-19 12:55:10 +04:00
pr_res_nacl - > se_tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_res_holder - > pr_reg_nacl - > initiatorname ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* From spc4r17 Section 5.7 .9 : Reserving :
*
* If the device server receives a PERSISTENT RESERVE OUT
* command with RESERVE service action where the TYPE field and
* the SCOPE field contain the same values as the existing type
* and scope from a persistent reservation holder , it shall not
* make any change to the existing persistent reservation and
* shall completethe command with GOOD status .
*/
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_SENT_TO_TRANSPORT ;
}
/*
* Otherwise , our * pr_reg becomes the PR reservation holder for said
* TYPE / SCOPE . Also set the received scope and type in * pr_reg .
*/
pr_reg - > pr_res_scope = scope ;
pr_reg - > pr_res_type = type ;
pr_reg - > pr_res_holder = 1 ;
dev - > dev_pr_res_holder = pr_reg ;
prf_isid = core_pr_dump_initiator_port ( pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: RESERVE created new "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" reservation holder TYPE: %s ALL_TG_PT: %d \n " ,
2011-07-19 12:55:10 +04:00
cmd - > se_tfo - > get_fabric_name ( ) , core_scsi3_pr_dump_type ( type ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
( pr_reg - > pr_reg_all_tg_pt ) ? 1 : 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] RESERVE Node: %s%s \n " ,
2011-07-19 12:55:10 +04:00
cmd - > se_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl - > initiatorname ,
( prf_isid ) ? & i_buf [ 0 ] : " " ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
if ( pr_tmpl - > pr_aptpl_active ) {
2011-07-19 14:26:37 +04:00
ret = core_scsi3_update_and_write_aptpl ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& pr_reg - > pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret )
pr_debug ( " SPC-3 PR: Updated APTPL metadata "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for RESERVE \n " ) ;
}
core_scsi3_put_pr_reg ( pr_reg ) ;
return 0 ;
}
static int core_scsi3_emulate_pro_reserve (
struct se_cmd * cmd ,
int type ,
int scope ,
u64 res_key )
{
struct se_device * dev = cmd - > se_dev ;
int ret = 0 ;
switch ( type ) {
case PR_TYPE_WRITE_EXCLUSIVE :
case PR_TYPE_EXCLUSIVE_ACCESS :
case PR_TYPE_WRITE_EXCLUSIVE_REGONLY :
case PR_TYPE_EXCLUSIVE_ACCESS_REGONLY :
case PR_TYPE_WRITE_EXCLUSIVE_ALLREG :
case PR_TYPE_EXCLUSIVE_ACCESS_ALLREG :
ret = core_scsi3_pro_reserve ( cmd , dev , type , scope , res_key ) ;
break ;
default :
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Unknown Service Action RESERVE Type: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" 0x%02x \n " , type ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
return ret ;
}
/*
* Called with struct se_device - > dev_reservation_lock held .
*/
static void __core_scsi3_complete_pro_release (
struct se_device * dev ,
struct se_node_acl * se_nacl ,
struct t10_pr_registration * pr_reg ,
int explict )
{
struct target_core_fabric_ops * tfo = se_nacl - > se_tpg - > se_tpg_tfo ;
char i_buf [ PR_REG_ISID_ID_LEN ] ;
int prf_isid ;
memset ( i_buf , 0 , PR_REG_ISID_ID_LEN ) ;
prf_isid = core_pr_dump_initiator_port ( pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
/*
* Go ahead and release the current PR reservation holder .
*/
dev - > dev_pr_res_holder = NULL ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: %s RELEASE cleared "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" reservation holder TYPE: %s ALL_TG_PT: %d \n " ,
tfo - > get_fabric_name ( ) , ( explict ) ? " explict " : " implict " ,
core_scsi3_pr_dump_type ( pr_reg - > pr_res_type ) ,
( pr_reg - > pr_reg_all_tg_pt ) ? 1 : 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] RELEASE Node: %s%s \n " ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
tfo - > get_fabric_name ( ) , se_nacl - > initiatorname ,
( prf_isid ) ? & i_buf [ 0 ] : " " ) ;
/*
* Clear TYPE and SCOPE for the next PROUT Service Action : RESERVE
*/
pr_reg - > pr_res_holder = pr_reg - > pr_res_type = pr_reg - > pr_res_scope = 0 ;
}
static int core_scsi3_emulate_pro_release (
struct se_cmd * cmd ,
int type ,
int scope ,
u64 res_key )
{
struct se_device * dev = cmd - > se_dev ;
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
struct se_lun * se_lun = cmd - > se_lun ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg , * pr_reg_p , * pr_res_holder ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
int ret , all_reg = 0 ;
2011-06-08 21:36:43 +04:00
if ( ! se_sess | | ! se_lun ) {
pr_err ( " SPC-3 PR: se_sess || struct se_lun is NULL! \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
/*
* Locate the existing * pr_reg via struct se_node_acl pointers
*/
pr_reg = core_scsi3_locate_pr_reg ( dev , se_sess - > se_node_acl , se_sess ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg ) {
pr_err ( " SPC-3 PR: Unable to locate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" PR_REGISTERED *pr_reg for RELEASE \n " ) ;
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
/*
* From spc4r17 Section 5.7 .11 .2 Releasing :
*
* If there is no persistent reservation or in response to a persistent
* reservation release request from a registered I_T nexus that is not a
* persistent reservation holder ( see 5.7 .10 ) , the device server shall
* do the following :
*
* a ) Not release the persistent reservation , if any ;
* b ) Not remove any registrations ; and
* c ) Complete the command with GOOD status .
*/
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
2011-06-08 21:36:43 +04:00
if ( ! pr_res_holder ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* No persistent reservation , return GOOD status .
*/
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_SENT_TO_TRANSPORT ;
}
if ( ( pr_res_holder - > pr_res_type = = PR_TYPE_WRITE_EXCLUSIVE_ALLREG ) | |
( pr_res_holder - > pr_res_type = = PR_TYPE_EXCLUSIVE_ACCESS_ALLREG ) )
all_reg = 1 ;
if ( ( all_reg = = 0 ) & & ( pr_res_holder ! = pr_reg ) ) {
/*
* Non ' All Registrants ' PR Type cases . .
* Release request from a registered I_T nexus that is not a
* persistent reservation holder . return GOOD status .
*/
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_SENT_TO_TRANSPORT ;
}
/*
* From spc4r17 Section 5.7 .11 .2 Releasing :
*
* Only the persistent reservation holder ( see 5.7 .10 ) is allowed to
* release a persistent reservation .
*
* An application client releases the persistent reservation by issuing
* a PERSISTENT RESERVE OUT command with RELEASE service action through
* an I_T nexus that is a persistent reservation holder with the
* following parameters :
*
* a ) RESERVATION KEY field set to the value of the reservation key
* that is registered with the logical unit for the I_T nexus ;
*/
if ( res_key ! = pr_reg - > pr_res_key ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR RELEASE: Received res_key: 0x%016Lx "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" does not match existing SA REGISTER res_key: "
" 0x%016Lx \n " , res_key , pr_reg - > pr_res_key ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* From spc4r17 Section 5.7 .11 .2 Releasing and above :
*
* b ) TYPE field and SCOPE field set to match the persistent
* reservation being released .
*/
if ( ( pr_res_holder - > pr_res_type ! = type ) | |
( pr_res_holder - > pr_res_scope ! = scope ) ) {
struct se_node_acl * pr_res_nacl = pr_res_holder - > pr_reg_nacl ;
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR RELEASE: Attempted to release "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" reservation from [%s]: %s with different TYPE "
" and/or SCOPE while reservation already held by "
" [%s]: %s, returning RESERVATION_CONFLICT \n " ,
2011-07-19 12:55:10 +04:00
cmd - > se_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl - > initiatorname ,
2011-07-19 12:55:10 +04:00
pr_res_nacl - > se_tpg - > se_tpg_tfo - > get_fabric_name ( ) ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_res_holder - > pr_reg_nacl - > initiatorname ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* In response to a persistent reservation release request from the
* persistent reservation holder the device server shall perform a
* release by doing the following as an uninterrupted series of actions :
* a ) Release the persistent reservation ;
* b ) Not remove any registration ( s ) ;
* c ) If the released persistent reservation is a registrants only type
* or all registrants type persistent reservation ,
* the device server shall establish a unit attention condition for
* the initiator port associated with every regis -
* tered I_T nexus other than I_T nexus on which the PERSISTENT
* RESERVE OUT command with RELEASE service action was received ,
* with the additional sense code set to RESERVATIONS RELEASED ; and
* d ) If the persistent reservation is of any other type , the device
* server shall not establish a unit attention condition .
*/
__core_scsi3_complete_pro_release ( dev , se_sess - > se_node_acl ,
pr_reg , 1 ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
if ( ( type ! = PR_TYPE_WRITE_EXCLUSIVE_REGONLY ) & &
( type ! = PR_TYPE_EXCLUSIVE_ACCESS_REGONLY ) & &
( type ! = PR_TYPE_WRITE_EXCLUSIVE_ALLREG ) & &
( type ! = PR_TYPE_EXCLUSIVE_ACCESS_ALLREG ) ) {
/*
* If no UNIT ATTENTION conditions will be established for
* PR_TYPE_WRITE_EXCLUSIVE or PR_TYPE_EXCLUSIVE_ACCESS
* go ahead and check for APTPL = 1 update + write below
*/
goto write_aptpl ;
}
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry ( pr_reg_p , & pr_tmpl - > registration_list ,
pr_reg_list ) {
/*
* Do not establish a UNIT ATTENTION condition
* for the calling I_T Nexus
*/
if ( pr_reg_p = = pr_reg )
continue ;
core_scsi3_ua_allocate ( pr_reg_p - > pr_reg_nacl ,
pr_reg_p - > pr_res_mapped_lun ,
0x2A , ASCQ_2AH_RESERVATIONS_RELEASED ) ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
write_aptpl :
if ( pr_tmpl - > pr_aptpl_active ) {
2011-07-19 14:26:37 +04:00
ret = core_scsi3_update_and_write_aptpl ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& pr_reg - > pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret )
pr_debug ( " SPC-3 PR: Updated APTPL metadata for RELEASE \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
core_scsi3_put_pr_reg ( pr_reg ) ;
return 0 ;
}
static int core_scsi3_emulate_pro_clear (
struct se_cmd * cmd ,
u64 res_key )
{
struct se_device * dev = cmd - > se_dev ;
struct se_node_acl * pr_reg_nacl ;
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg , * pr_reg_tmp , * pr_reg_n , * pr_res_holder ;
u32 pr_res_mapped_lun = 0 ;
int calling_it_nexus = 0 ;
/*
* Locate the existing * pr_reg via struct se_node_acl pointers
*/
2011-07-19 14:26:37 +04:00
pr_reg_n = core_scsi3_locate_pr_reg ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess - > se_node_acl , se_sess ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg_n ) {
pr_err ( " SPC-3 PR: Unable to locate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" PR_REGISTERED *pr_reg for CLEAR \n " ) ;
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
/*
* From spc4r17 section 5.7 .11 .6 , Clearing :
*
* Any application client may release the persistent reservation and
* remove all registrations from a device server by issuing a
* PERSISTENT RESERVE OUT command with CLEAR service action through a
* registered I_T nexus with the following parameter :
*
* a ) RESERVATION KEY field set to the value of the reservation key
* that is registered with the logical unit for the I_T nexus .
*/
if ( res_key ! = pr_reg_n - > pr_res_key ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR REGISTER: Received "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" res_key: 0x%016Lx does not match "
" existing SA REGISTER res_key: "
" 0x%016Lx \n " , res_key , pr_reg_n - > pr_res_key ) ;
core_scsi3_put_pr_reg ( pr_reg_n ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* a ) Release the persistent reservation , if any ;
*/
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
if ( pr_res_holder ) {
struct se_node_acl * pr_res_nacl = pr_res_holder - > pr_reg_nacl ;
__core_scsi3_complete_pro_release ( dev , pr_res_nacl ,
pr_res_holder , 0 ) ;
}
spin_unlock ( & dev - > dev_reservation_lock ) ;
/*
* b ) Remove all registration ( s ) ( see spc4r17 5.7 .7 ) ;
*/
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
calling_it_nexus = ( pr_reg_n = = pr_reg ) ? 1 : 0 ;
pr_reg_nacl = pr_reg - > pr_reg_nacl ;
pr_res_mapped_lun = pr_reg - > pr_res_mapped_lun ;
__core_scsi3_free_registration ( dev , pr_reg , NULL ,
calling_it_nexus ) ;
/*
* e ) Establish a unit attention condition for the initiator
* port associated with every registered I_T nexus other
* than the I_T nexus on which the PERSISTENT RESERVE OUT
* command with CLEAR service action was received , with the
* additional sense code set to RESERVATIONS PREEMPTED .
*/
2011-06-08 21:36:43 +04:00
if ( ! calling_it_nexus )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_ua_allocate ( pr_reg_nacl , pr_res_mapped_lun ,
0x2A , ASCQ_2AH_RESERVATIONS_PREEMPTED ) ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: CLEAR complete \n " ,
2011-07-19 12:55:10 +04:00
cmd - > se_tfo - > get_fabric_name ( ) ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
if ( pr_tmpl - > pr_aptpl_active ) {
2011-07-19 14:26:37 +04:00
core_scsi3_update_and_write_aptpl ( cmd - > se_dev , NULL , 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Updated APTPL metadata "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for CLEAR \n " ) ;
}
core_scsi3_pr_generation ( dev ) ;
return 0 ;
}
/*
* Called with struct se_device - > dev_reservation_lock held .
*/
static void __core_scsi3_complete_pro_preempt (
struct se_device * dev ,
struct t10_pr_registration * pr_reg ,
struct list_head * preempt_and_abort_list ,
int type ,
int scope ,
int abort )
{
struct se_node_acl * nacl = pr_reg - > pr_reg_nacl ;
struct target_core_fabric_ops * tfo = nacl - > se_tpg - > se_tpg_tfo ;
char i_buf [ PR_REG_ISID_ID_LEN ] ;
int prf_isid ;
memset ( i_buf , 0 , PR_REG_ISID_ID_LEN ) ;
prf_isid = core_pr_dump_initiator_port ( pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
/*
* Do an implict RELEASE of the existing reservation .
*/
if ( dev - > dev_pr_res_holder )
__core_scsi3_complete_pro_release ( dev , nacl ,
dev - > dev_pr_res_holder , 0 ) ;
dev - > dev_pr_res_holder = pr_reg ;
pr_reg - > pr_res_holder = 1 ;
pr_reg - > pr_res_type = type ;
pr_reg - > pr_res_scope = scope ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: PREEMPT%s created new "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" reservation holder TYPE: %s ALL_TG_PT: %d \n " ,
tfo - > get_fabric_name ( ) , ( abort ) ? " _AND_ABORT " : " " ,
core_scsi3_pr_dump_type ( type ) ,
( pr_reg - > pr_reg_all_tg_pt ) ? 1 : 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] PREEMPT%s from Node: %s%s \n " ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
tfo - > get_fabric_name ( ) , ( abort ) ? " _AND_ABORT " : " " ,
nacl - > initiatorname , ( prf_isid ) ? & i_buf [ 0 ] : " " ) ;
/*
* For PREEMPT_AND_ABORT , add the preempting reservation ' s
* struct t10_pr_registration to the list that will be compared
* against received CDBs . .
*/
if ( preempt_and_abort_list )
list_add_tail ( & pr_reg - > pr_reg_abort_list ,
preempt_and_abort_list ) ;
}
static void core_scsi3_release_preempt_and_abort (
struct list_head * preempt_and_abort_list ,
struct t10_pr_registration * pr_reg_holder )
{
struct t10_pr_registration * pr_reg , * pr_reg_tmp ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp , preempt_and_abort_list ,
pr_reg_abort_list ) {
list_del ( & pr_reg - > pr_reg_abort_list ) ;
if ( pr_reg_holder = = pr_reg )
continue ;
if ( pr_reg - > pr_res_holder ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " pr_reg->pr_res_holder still set \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
}
pr_reg - > pr_reg_deve = NULL ;
pr_reg - > pr_reg_nacl = NULL ;
kfree ( pr_reg - > pr_aptpl_buf ) ;
kmem_cache_free ( t10_pr_reg_cache , pr_reg ) ;
}
}
int core_scsi3_check_cdb_abort_and_preempt (
struct list_head * preempt_and_abort_list ,
struct se_cmd * cmd )
{
struct t10_pr_registration * pr_reg , * pr_reg_tmp ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp , preempt_and_abort_list ,
pr_reg_abort_list ) {
if ( pr_reg - > pr_res_key = = cmd - > pr_res_key )
return 0 ;
}
return 1 ;
}
static int core_scsi3_pro_preempt (
struct se_cmd * cmd ,
int type ,
int scope ,
u64 res_key ,
u64 sa_res_key ,
int abort )
{
2011-07-19 14:26:37 +04:00
struct se_device * dev = cmd - > se_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_dev_entry * se_deve ;
struct se_node_acl * pr_reg_nacl ;
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct list_head preempt_and_abort_list ;
struct t10_pr_registration * pr_reg , * pr_reg_tmp , * pr_reg_n , * pr_res_holder ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u32 pr_res_mapped_lun = 0 ;
int all_reg = 0 , calling_it_nexus = 0 , released_regs = 0 ;
int prh_type = 0 , prh_scope = 0 , ret ;
2011-06-08 21:36:43 +04:00
if ( ! se_sess )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_LU_COMM_FAILURE ;
se_deve = & se_sess - > se_node_acl - > device_list [ cmd - > orig_fe_lun ] ;
2011-07-19 14:26:37 +04:00
pr_reg_n = core_scsi3_locate_pr_reg ( cmd - > se_dev , se_sess - > se_node_acl ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg_n ) {
pr_err ( " SPC-3 PR: Unable to locate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" PR_REGISTERED *pr_reg for PREEMPT%s \n " ,
( abort ) ? " _AND_ABORT " : " " ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
if ( pr_reg_n - > pr_res_key ! = res_key ) {
core_scsi3_put_pr_reg ( pr_reg_n ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
if ( scope ! = PR_SCOPE_LU_SCOPE ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Illegal SCOPE: 0x%02x \n " , scope ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_put_pr_reg ( pr_reg_n ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
INIT_LIST_HEAD ( & preempt_and_abort_list ) ;
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
if ( pr_res_holder & &
( ( pr_res_holder - > pr_res_type = = PR_TYPE_WRITE_EXCLUSIVE_ALLREG ) | |
( pr_res_holder - > pr_res_type = = PR_TYPE_EXCLUSIVE_ACCESS_ALLREG ) ) )
all_reg = 1 ;
2011-06-08 21:36:43 +04:00
if ( ! all_reg & & ! sa_res_key ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg_n ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
/*
* From spc4r17 , section 5.7 .11 .4 .4 Removing Registrations :
*
* If the SERVICE ACTION RESERVATION KEY field does not identify a
* persistent reservation holder or there is no persistent reservation
* holder ( i . e . , there is no persistent reservation ) , then the device
* server shall perform a preempt by doing the following in an
* uninterrupted series of actions . ( See below . . )
*/
2011-06-08 21:36:43 +04:00
if ( ! pr_res_holder | | ( pr_res_holder - > pr_res_key ! = sa_res_key ) ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* No existing or SA Reservation Key matching reservations . .
*
* PROUT SA PREEMPT with All Registrant type reservations are
* allowed to be processed without a matching SA Reservation Key
*/
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
/*
* Removing of registrations in non all registrants
* type reservations without a matching SA reservation
* key .
*
* a ) Remove the registrations for all I_T nexuses
* specified by the SERVICE ACTION RESERVATION KEY
* field ;
* b ) Ignore the contents of the SCOPE and TYPE fields ;
* c ) Process tasks as defined in 5.7 .1 ; and
* d ) Establish a unit attention condition for the
* initiator port associated with every I_T nexus
* that lost its registration other than the I_T
* nexus on which the PERSISTENT RESERVE OUT command
* was received , with the additional sense code set
* to REGISTRATIONS PREEMPTED .
*/
2011-06-08 21:36:43 +04:00
if ( ! all_reg ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
if ( pr_reg - > pr_res_key ! = sa_res_key )
continue ;
calling_it_nexus = ( pr_reg_n = = pr_reg ) ? 1 : 0 ;
pr_reg_nacl = pr_reg - > pr_reg_nacl ;
pr_res_mapped_lun = pr_reg - > pr_res_mapped_lun ;
__core_scsi3_free_registration ( dev , pr_reg ,
( abort ) ? & preempt_and_abort_list :
NULL , calling_it_nexus ) ;
released_regs + + ;
} else {
/*
* Case for any existing all registrants type
* reservation , follow logic in spc4r17 section
* 5.7 .11 .4 Preempting , Table 52 and Figure 7.
*
* For a ZERO SA Reservation key , release
* all other registrations and do an implict
* release of active persistent reservation .
*
* For a non - ZERO SA Reservation key , only
* release the matching reservation key from
* registrations .
*/
if ( ( sa_res_key ) & &
( pr_reg - > pr_res_key ! = sa_res_key ) )
continue ;
calling_it_nexus = ( pr_reg_n = = pr_reg ) ? 1 : 0 ;
if ( calling_it_nexus )
continue ;
pr_reg_nacl = pr_reg - > pr_reg_nacl ;
pr_res_mapped_lun = pr_reg - > pr_res_mapped_lun ;
__core_scsi3_free_registration ( dev , pr_reg ,
( abort ) ? & preempt_and_abort_list :
NULL , 0 ) ;
released_regs + + ;
}
2011-06-08 21:36:43 +04:00
if ( ! calling_it_nexus )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_ua_allocate ( pr_reg_nacl ,
pr_res_mapped_lun , 0x2A ,
ASCQ_2AH_RESERVATIONS_PREEMPTED ) ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
/*
* If a PERSISTENT RESERVE OUT with a PREEMPT service action or
* a PREEMPT AND ABORT service action sets the SERVICE ACTION
* RESERVATION KEY field to a value that does not match any
* registered reservation key , then the device server shall
* complete the command with RESERVATION CONFLICT status .
*/
2011-06-08 21:36:43 +04:00
if ( ! released_regs ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & dev - > dev_reservation_lock ) ;
core_scsi3_put_pr_reg ( pr_reg_n ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* For an existing all registrants type reservation
* with a zero SA rservation key , preempt the existing
* reservation with the new PR type and scope .
*/
if ( pr_res_holder & & all_reg & & ! ( sa_res_key ) ) {
__core_scsi3_complete_pro_preempt ( dev , pr_reg_n ,
( abort ) ? & preempt_and_abort_list : NULL ,
type , scope , abort ) ;
if ( abort )
core_scsi3_release_preempt_and_abort (
& preempt_and_abort_list , pr_reg_n ) ;
}
spin_unlock ( & dev - > dev_reservation_lock ) ;
if ( pr_tmpl - > pr_aptpl_active ) {
2011-07-19 14:26:37 +04:00
ret = core_scsi3_update_and_write_aptpl ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& pr_reg_n - > pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret )
pr_debug ( " SPC-3 PR: Updated APTPL "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" metadata for PREEMPT%s \n " , ( abort ) ?
" _AND_ABORT " : " " ) ;
}
core_scsi3_put_pr_reg ( pr_reg_n ) ;
2011-07-19 14:26:37 +04:00
core_scsi3_pr_generation ( cmd - > se_dev ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
}
/*
* The PREEMPTing SA reservation key matches that of the
* existing persistent reservation , first , we check if
* we are preempting our own reservation .
* From spc4r17 , section 5.7 .11 .4 .3 Preempting
* persistent reservations and registration handling
*
* If an all registrants persistent reservation is not
* present , it is not an error for the persistent
* reservation holder to preempt itself ( i . e . , a
* PERSISTENT RESERVE OUT with a PREEMPT service action
* or a PREEMPT AND ABORT service action with the
* SERVICE ACTION RESERVATION KEY value equal to the
* persistent reservation holder ' s reservation key that
* is received from the persistent reservation holder ) .
* In that case , the device server shall establish the
* new persistent reservation and maintain the
* registration .
*/
prh_type = pr_res_holder - > pr_res_type ;
prh_scope = pr_res_holder - > pr_res_scope ;
/*
* If the SERVICE ACTION RESERVATION KEY field identifies a
* persistent reservation holder ( see 5.7 .10 ) , the device
* server shall perform a preempt by doing the following as
* an uninterrupted series of actions :
*
* a ) Release the persistent reservation for the holder
* identified by the SERVICE ACTION RESERVATION KEY field ;
*/
if ( pr_reg_n ! = pr_res_holder )
__core_scsi3_complete_pro_release ( dev ,
pr_res_holder - > pr_reg_nacl ,
dev - > dev_pr_res_holder , 0 ) ;
/*
* b ) Remove the registrations for all I_T nexuses identified
* by the SERVICE ACTION RESERVATION KEY field , except the
* I_T nexus that is being used for the PERSISTENT RESERVE
* OUT command . If an all registrants persistent reservation
* is present and the SERVICE ACTION RESERVATION KEY field
* is set to zero , then all registrations shall be removed
* except for that of the I_T nexus that is being used for
* the PERSISTENT RESERVE OUT command ;
*/
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
calling_it_nexus = ( pr_reg_n = = pr_reg ) ? 1 : 0 ;
if ( calling_it_nexus )
continue ;
if ( pr_reg - > pr_res_key ! = sa_res_key )
continue ;
pr_reg_nacl = pr_reg - > pr_reg_nacl ;
pr_res_mapped_lun = pr_reg - > pr_res_mapped_lun ;
__core_scsi3_free_registration ( dev , pr_reg ,
( abort ) ? & preempt_and_abort_list : NULL ,
calling_it_nexus ) ;
/*
* e ) Establish a unit attention condition for the initiator
* port associated with every I_T nexus that lost its
* persistent reservation and / or registration , with the
* additional sense code set to REGISTRATIONS PREEMPTED ;
*/
core_scsi3_ua_allocate ( pr_reg_nacl , pr_res_mapped_lun , 0x2A ,
ASCQ_2AH_RESERVATIONS_PREEMPTED ) ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
/*
* c ) Establish a persistent reservation for the preempting
* I_T nexus using the contents of the SCOPE and TYPE fields ;
*/
__core_scsi3_complete_pro_preempt ( dev , pr_reg_n ,
( abort ) ? & preempt_and_abort_list : NULL ,
type , scope , abort ) ;
/*
* d ) Process tasks as defined in 5.7 .1 ;
* e ) See above . .
* f ) If the type or scope has changed , then for every I_T nexus
* whose reservation key was not removed , except for the I_T
* nexus on which the PERSISTENT RESERVE OUT command was
* received , the device server shall establish a unit
* attention condition for the initiator port associated with
* that I_T nexus , with the additional sense code set to
* RESERVATIONS RELEASED . If the type or scope have not
* changed , then no unit attention condition ( s ) shall be
* established for this reason .
*/
if ( ( prh_type ! = type ) | | ( prh_scope ! = scope ) ) {
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
calling_it_nexus = ( pr_reg_n = = pr_reg ) ? 1 : 0 ;
if ( calling_it_nexus )
continue ;
core_scsi3_ua_allocate ( pr_reg - > pr_reg_nacl ,
pr_reg - > pr_res_mapped_lun , 0x2A ,
ASCQ_2AH_RESERVATIONS_RELEASED ) ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
}
spin_unlock ( & dev - > dev_reservation_lock ) ;
/*
* Call LUN_RESET logic upon list of struct t10_pr_registration ,
* All received CDBs for the matching existing reservation and
* registrations undergo ABORT_TASK logic .
*
* From there , core_scsi3_release_preempt_and_abort ( ) will
* release every registration in the list ( which have already
* been removed from the primary pr_reg list ) , except the
* new persistent reservation holder , the calling Initiator Port .
*/
if ( abort ) {
core_tmr_lun_reset ( dev , NULL , & preempt_and_abort_list , cmd ) ;
core_scsi3_release_preempt_and_abort ( & preempt_and_abort_list ,
pr_reg_n ) ;
}
if ( pr_tmpl - > pr_aptpl_active ) {
2011-07-19 14:26:37 +04:00
ret = core_scsi3_update_and_write_aptpl ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& pr_reg_n - > pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret )
pr_debug ( " SPC-3 PR: Updated APTPL metadata for PREEMPT "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %s \n " , ( abort ) ? " _AND_ABORT " : " " ) ;
}
core_scsi3_put_pr_reg ( pr_reg_n ) ;
2011-07-19 14:26:37 +04:00
core_scsi3_pr_generation ( cmd - > se_dev ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
}
static int core_scsi3_emulate_pro_preempt (
struct se_cmd * cmd ,
int type ,
int scope ,
u64 res_key ,
u64 sa_res_key ,
int abort )
{
int ret = 0 ;
switch ( type ) {
case PR_TYPE_WRITE_EXCLUSIVE :
case PR_TYPE_EXCLUSIVE_ACCESS :
case PR_TYPE_WRITE_EXCLUSIVE_REGONLY :
case PR_TYPE_EXCLUSIVE_ACCESS_REGONLY :
case PR_TYPE_WRITE_EXCLUSIVE_ALLREG :
case PR_TYPE_EXCLUSIVE_ACCESS_ALLREG :
ret = core_scsi3_pro_preempt ( cmd , type , scope ,
res_key , sa_res_key , abort ) ;
break ;
default :
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Unknown Service Action PREEMPT%s "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" Type: 0x%02x \n " , ( abort ) ? " _AND_ABORT " : " " , type ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
return ret ;
}
static int core_scsi3_emulate_pro_register_and_move (
struct se_cmd * cmd ,
u64 res_key ,
u64 sa_res_key ,
int aptpl ,
int unreg )
{
2011-07-19 12:55:10 +04:00
struct se_session * se_sess = cmd - > se_sess ;
2011-07-19 14:26:37 +04:00
struct se_device * dev = cmd - > se_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_dev_entry * se_deve , * dest_se_deve = NULL ;
2011-07-19 12:55:10 +04:00
struct se_lun * se_lun = cmd - > se_lun ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_node_acl * pr_res_nacl , * pr_reg_nacl , * dest_node_acl = NULL ;
struct se_port * se_port ;
struct se_portal_group * se_tpg , * dest_se_tpg = NULL ;
struct target_core_fabric_ops * dest_tf_ops = NULL , * tf_ops ;
struct t10_pr_registration * pr_reg , * pr_res_holder , * dest_pr_reg ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
2011-07-20 23:13:28 +04:00
unsigned char * buf ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
unsigned char * initiator_str ;
char * iport_ptr = NULL , dest_iport [ 64 ] , i_buf [ PR_REG_ISID_ID_LEN ] ;
u32 tid_len , tmp_tid_len ;
int new_reg = 0 , type , scope , ret , matching_iname , prf_isid ;
unsigned short rtpi ;
unsigned char proto_ident ;
2011-06-08 21:36:43 +04:00
if ( ! se_sess | | ! se_lun ) {
pr_err ( " SPC-3 PR: se_sess || struct se_lun is NULL! \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
memset ( dest_iport , 0 , 64 ) ;
memset ( i_buf , 0 , PR_REG_ISID_ID_LEN ) ;
se_tpg = se_sess - > se_tpg ;
2011-07-19 12:55:10 +04:00
tf_ops = se_tpg - > se_tpg_tfo ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_deve = & se_sess - > se_node_acl - > device_list [ cmd - > orig_fe_lun ] ;
/*
* Follow logic from spc4r17 Section 5.7 .8 , Table 50 - -
* Register behaviors for a REGISTER AND MOVE service action
*
* Locate the existing * pr_reg via struct se_node_acl pointers
*/
2011-07-19 14:26:37 +04:00
pr_reg = core_scsi3_locate_pr_reg ( cmd - > se_dev , se_sess - > se_node_acl ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_sess ) ;
2011-06-08 21:36:43 +04:00
if ( ! pr_reg ) {
pr_err ( " SPC-3 PR: Unable to locate PR_REGISTERED "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" *pr_reg for REGISTER_AND_MOVE \n " ) ;
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
/*
* The provided reservation key much match the existing reservation key
* provided during this initiator ' s I_T nexus registration .
*/
if ( res_key ! = pr_reg - > pr_res_key ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " SPC-3 PR REGISTER_AND_MOVE: Received "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" res_key: 0x%016Lx does not match existing SA REGISTER "
" res_key: 0x%016Lx \n " , res_key , pr_reg - > pr_res_key ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
/*
* The service active reservation key needs to be non zero
*/
2011-06-08 21:36:43 +04:00
if ( ! sa_res_key ) {
pr_warn ( " SPC-3 PR REGISTER_AND_MOVE: Received zero "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" sa_res_key \n " ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
2011-07-20 23:13:28 +04:00
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Determine the Relative Target Port Identifier where the reservation
* will be moved to for the TransportID containing SCSI initiator WWN
* information .
*/
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
rtpi = ( buf [ 18 ] & 0xff ) < < 8 ;
rtpi | = buf [ 19 ] & 0xff ;
tid_len = ( buf [ 20 ] & 0xff ) < < 24 ;
tid_len | = ( buf [ 21 ] & 0xff ) < < 16 ;
tid_len | = ( buf [ 22 ] & 0xff ) < < 8 ;
tid_len | = buf [ 23 ] & 0xff ;
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
buf = NULL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
if ( ( tid_len + 24 ) ! = cmd - > data_length ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR: Illegal tid_len: %u + 24 byte header "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" does not equal CDB data_length: %u \n " , tid_len ,
cmd - > data_length ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
spin_lock ( & dev - > se_port_lock ) ;
list_for_each_entry ( se_port , & dev - > dev_sep_list , sep_list ) {
if ( se_port - > sep_rtpi ! = rtpi )
continue ;
dest_se_tpg = se_port - > sep_tpg ;
2011-06-08 21:36:43 +04:00
if ( ! dest_se_tpg )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
2011-07-19 12:55:10 +04:00
dest_tf_ops = dest_se_tpg - > se_tpg_tfo ;
2011-06-08 21:36:43 +04:00
if ( ! dest_tf_ops )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
continue ;
atomic_inc ( & dest_se_tpg - > tpg_pr_ref_count ) ;
smp_mb__after_atomic_inc ( ) ;
spin_unlock ( & dev - > se_port_lock ) ;
ret = core_scsi3_tpg_depend_item ( dest_se_tpg ) ;
if ( ret ! = 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " core_scsi3_tpg_depend_item() failed "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" for dest_se_tpg \n " ) ;
atomic_dec ( & dest_se_tpg - > tpg_pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_LU_COMM_FAILURE ;
}
spin_lock ( & dev - > se_port_lock ) ;
break ;
}
spin_unlock ( & dev - > se_port_lock ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_se_tpg | | ! dest_tf_ops ) {
pr_err ( " SPC-3 PR REGISTER_AND_MOVE: Unable to locate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" fabric ops from Relative Target Port Identifier: "
" %hu \n " , rtpi ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
proto_ident = ( buf [ 24 ] & 0x0f ) ;
#if 0
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR REGISTER_AND_MOVE: Extracted Protocol Identifier: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" 0x%02x \n " , proto_ident ) ;
# endif
if ( proto_ident ! = dest_tf_ops - > get_fabric_proto_ident ( dest_se_tpg ) ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR REGISTER_AND_MOVE: Received "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" proto_ident: 0x%02x does not match ident: 0x%02x "
" from fabric: %s \n " , proto_ident ,
dest_tf_ops - > get_fabric_proto_ident ( dest_se_tpg ) ,
dest_tf_ops - > get_fabric_name ( ) ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
if ( dest_tf_ops - > tpg_parse_pr_out_transport_id = = NULL ) {
2011-06-08 21:36:43 +04:00
pr_err ( " SPC-3 PR REGISTER_AND_MOVE: Fabric does not "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" containg a valid tpg_parse_pr_out_transport_id "
" function pointer \n " ) ;
ret = PYX_TRANSPORT_LU_COMM_FAILURE ;
goto out ;
}
initiator_str = dest_tf_ops - > tpg_parse_pr_out_transport_id ( dest_se_tpg ,
( const char * ) & buf [ 24 ] , & tmp_tid_len , & iport_ptr ) ;
2011-06-08 21:36:43 +04:00
if ( ! initiator_str ) {
pr_err ( " SPC-3 PR REGISTER_AND_MOVE: Unable to locate "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" initiator_str from Transport ID \n " ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
buf = NULL ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Extracted initiator %s identifier: %s "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %s \n " , dest_tf_ops - > get_fabric_name ( ) , ( iport_ptr ! = NULL ) ?
" port " : " device " , initiator_str , ( iport_ptr ! = NULL ) ?
iport_ptr : " " ) ;
/*
* If a PERSISTENT RESERVE OUT command with a REGISTER AND MOVE service
* action specifies a TransportID that is the same as the initiator port
* of the I_T nexus for the command received , then the command shall
* be terminated with CHECK CONDITION status , with the sense key set to
* ILLEGAL REQUEST , and the additional sense code set to INVALID FIELD
* IN PARAMETER LIST .
*/
pr_reg_nacl = pr_reg - > pr_reg_nacl ;
matching_iname = ( ! strcmp ( initiator_str ,
pr_reg_nacl - > initiatorname ) ) ? 1 : 0 ;
2011-06-08 21:36:43 +04:00
if ( ! matching_iname )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
goto after_iport_check ;
2011-06-08 21:36:43 +04:00
if ( ! iport_ptr | | ! pr_reg - > isid_present_at_reg ) {
pr_err ( " SPC-3 PR REGISTER_AND_MOVE: TransportID: %s "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" matches: %s on received I_T Nexus \n " , initiator_str ,
pr_reg_nacl - > initiatorname ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
2011-06-08 21:36:43 +04:00
if ( ! strcmp ( iport_ptr , pr_reg - > pr_reg_isid ) ) {
pr_err ( " SPC-3 PR REGISTER_AND_MOVE: TransportID: %s %s "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" matches: %s %s on received I_T Nexus \n " ,
initiator_str , iport_ptr , pr_reg_nacl - > initiatorname ,
pr_reg - > pr_reg_isid ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
after_iport_check :
/*
* Locate the destination struct se_node_acl from the received Transport ID
*/
spin_lock_bh ( & dest_se_tpg - > acl_node_lock ) ;
dest_node_acl = __core_tpg_get_initiator_node_acl ( dest_se_tpg ,
initiator_str ) ;
if ( dest_node_acl ) {
atomic_inc ( & dest_node_acl - > acl_pr_ref_count ) ;
smp_mb__after_atomic_inc ( ) ;
}
spin_unlock_bh ( & dest_se_tpg - > acl_node_lock ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_node_acl ) {
pr_err ( " Unable to locate %s dest_node_acl for "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" TransportID%s \n " , dest_tf_ops - > get_fabric_name ( ) ,
initiator_str ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
ret = core_scsi3_nodeacl_depend_item ( dest_node_acl ) ;
if ( ret ! = 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " core_scsi3_nodeacl_depend_item() for "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" dest_node_acl \n " ) ;
atomic_dec ( & dest_node_acl - > acl_pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
dest_node_acl = NULL ;
ret = PYX_TRANSPORT_LU_COMM_FAILURE ;
goto out ;
}
#if 0
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR REGISTER_AND_MOVE: Found %s dest_node_acl: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %s from TransportID \n " , dest_tf_ops - > get_fabric_name ( ) ,
dest_node_acl - > initiatorname ) ;
# endif
/*
* Locate the struct se_dev_entry pointer for the matching RELATIVE TARGET
* PORT IDENTIFIER .
*/
dest_se_deve = core_get_se_deve_from_rtpi ( dest_node_acl , rtpi ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_se_deve ) {
pr_err ( " Unable to locate %s dest_se_deve from RTPI: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %hu \n " , dest_tf_ops - > get_fabric_name ( ) , rtpi ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
ret = core_scsi3_lunacl_depend_item ( dest_se_deve ) ;
if ( ret < 0 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " core_scsi3_lunacl_depend_item() failed \n " ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
atomic_dec ( & dest_se_deve - > pr_ref_count ) ;
smp_mb__after_atomic_dec ( ) ;
dest_se_deve = NULL ;
ret = PYX_TRANSPORT_LU_COMM_FAILURE ;
goto out ;
}
#if 0
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR REGISTER_AND_MOVE: Located %s node %s LUN "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" ACL for dest_se_deve->mapped_lun: %u \n " ,
dest_tf_ops - > get_fabric_name ( ) , dest_node_acl - > initiatorname ,
dest_se_deve - > mapped_lun ) ;
# endif
/*
* A persistent reservation needs to already existing in order to
* successfully complete the REGISTER_AND_MOVE service action . .
*/
spin_lock ( & dev - > dev_reservation_lock ) ;
pr_res_holder = dev - > dev_pr_res_holder ;
2011-06-08 21:36:43 +04:00
if ( ! pr_res_holder ) {
pr_warn ( " SPC-3 PR REGISTER_AND_MOVE: No reservation "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" currently held \n " ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
ret = PYX_TRANSPORT_INVALID_CDB_FIELD ;
goto out ;
}
/*
* The received on I_T Nexus must be the reservation holder .
*
* From spc4r17 section 5.7 .8 Table 50 - -
* Register behaviors for a REGISTER AND MOVE service action
*/
if ( pr_res_holder ! = pr_reg ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " SPC-3 PR REGISTER_AND_MOVE: Calling I_T "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" Nexus is not reservation holder \n " ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
ret = PYX_TRANSPORT_RESERVATION_CONFLICT ;
goto out ;
}
/*
* From spc4r17 section 5.7 .8 : registering and moving reservation
*
* If a PERSISTENT RESERVE OUT command with a REGISTER AND MOVE service
* action is received and the established persistent reservation is a
* Write Exclusive - All Registrants type or Exclusive Access -
* All Registrants type reservation , then the command shall be completed
* with RESERVATION CONFLICT status .
*/
if ( ( pr_res_holder - > pr_res_type = = PR_TYPE_WRITE_EXCLUSIVE_ALLREG ) | |
( pr_res_holder - > pr_res_type = = PR_TYPE_EXCLUSIVE_ACCESS_ALLREG ) ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " SPC-3 PR REGISTER_AND_MOVE: Unable to move "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" reservation for type: %s \n " ,
core_scsi3_pr_dump_type ( pr_res_holder - > pr_res_type ) ) ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
ret = PYX_TRANSPORT_RESERVATION_CONFLICT ;
goto out ;
}
pr_res_nacl = pr_res_holder - > pr_reg_nacl ;
/*
* b ) Ignore the contents of the ( received ) SCOPE and TYPE fields ;
*/
type = pr_res_holder - > pr_res_type ;
scope = pr_res_holder - > pr_res_type ;
/*
* c ) Associate the reservation key specified in the SERVICE ACTION
* RESERVATION KEY field with the I_T nexus specified as the
* destination of the register and move , where :
* A ) The I_T nexus is specified by the TransportID and the
* RELATIVE TARGET PORT IDENTIFIER field ( see 6.14 .4 ) ; and
* B ) Regardless of the TransportID format used , the association for
* the initiator port is based on either the initiator port name
* ( see 3.1 .71 ) on SCSI transport protocols where port names are
* required or the initiator port identifier ( see 3.1 .70 ) on SCSI
* transport protocols where port names are not required ;
* d ) Register the reservation key specified in the SERVICE ACTION
* RESERVATION KEY field ;
* e ) Retain the reservation key specified in the SERVICE ACTION
* RESERVATION KEY field and associated information ;
*
* Also , It is not an error for a REGISTER AND MOVE service action to
* register an I_T nexus that is already registered with the same
* reservation key or a different reservation key .
*/
dest_pr_reg = __core_scsi3_locate_pr_reg ( dev , dest_node_acl ,
iport_ptr ) ;
2011-06-08 21:36:43 +04:00
if ( ! dest_pr_reg ) {
2011-07-19 14:26:37 +04:00
ret = core_scsi3_alloc_registration ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_node_acl , dest_se_deve , iport_ptr ,
sa_res_key , 0 , aptpl , 2 , 1 ) ;
if ( ret ! = 0 ) {
spin_unlock ( & dev - > dev_reservation_lock ) ;
ret = PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
goto out ;
}
dest_pr_reg = __core_scsi3_locate_pr_reg ( dev , dest_node_acl ,
iport_ptr ) ;
new_reg = 1 ;
}
/*
* f ) Release the persistent reservation for the persistent reservation
* holder ( i . e . , the I_T nexus on which the
*/
__core_scsi3_complete_pro_release ( dev , pr_res_nacl ,
dev - > dev_pr_res_holder , 0 ) ;
/*
* g ) Move the persistent reservation to the specified I_T nexus using
* the same scope and type as the persistent reservation released in
* item f ) ; and
*/
dev - > dev_pr_res_holder = dest_pr_reg ;
dest_pr_reg - > pr_res_holder = 1 ;
dest_pr_reg - > pr_res_type = type ;
pr_reg - > pr_res_scope = scope ;
prf_isid = core_pr_dump_initiator_port ( pr_reg , & i_buf [ 0 ] ,
PR_REG_ISID_ID_LEN ) ;
/*
* Increment PRGeneration for existing registrations . .
*/
2011-06-08 21:36:43 +04:00
if ( ! new_reg )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
dest_pr_reg - > pr_res_generation = pr_tmpl - > pr_generation + + ;
spin_unlock ( & dev - > dev_reservation_lock ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR [%s] Service Action: REGISTER_AND_MOVE "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" created new reservation holder TYPE: %s on object RTPI: "
" %hu PRGeneration: 0x%08x \n " , dest_tf_ops - > get_fabric_name ( ) ,
core_scsi3_pr_dump_type ( type ) , rtpi ,
dest_pr_reg - > pr_res_generation ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR Successfully moved reservation from "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %s Fabric Node: %s%s -> %s Fabric Node: %s %s \n " ,
tf_ops - > get_fabric_name ( ) , pr_reg_nacl - > initiatorname ,
( prf_isid ) ? & i_buf [ 0 ] : " " , dest_tf_ops - > get_fabric_name ( ) ,
dest_node_acl - > initiatorname , ( iport_ptr ! = NULL ) ?
iport_ptr : " " ) ;
/*
* It is now safe to release configfs group dependencies for destination
* of Transport ID Initiator Device / Port Identifier
*/
core_scsi3_lunacl_undepend_item ( dest_se_deve ) ;
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_se_tpg ) ;
/*
* h ) If the UNREG bit is set to one , unregister ( see 5.7 .11 .3 ) the I_T
* nexus on which PERSISTENT RESERVE OUT command was received .
*/
if ( unreg ) {
spin_lock ( & pr_tmpl - > registration_lock ) ;
__core_scsi3_free_registration ( dev , pr_reg , NULL , 1 ) ;
spin_unlock ( & pr_tmpl - > registration_lock ) ;
} else
core_scsi3_put_pr_reg ( pr_reg ) ;
/*
* Clear the APTPL metadata if APTPL has been disabled , otherwise
* write out the updated metadata to struct file for this SCSI device .
*/
2011-06-08 21:36:43 +04:00
if ( ! aptpl ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_tmpl - > pr_aptpl_active = 0 ;
2011-07-19 14:26:37 +04:00
core_scsi3_update_and_write_aptpl ( cmd - > se_dev , NULL , 0 ) ;
2011-06-08 21:36:43 +04:00
pr_debug ( " SPC-3 PR: Set APTPL Bit Deactivated for "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" REGISTER_AND_MOVE \n " ) ;
} else {
pr_tmpl - > pr_aptpl_active = 1 ;
2011-07-19 14:26:37 +04:00
ret = core_scsi3_update_and_write_aptpl ( cmd - > se_dev ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
& dest_pr_reg - > pr_aptpl_buf [ 0 ] ,
pr_tmpl - > pr_aptpl_buf_len ) ;
2011-06-08 21:36:43 +04:00
if ( ! ret )
pr_debug ( " SPC-3 PR: Set APTPL Bit Activated for "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" REGISTER_AND_MOVE \n " ) ;
}
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
core_scsi3_put_pr_reg ( dest_pr_reg ) ;
return 0 ;
out :
2011-07-20 23:13:28 +04:00
if ( buf )
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
if ( dest_se_deve )
core_scsi3_lunacl_undepend_item ( dest_se_deve ) ;
if ( dest_node_acl )
core_scsi3_nodeacl_undepend_item ( dest_node_acl ) ;
core_scsi3_tpg_undepend_item ( dest_se_tpg ) ;
core_scsi3_put_pr_reg ( pr_reg ) ;
return ret ;
}
static unsigned long long core_scsi3_extract_reservation_key ( unsigned char * cdb )
{
unsigned int __v1 , __v2 ;
__v1 = ( cdb [ 0 ] < < 24 ) | ( cdb [ 1 ] < < 16 ) | ( cdb [ 2 ] < < 8 ) | cdb [ 3 ] ;
__v2 = ( cdb [ 4 ] < < 24 ) | ( cdb [ 5 ] < < 16 ) | ( cdb [ 6 ] < < 8 ) | cdb [ 7 ] ;
return ( ( unsigned long long ) __v2 ) | ( unsigned long long ) __v1 < < 32 ;
}
/*
* See spc4r17 section 6.14 Table 170
*/
static int core_scsi3_emulate_pr_out ( struct se_cmd * cmd , unsigned char * cdb )
{
2011-07-20 23:13:28 +04:00
unsigned char * buf ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u64 res_key , sa_res_key ;
int sa , scope , type , aptpl ;
int spec_i_pt = 0 , all_tg_pt = 0 , unreg = 0 ;
/*
* FIXME : A NULL struct se_session pointer means an this is not coming from
* a $ FABRIC_MOD ' s nexus , but from internal passthrough ops .
*/
2011-06-08 21:36:43 +04:00
if ( ! cmd - > se_sess )
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return PYX_TRANSPORT_LU_COMM_FAILURE ;
if ( cmd - > data_length < 24 ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " SPC-PR: Received PR OUT parameter list "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" length too small: %u \n " , cmd - > data_length ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
/*
* From the PERSISTENT_RESERVE_OUT command descriptor block ( CDB )
*/
sa = ( cdb [ 1 ] & 0x1f ) ;
scope = ( cdb [ 2 ] & 0xf0 ) ;
type = ( cdb [ 2 ] & 0x0f ) ;
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* From PERSISTENT_RESERVE_OUT parameter list ( payload )
*/
res_key = core_scsi3_extract_reservation_key ( & buf [ 0 ] ) ;
sa_res_key = core_scsi3_extract_reservation_key ( & buf [ 8 ] ) ;
/*
* REGISTER_AND_MOVE uses a different SA parameter list containing
* SCSI TransportIDs .
*/
if ( sa ! = PRO_REGISTER_AND_MOVE ) {
spec_i_pt = ( buf [ 20 ] & 0x08 ) ;
all_tg_pt = ( buf [ 20 ] & 0x04 ) ;
aptpl = ( buf [ 20 ] & 0x01 ) ;
} else {
aptpl = ( buf [ 17 ] & 0x01 ) ;
unreg = ( buf [ 17 ] & 0x02 ) ;
}
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
buf = NULL ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* SPEC_I_PT = 1 is only valid for Service action : REGISTER
*/
if ( spec_i_pt & & ( ( cdb [ 1 ] & 0x1f ) ! = PRO_REGISTER ) )
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
/*
* From spc4r17 section 6.14 :
*
* If the SPEC_I_PT bit is set to zero , the service action is not
* REGISTER AND MOVE , and the parameter list length is not 24 , then
* the command shall be terminated with CHECK CONDITION status , with
* the sense key set to ILLEGAL REQUEST , and the additional sense
* code set to PARAMETER LIST LENGTH ERROR .
*/
2011-06-08 21:36:43 +04:00
if ( ! spec_i_pt & & ( ( cdb [ 1 ] & 0x1f ) ! = PRO_REGISTER_AND_MOVE ) & &
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
( cmd - > data_length ! = 24 ) ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " SPC-PR: Received PR OUT illegal parameter "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" list length: %u \n " , cmd - > data_length ) ;
return PYX_TRANSPORT_INVALID_PARAMETER_LIST ;
}
/*
* ( core_scsi3_emulate_pro_ * function parameters
* are defined by spc4r17 Table 174 :
* PERSISTENT_RESERVE_OUT service actions and valid parameters .
*/
switch ( sa ) {
case PRO_REGISTER :
return core_scsi3_emulate_pro_register ( cmd ,
res_key , sa_res_key , aptpl , all_tg_pt , spec_i_pt , 0 ) ;
case PRO_RESERVE :
return core_scsi3_emulate_pro_reserve ( cmd ,
type , scope , res_key ) ;
case PRO_RELEASE :
return core_scsi3_emulate_pro_release ( cmd ,
type , scope , res_key ) ;
case PRO_CLEAR :
return core_scsi3_emulate_pro_clear ( cmd , res_key ) ;
case PRO_PREEMPT :
return core_scsi3_emulate_pro_preempt ( cmd , type , scope ,
res_key , sa_res_key , 0 ) ;
case PRO_PREEMPT_AND_ABORT :
return core_scsi3_emulate_pro_preempt ( cmd , type , scope ,
res_key , sa_res_key , 1 ) ;
case PRO_REGISTER_AND_IGNORE_EXISTING_KEY :
return core_scsi3_emulate_pro_register ( cmd ,
0 , sa_res_key , aptpl , all_tg_pt , spec_i_pt , 1 ) ;
case PRO_REGISTER_AND_MOVE :
return core_scsi3_emulate_pro_register_and_move ( cmd , res_key ,
sa_res_key , aptpl , unreg ) ;
default :
2011-06-08 21:36:43 +04:00
pr_err ( " Unknown PERSISTENT_RESERVE_OUT service "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" action: 0x%02x \n " , cdb [ 1 ] & 0x1f ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
/*
* PERSISTENT_RESERVE_IN Service Action READ_KEYS
*
* See spc4r17 section 5.7 .6 .2 and section 6.13 .2 , Table 160
*/
static int core_scsi3_pri_read_keys ( struct se_cmd * cmd )
{
2011-07-19 14:26:37 +04:00
struct se_device * se_dev = cmd - > se_dev ;
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = se_dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg ;
2011-07-20 23:13:28 +04:00
unsigned char * buf ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u32 add_len = 0 , off = 8 ;
if ( cmd - > data_length < 8 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " PRIN SA READ_KEYS SCSI Data Length: %u "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" too small \n " , cmd - > data_length ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
2011-07-19 12:55:10 +04:00
buf [ 0 ] = ( ( su_dev - > t10_pr . pr_generation > > 24 ) & 0xff ) ;
buf [ 1 ] = ( ( su_dev - > t10_pr . pr_generation > > 16 ) & 0xff ) ;
buf [ 2 ] = ( ( su_dev - > t10_pr . pr_generation > > 8 ) & 0xff ) ;
buf [ 3 ] = ( su_dev - > t10_pr . pr_generation & 0xff ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
2011-07-19 12:55:10 +04:00
spin_lock ( & su_dev - > t10_pr . registration_lock ) ;
list_for_each_entry ( pr_reg , & su_dev - > t10_pr . registration_list ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
pr_reg_list ) {
/*
* Check for overflow of 8 byte PRI READ_KEYS payload and
* next reservation key list descriptor .
*/
if ( ( add_len + 8 ) > ( cmd - > data_length - 8 ) )
break ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 56 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 48 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 40 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 32 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 24 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 16 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 8 ) & 0xff ) ;
buf [ off + + ] = ( pr_reg - > pr_res_key & 0xff ) ;
add_len + = 8 ;
}
2011-07-19 12:55:10 +04:00
spin_unlock ( & su_dev - > t10_pr . registration_lock ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
buf [ 4 ] = ( ( add_len > > 24 ) & 0xff ) ;
buf [ 5 ] = ( ( add_len > > 16 ) & 0xff ) ;
buf [ 6 ] = ( ( add_len > > 8 ) & 0xff ) ;
buf [ 7 ] = ( add_len & 0xff ) ;
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
}
/*
* PERSISTENT_RESERVE_IN Service Action READ_RESERVATION
*
* See spc4r17 section 5.7 .6 .3 and section 6.13 .3 .2 Table 161 and 162
*/
static int core_scsi3_pri_read_reservation ( struct se_cmd * cmd )
{
2011-07-19 14:26:37 +04:00
struct se_device * se_dev = cmd - > se_dev ;
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = se_dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct t10_pr_registration * pr_reg ;
2011-07-20 23:13:28 +04:00
unsigned char * buf ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u64 pr_res_key ;
u32 add_len = 16 ; /* Hardcoded to 16 when a reservation is held. */
if ( cmd - > data_length < 8 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " PRIN SA READ_RESERVATIONS SCSI Data Length: %u "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" too small \n " , cmd - > data_length ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
2011-07-19 12:55:10 +04:00
buf [ 0 ] = ( ( su_dev - > t10_pr . pr_generation > > 24 ) & 0xff ) ;
buf [ 1 ] = ( ( su_dev - > t10_pr . pr_generation > > 16 ) & 0xff ) ;
buf [ 2 ] = ( ( su_dev - > t10_pr . pr_generation > > 8 ) & 0xff ) ;
buf [ 3 ] = ( su_dev - > t10_pr . pr_generation & 0xff ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_lock ( & se_dev - > dev_reservation_lock ) ;
pr_reg = se_dev - > dev_pr_res_holder ;
if ( ( pr_reg ) ) {
/*
* Set the hardcoded Additional Length
*/
buf [ 4 ] = ( ( add_len > > 24 ) & 0xff ) ;
buf [ 5 ] = ( ( add_len > > 16 ) & 0xff ) ;
buf [ 6 ] = ( ( add_len > > 8 ) & 0xff ) ;
buf [ 7 ] = ( add_len & 0xff ) ;
2011-07-20 23:13:28 +04:00
if ( cmd - > data_length < 22 )
goto err ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* Set the Reservation key .
*
* From spc4r17 , section 5.7 .10 :
* A persistent reservation holder has its reservation key
* returned in the parameter data from a PERSISTENT
* RESERVE IN command with READ RESERVATION service action as
* follows :
* a ) For a persistent reservation of the type Write Exclusive
* - All Registrants or Exclusive Access All Regitrants ,
* the reservation key shall be set to zero ; or
* b ) For all other persistent reservation types , the
* reservation key shall be set to the registered
* reservation key for the I_T nexus that holds the
* persistent reservation .
*/
if ( ( pr_reg - > pr_res_type = = PR_TYPE_WRITE_EXCLUSIVE_ALLREG ) | |
( pr_reg - > pr_res_type = = PR_TYPE_EXCLUSIVE_ACCESS_ALLREG ) )
pr_res_key = 0 ;
else
pr_res_key = pr_reg - > pr_res_key ;
buf [ 8 ] = ( ( pr_res_key > > 56 ) & 0xff ) ;
buf [ 9 ] = ( ( pr_res_key > > 48 ) & 0xff ) ;
buf [ 10 ] = ( ( pr_res_key > > 40 ) & 0xff ) ;
buf [ 11 ] = ( ( pr_res_key > > 32 ) & 0xff ) ;
buf [ 12 ] = ( ( pr_res_key > > 24 ) & 0xff ) ;
buf [ 13 ] = ( ( pr_res_key > > 16 ) & 0xff ) ;
buf [ 14 ] = ( ( pr_res_key > > 8 ) & 0xff ) ;
buf [ 15 ] = ( pr_res_key & 0xff ) ;
/*
* Set the SCOPE and TYPE
*/
buf [ 21 ] = ( pr_reg - > pr_res_scope & 0xf0 ) |
( pr_reg - > pr_res_type & 0x0f ) ;
}
2011-07-20 23:13:28 +04:00
err :
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_unlock ( & se_dev - > dev_reservation_lock ) ;
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
}
/*
* PERSISTENT_RESERVE_IN Service Action REPORT_CAPABILITIES
*
* See spc4r17 section 6.13 .4 Table 165
*/
static int core_scsi3_pri_report_capabilities ( struct se_cmd * cmd )
{
2011-07-19 14:26:37 +04:00
struct se_device * dev = cmd - > se_dev ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & dev - > se_sub_dev - > t10_pr ;
2011-07-20 23:13:28 +04:00
unsigned char * buf ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u16 add_len = 8 ; /* Hardcoded to 8. */
if ( cmd - > data_length < 6 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " PRIN SA REPORT_CAPABILITIES SCSI Data Length: "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" %u too small \n " , cmd - > data_length ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
buf [ 0 ] = ( ( add_len < < 8 ) & 0xff ) ;
buf [ 1 ] = ( add_len & 0xff ) ;
buf [ 2 ] | = 0x10 ; /* CRH: Compatible Reservation Hanlding bit. */
buf [ 2 ] | = 0x08 ; /* SIP_C: Specify Initiator Ports Capable bit */
buf [ 2 ] | = 0x04 ; /* ATP_C: All Target Ports Capable bit */
buf [ 2 ] | = 0x01 ; /* PTPL_C: Persistence across Target Power Loss bit */
/*
* We are filling in the PERSISTENT RESERVATION TYPE MASK below , so
* set the TMV : Task Mask Valid bit .
*/
buf [ 3 ] | = 0x80 ;
/*
* Change ALLOW COMMANDs to 0x20 or 0x40 later from Table 166
*/
buf [ 3 ] | = 0x10 ; /* ALLOW COMMANDs field 001b */
/*
* PTPL_A : Persistence across Target Power Loss Active bit
*/
if ( pr_tmpl - > pr_aptpl_active )
buf [ 3 ] | = 0x01 ;
/*
* Setup the PERSISTENT RESERVATION TYPE MASK from Table 167
*/
buf [ 4 ] | = 0x80 ; /* PR_TYPE_EXCLUSIVE_ACCESS_ALLREG */
buf [ 4 ] | = 0x40 ; /* PR_TYPE_EXCLUSIVE_ACCESS_REGONLY */
buf [ 4 ] | = 0x20 ; /* PR_TYPE_WRITE_EXCLUSIVE_REGONLY */
buf [ 4 ] | = 0x08 ; /* PR_TYPE_EXCLUSIVE_ACCESS */
buf [ 4 ] | = 0x02 ; /* PR_TYPE_WRITE_EXCLUSIVE */
buf [ 5 ] | = 0x01 ; /* PR_TYPE_EXCLUSIVE_ACCESS_ALLREG */
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
}
/*
* PERSISTENT_RESERVE_IN Service Action READ_FULL_STATUS
*
* See spc4r17 section 6.13 .5 Table 168 and 169
*/
static int core_scsi3_pri_read_full_status ( struct se_cmd * cmd )
{
2011-07-19 14:26:37 +04:00
struct se_device * se_dev = cmd - > se_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_node_acl * se_nacl ;
2011-07-19 12:55:10 +04:00
struct se_subsystem_dev * su_dev = se_dev - > se_sub_dev ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_portal_group * se_tpg ;
struct t10_pr_registration * pr_reg , * pr_reg_tmp ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * pr_tmpl = & se_dev - > se_sub_dev - > t10_pr ;
2011-07-20 23:13:28 +04:00
unsigned char * buf ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
u32 add_desc_len = 0 , add_len = 0 , desc_len , exp_desc_len ;
u32 off = 8 ; /* off into first Full Status descriptor */
int format_code = 0 ;
if ( cmd - > data_length < 8 ) {
2011-06-08 21:36:43 +04:00
pr_err ( " PRIN SA READ_FULL_STATUS SCSI Data Length: %u "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" too small \n " , cmd - > data_length ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
2011-07-20 23:13:28 +04:00
buf = transport_kmap_first_data_page ( cmd ) ;
2011-07-19 12:55:10 +04:00
buf [ 0 ] = ( ( su_dev - > t10_pr . pr_generation > > 24 ) & 0xff ) ;
buf [ 1 ] = ( ( su_dev - > t10_pr . pr_generation > > 16 ) & 0xff ) ;
buf [ 2 ] = ( ( su_dev - > t10_pr . pr_generation > > 8 ) & 0xff ) ;
buf [ 3 ] = ( su_dev - > t10_pr . pr_generation & 0xff ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
spin_lock ( & pr_tmpl - > registration_lock ) ;
list_for_each_entry_safe ( pr_reg , pr_reg_tmp ,
& pr_tmpl - > registration_list , pr_reg_list ) {
se_nacl = pr_reg - > pr_reg_nacl ;
se_tpg = pr_reg - > pr_reg_nacl - > se_tpg ;
add_desc_len = 0 ;
atomic_inc ( & pr_reg - > pr_res_holders ) ;
smp_mb__after_atomic_inc ( ) ;
spin_unlock ( & pr_tmpl - > registration_lock ) ;
/*
* Determine expected length of $ FABRIC_MOD specific
* TransportID full status descriptor . .
*/
2011-07-19 12:55:10 +04:00
exp_desc_len = se_tpg - > se_tpg_tfo - > tpg_get_pr_transport_id_len (
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_tpg , se_nacl , pr_reg , & format_code ) ;
if ( ( exp_desc_len + add_len ) > cmd - > data_length ) {
2011-06-08 21:36:43 +04:00
pr_warn ( " SPC-3 PRIN READ_FULL_STATUS ran "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" out of buffer: %d \n " , cmd - > data_length ) ;
spin_lock ( & pr_tmpl - > registration_lock ) ;
atomic_dec ( & pr_reg - > pr_res_holders ) ;
smp_mb__after_atomic_dec ( ) ;
break ;
}
/*
* Set RESERVATION KEY
*/
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 56 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 48 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 40 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 32 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 24 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 16 ) & 0xff ) ;
buf [ off + + ] = ( ( pr_reg - > pr_res_key > > 8 ) & 0xff ) ;
buf [ off + + ] = ( pr_reg - > pr_res_key & 0xff ) ;
off + = 4 ; /* Skip Over Reserved area */
/*
* Set ALL_TG_PT bit if PROUT SA REGISTER had this set .
*/
if ( pr_reg - > pr_reg_all_tg_pt )
buf [ off ] = 0x02 ;
/*
* The struct se_lun pointer will be present for the
* reservation holder for PR_HOLDER bit .
*
* Also , if this registration is the reservation
* holder , fill in SCOPE and TYPE in the next byte .
*/
if ( pr_reg - > pr_res_holder ) {
buf [ off + + ] | = 0x01 ;
buf [ off + + ] = ( pr_reg - > pr_res_scope & 0xf0 ) |
( pr_reg - > pr_res_type & 0x0f ) ;
} else
off + = 2 ;
off + = 4 ; /* Skip over reserved area */
/*
* From spc4r17 6.3 .15 :
*
* If the ALL_TG_PT bit set to zero , the RELATIVE TARGET PORT
* IDENTIFIER field contains the relative port identifier ( see
* 3.1 .120 ) of the target port that is part of the I_T nexus
* described by this full status descriptor . If the ALL_TG_PT
* bit is set to one , the contents of the RELATIVE TARGET PORT
* IDENTIFIER field are not defined by this standard .
*/
2011-06-08 21:36:43 +04:00
if ( ! pr_reg - > pr_reg_all_tg_pt ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_port * port = pr_reg - > pr_reg_tg_pt_lun - > lun_sep ;
buf [ off + + ] = ( ( port - > sep_rtpi > > 8 ) & 0xff ) ;
buf [ off + + ] = ( port - > sep_rtpi & 0xff ) ;
} else
off + = 2 ; /* Skip over RELATIVE TARGET PORT IDENTIFER */
/*
* Now , have the $ FABRIC_MOD fill in the protocol identifier
*/
2011-07-19 12:55:10 +04:00
desc_len = se_tpg - > se_tpg_tfo - > tpg_get_pr_transport_id ( se_tpg ,
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
se_nacl , pr_reg , & format_code , & buf [ off + 4 ] ) ;
spin_lock ( & pr_tmpl - > registration_lock ) ;
atomic_dec ( & pr_reg - > pr_res_holders ) ;
smp_mb__after_atomic_dec ( ) ;
/*
* Set the ADDITIONAL DESCRIPTOR LENGTH
*/
buf [ off + + ] = ( ( desc_len > > 24 ) & 0xff ) ;
buf [ off + + ] = ( ( desc_len > > 16 ) & 0xff ) ;
buf [ off + + ] = ( ( desc_len > > 8 ) & 0xff ) ;
buf [ off + + ] = ( desc_len & 0xff ) ;
/*
* Size of full desctipor header minus TransportID
* containing $ FABRIC_MOD specific ) initiator device / port
* WWN information .
*
* See spc4r17 Section 6.13 .5 Table 169
*/
add_desc_len = ( 24 + desc_len ) ;
off + = desc_len ;
add_len + = add_desc_len ;
}
spin_unlock ( & pr_tmpl - > registration_lock ) ;
/*
* Set ADDITIONAL_LENGTH
*/
buf [ 4 ] = ( ( add_len > > 24 ) & 0xff ) ;
buf [ 5 ] = ( ( add_len > > 16 ) & 0xff ) ;
buf [ 6 ] = ( ( add_len > > 8 ) & 0xff ) ;
buf [ 7 ] = ( add_len & 0xff ) ;
2011-07-20 23:13:28 +04:00
transport_kunmap_first_data_page ( cmd ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
}
static int core_scsi3_emulate_pr_in ( struct se_cmd * cmd , unsigned char * cdb )
{
switch ( cdb [ 1 ] & 0x1f ) {
case PRI_READ_KEYS :
return core_scsi3_pri_read_keys ( cmd ) ;
case PRI_READ_RESERVATION :
return core_scsi3_pri_read_reservation ( cmd ) ;
case PRI_REPORT_CAPABILITIES :
return core_scsi3_pri_report_capabilities ( cmd ) ;
case PRI_READ_FULL_STATUS :
return core_scsi3_pri_read_full_status ( cmd ) ;
default :
2011-06-08 21:36:43 +04:00
pr_err ( " Unknown PERSISTENT_RESERVE_IN service "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" action: 0x%02x \n " , cdb [ 1 ] & 0x1f ) ;
return PYX_TRANSPORT_INVALID_CDB_FIELD ;
}
}
int core_scsi3_emulate_pr ( struct se_cmd * cmd )
{
2011-05-03 04:12:10 +04:00
unsigned char * cdb = & cmd - > t_task_cdb [ 0 ] ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
struct se_device * dev = cmd - > se_dev ;
/*
* Following spc2r20 5.5 .1 Reservations overview :
*
* If a logical unit has been reserved by any RESERVE command and is
* still reserved by any initiator , all PERSISTENT RESERVE IN and all
* PERSISTENT RESERVE OUT commands shall conflict regardless of
* initiator or service action and shall terminate with a RESERVATION
* CONFLICT status .
*/
if ( dev - > dev_flags & DF_SPC2_RESERVATIONS ) {
2011-06-08 21:36:43 +04:00
pr_err ( " Received PERSISTENT_RESERVE CDB while legacy "
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
" SPC-2 reservation is held, returning "
" RESERVATION_CONFLICT \n " ) ;
return PYX_TRANSPORT_RESERVATION_CONFLICT ;
}
return ( cdb [ 0 ] = = PERSISTENT_RESERVE_OUT ) ?
core_scsi3_emulate_pr_out ( cmd , cdb ) :
core_scsi3_emulate_pr_in ( cmd , cdb ) ;
}
static int core_pt_reservation_check ( struct se_cmd * cmd , u32 * pr_res_type )
{
return 0 ;
}
static int core_pt_seq_non_holder (
struct se_cmd * cmd ,
unsigned char * cdb ,
u32 pr_reg_type )
{
return 0 ;
}
int core_setup_reservations ( struct se_device * dev , int force_pt )
{
struct se_subsystem_dev * su_dev = dev - > se_sub_dev ;
2011-07-19 12:55:10 +04:00
struct t10_reservation * rest = & su_dev - > t10_pr ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
/*
* If this device is from Target_Core_Mod / pSCSI , use the reservations
* of the Underlying SCSI hardware . In Linux / SCSI terms , this can
* cause a problem because libata and some SATA RAID HBAs appear
* under Linux / SCSI , but to emulate reservations themselves .
*/
2011-07-19 12:55:10 +04:00
if ( ( ( dev - > transport - > transport_type = = TRANSPORT_PLUGIN_PHBA_PDEV ) & &
! ( dev - > se_sub_dev - > se_dev_attrib . emulate_reservations ) ) | | force_pt ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
rest - > res_type = SPC_PASSTHROUGH ;
rest - > pr_ops . t10_reservation_check = & core_pt_reservation_check ;
rest - > pr_ops . t10_seq_non_holder = & core_pt_seq_non_holder ;
2011-06-08 21:36:43 +04:00
pr_debug ( " %s: Using SPC_PASSTHROUGH, no reservation "
2011-07-19 12:55:10 +04:00
" emulation \n " , dev - > transport - > name ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
return 0 ;
}
/*
* If SPC - 3 or above is reported by real or emulated struct se_device ,
* use emulated Persistent Reservations .
*/
2011-07-19 12:55:10 +04:00
if ( dev - > transport - > get_device_rev ( dev ) > = SCSI_3 ) {
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
rest - > res_type = SPC3_PERSISTENT_RESERVATIONS ;
rest - > pr_ops . t10_reservation_check = & core_scsi3_pr_reservation_check ;
rest - > pr_ops . t10_seq_non_holder = & core_scsi3_pr_seq_non_holder ;
2011-06-08 21:36:43 +04:00
pr_debug ( " %s: Using SPC3_PERSISTENT_RESERVATIONS "
2011-07-19 12:55:10 +04:00
" emulation \n " , dev - > transport - > name ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
} else {
rest - > res_type = SPC2_RESERVATIONS ;
rest - > pr_ops . t10_reservation_check = & core_scsi2_reservation_check ;
rest - > pr_ops . t10_seq_non_holder =
& core_scsi2_reservation_seq_non_holder ;
2011-06-08 21:36:43 +04:00
pr_debug ( " %s: Using SPC2_RESERVATIONS emulation \n " ,
2011-07-19 12:55:10 +04:00
dev - > transport - > name ) ;
[SCSI] target: Add LIO target core v4.0.0-rc6
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 <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
2010-12-17 22:11:26 +03:00
}
return 0 ;
}