Add implicit ALUA support. On a setup with more than one target port

(sometimes called storage head) this patch makes it possible to tell the
initiator which port to use. Since that information can be specified per LUN,
with this patch it is not only possible to tell the initiator which path to
choose but also to balance the load over target ports. Target port attributes
can not only be defined for target ports that exist on the system on which
SCST is running but also for target ports present on other nodes of the same
HA setup. As far as I know this feature is unique among open source storage
target implementations.

Note: with this patch SCSI target port attributes can be defined for each LUN
defined on each SCST target individually. Such an SCST target is either a
physical entity (e.g. a HCA for the ib_srpt driver) or a logical entity (e.g.
an iSCSI target for the iscsi_scst driver). In the last case it is up to the
user to make sure that there is a one-to-one relationship between SCST target
and SCSI target port.

This patch is based on the specifications in the ANSI T10 spc4r30 document.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@3446 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2011-05-11 02:22:48 +00:00
parent 0f11a6139f
commit e1447ae241
25 changed files with 2083 additions and 1 deletions

View File

@@ -288,7 +288,8 @@ scst_proc="scst/src/scst_proc.c"
scst_10_sgv="scst/include/scst_sgv.h scst/src/scst_mem.h scst/src/scst_mem.c doc/sgv_cache.sgml"
scst_user="scst/include/scst_user.h scst/src/dev_handlers/scst_user.c"
scst_13_vdisk="scst/src/dev_handlers/scst_vdisk.c"
separate_patches="scst_03_public_headers scst_04_main scst_05_targ scst_06_lib scst_07_pres scst_08_sysfs scst_09_debug scst_10_sgv scst_user scst_13_vdisk"
scst_14_tg="scst/src/scst_tg.c"
separate_patches="scst_03_public_headers scst_04_main scst_05_targ scst_06_lib scst_07_pres scst_08_sysfs scst_09_debug scst_10_sgv scst_user scst_13_vdisk scst_14_tg"
if [ "${generating_upstream_patch}" = "false" ]; then
separate_patches+=" scst_proc"