- Version changed to 1.0.0

- Build configuration changed to "Release"
 - iscsi-scst-howto.txt added
 - ChangeLog's updated
 - Minor docs changes
 - scstadm_install and scstadm_uninstall main Makefile targets added



git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@433 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2008-07-07 18:00:32 +00:00
parent ae69bf11e9
commit 0fd9c9b385
18 changed files with 389 additions and 47 deletions
+11
View File
@@ -20,6 +20,7 @@
#export KDIR=/usr/src/linux-2.6
SCST_DIR=scst
SCSTADM_DIR=scstadmin
QLA_INI_DIR=qla2x00t
QLA_DIR=qla2x00t/qla2x00-target
QLA_ISP_DIR=qla_isp
@@ -43,6 +44,9 @@ help:
@echo " scst_install : scst: install"
@echo " scst_uninstall : scst: uninstall"
@echo ""
@echo " scstadm_install : scstadmin: install"
@echo " scstadm_uninstall : scstadmin: uninstall"
@echo ""
@echo " qla : make QLA target driver"
@echo " qla_clean : 2.6 qla target: clean "
@echo " qla_extraclean : 2.6 qla target: clean + clean dependencies"
@@ -149,6 +153,12 @@ scst_clean:
scst_extraclean:
cd $(SCST_DIR) && $(MAKE) extraclean
scstadm_install:
cd $(SCSTADM_DIR) && $(MAKE) install
scstadm_uninstall:
cd $(SCSTADM_DIR) && $(MAKE) uninstall
qla:
cd $(QLA_DIR) && $(MAKE)
@@ -275,5 +285,6 @@ release2debug:
lsi lsi_install lsi_uninstall lsi_clean lsi_extraclean \
iscsi iscsi_install iscsi_uninstall iscsi_clean iscsi_extraclean \
scst scst_install scst_uninstall scst_clean scst_extraclean \
scstadm_install scstadm_uninstall \
usr usr_install usr_uninstall usr_clean usr_extraclean \
debug2perf, debug2release, perf2debug, release2debug
+8
View File
@@ -34,5 +34,13 @@ Summary of changes in iSCSI-SCST since it was IET
were relaced by the proper handling. Hovewer, there is a plenty of work in
this area left, IET is known to have a lot of weaknesses here.
- Task management made more robust. Particularly, possible data
corruption scenarios were fixed.
- Implemented SN based iSCSI IO flow control
- Response data send timeout implemented: now if initiator doesn't
accept data for too long (30 sec), target closes connection
- A lot of other bugfixes and code cleanups.
+22 -16
View File
@@ -1,8 +1,8 @@
iSCSI SCST target driver
========================
Version 1.0.0/0.4.16r151, XX June 2008
--------------------------------------
Version 1.0.0/0.4.16r155, 7 July 2008
-------------------------------------
This driver is a forked with all respects version of iSCSI Enterprise
Target (IET) (http://iscsitarget.sourceforge.net/) with updates to work
@@ -135,6 +135,25 @@ that issue.
CAUTION: Working of target and initiator on the same host isn't
======== supported. See SCST README file for details.
Known issues
------------
Currently iscsi-scst-adm utility is broken, hence not built. But, in
contrast to IET, in iSCSI-SCST it isn't needed so much, since all
devices/LUNs management is done using SCST's /proc interface, e.g. using
scstadmin utility. What's remained for iscsi-scst-adm is manage of iSCSI
targets and their parameters. In case of changing any negotiable iSCSI
parameters renegotiation in all corresponding sessions is required by
iSCSI standard, i.e. they all must be restarted, which, basically, means
iSCSI-SCST restart. So, for parameters changing as well as for
adding/removing targets, the recommended way is to change
iscsi-scst.conf, then restart iSCSI-SCST. In contrast to IET, this
operation is safe. Also, as a side effect, your iscsi-scst.conf will
always be in sync with the running system.
But, if you decide to fix iscsi-scst-adm, your patches will be
appreciated.
Compilation options
-------------------
@@ -152,19 +171,6 @@ in/out in the kernel's module Makefile:
- DEBUG_DIGEST_FAILURES - simulates digest failures in random places.
Known issues
------------
Currently some iscsi-scst-adm functionality is broken. But, from one
side, at the moment I don't have time to look at it and, from other
side, in contrast to IET, in iSCSI-SCST this utility doesn't worth much,
since all devices management is done using SCST's /proc interface.
What's remained for iscsi-scst-adm is managing iSCSI targets and their
parameters, but in any case changing of any negotiable iSCSI parameter
needs renegotiation, i.e. the corresponding session restart, i.e.
iSCSI-SCST restart. But, if you decide to fix iscsi-scst-adm, I will
appreciate your patches.
Creating version of put_page_callback patch for your kernel
-----------------------------------------------------------
@@ -174,7 +180,7 @@ yourself. This is pretty mechanical work, you don't need to understand
how it works, you only need to do the following two steps:
1. Apply the closest version of put_page_callback-<kernel-version>.patch
on your kernel. Resolve only failed hanks from include/ and
on your kernel. Resolve only failed hunks from include/ and
net/core/utils.c, ignore other failures.
2. Search net/ in your kernel source for "put_page" and "get_page"
+241
View File
@@ -0,0 +1,241 @@
How to set up iSCSI-SCST using scstadmin.
1. Download, build and install iSCSI-SCST.
Download the source code:
Released version from http://sourceforge.net/project/showfiles.php?group_id=110471
or the latest development version by command:
svn co https://scst.svn.sourceforge.net/svnroot/scst/trunk
You need to patch the kernel and rebuild it. Only vanilla kernels from
kernel.org are officially supported, but in most cases your favorite
kernel will work fine as well. Select the patch according to your kernel
version (2.6.18.1 in the example below):
cd /usr/src/kernels/linux-2.6.18.1
patch -p1 < /home/erezz/work/scst/iscsi-scst/kernel/patches/put_page_callback-2.6.18.1.patch
patch -p1 < /home/erezz/work/scst/scst/kernel/scst_exec_req_fifo-2.6.18.patch
make clean
Then, build the kernel (i.e. make, make modules_install, make install)
and restart the machine.
In order to build and install SCST and iSCSI, run
make scst scst_install iscsi iscsi_install
ISCSI-SCST includes the following components:
* /etc/init.d/iscsi-scst - service script
* iscsi-scstd - daemon
* iscsi-scst-adm - admin tool (not built in 1.0.0)
* man pages
* Configuration files (located under iscsi-scst/etc/, need to be copied to /etc if you want to use them):
* initiators.allow - used for assigning specific initiators to targets
* initiators.deny - used for assigning specific initiators to targets
* iscsi-scstd.conf - list of targets and their properties
2. Set up /etc/iscsi/ininitiatorname.iscsi. The most convenient way to
set up this file is to install the open-iscsi package provided by your
Linux distro first and then to run the bash commands shown below.
Verify the contents of the generated file.
/etc/init.d/open-iscsi stop
{ echo "InitiatorName=$(/usr/sbin/iscsi-iname)"; echo "InitiatorAlias=$(hostname)"; } >/etc/iscsi/initiatorname.iscsi
/etc/init.d/open-iscsi start
3. Set up /etc/iscsi-scstd.conf, e.g. by running the following shell commands:
cat <<EOF >/etc/iscsi-scstd.conf
Target $(sed -n 's/InitiatorName=//p' /etc/iscsi/initiatorname.iscsi):storage
EOF
4. Set up /etc/scst.conf. The bash statements shown below set up a
configuration file for two vdisks. Replace the device names in the
array 'disk' by those that apply to your system:
{
echo "[HANDLER vdisk]"
echo "#DEVICE <vdisk name>,<device path>,<options>,<block size>"
disk=(/dev/md733 /dev/md734)
for ((i=0;i<${#disk[*]};i++))
do
echo "DEVICE vdisk$i,${disk[$i]},NV_CACHE,512"
done
echo "[ASSIGNMENT Default]"
echo "#DEVICE <device name>,<lun>"
for ((i=0;i<${#disk[*]};i++))
do
echo "DEVICE vdisk$i,$i"
done
} > /etc/scst.conf
Note, that you must have LUN 0. That's a SCSI requirement (documented in SCST's README).
5. Install scstadmin:
cd scstadmin-x.y.z
make install
6. Edit /etc/init.d/scst: remove the modules you do not need from the
SCST_MODULES variable, e.g. qla2x00tgt.
6. Create soft links in /etc/init.d such that SCST starts up
automatically. Use either chkconfig or update-rc.d, depending on the
Linux distribution you are using. An example for Debian systems:
update-rc.d scst defaults
update-rc.d iscsi-scst defaults
7. Restart SCST and iSCSI-SCST such that the new settings become effective:
/etc/init.d/iscsi-scst stop
/etc/init.d/scst stop
/etc/init.d/scst start
/etc/init.d/iscsi-scst start
How to install and use iSCSI-SCST without using scstadmin
First, start scst_disk: modprobe scst_disk
/etc/init.d/iscsi-scst can be used to start/stop/restart/check status.
Selecting devices to be used by SCST.
You can see the list of available devices:
# cat /proc/scsi_tgt/scsi_tgt
Device (host:ch:id:lun or name) Device handler
0:0:0:0 dev_disk
1:0:0:0 dev_disk
3:0:0:0 dev_disk
3:0:0:1 dev_disk
3:0:0:2 dev_disk
3:0:0:3 dev_disk
3:0:0:4 dev_disk
3:0:0:5 dev_disk
3:0:0:6 dev_disk
3:0:0:7 dev_disk
2:0:0:0 none
4:0:0:0 none
4:0:0:5 dev_disk
4:0:0:6 dev_disk
4:0:0:7 dev_disk
4:0:0:8 dev_disk
4:0:0:9 dev_disk
4:0:1:0 dev_disk
4:0:1:1 dev_disk
4:0:1:2 dev_disk
4:0:1:3 dev_disk
4:0:1:4 dev_disk
5:0:0:0 none
5:0:0:5 dev_disk
5:0:0:6 dev_disk
5:0:0:7 dev_disk
5:0:0:8 dev_disk
5:0:0:9 dev_disk
5:0:1:0 dev_disk
5:0:1:1 dev_disk
5:0:1:2 dev_disk
5:0:1:3 dev_disk
5:0:1:4 dev_disk
LUN masking.
SCST defines security groups. For each group, you can add LUNs.
If you want to have all LUNs available for all targets, just add them to
the "Default" group:
# echo "add 5:0:0:8 0" >/proc/scsi_tgt/groups/Default/devices
# cat /proc/scsi_tgt/groups/Default/devices
Device (host:ch:id:lun or name) Virtual lun Options
5:0:0:8 0
Now, the LUN "5:0:0:8" was added to the "Default" group as LUN #0.
Note, that you must have LUN 0. That's a SCSI requirement (documented in SCST's README).
Defining LUN masking
In order to associate specific LUNs with specific targets, do the following:
* Create a group for the target:
echo "add_group Default_iqn.2007-05.com.example:storage.iscsi-scst-1" >/proc/scsi_tgt/scsi_tgt
* Add LUNs to the group:
echo "add 4:0:0:8 0" > /proc/scsi_tgt/groups/Default_iqn.2007-05.com.example\:storage.iscsi-scst-1/devices
This will assign the LUN "4:0:0:8" to the target iqn.2007-05.com.example:storage.iscsi-scst-1.
Again, you must have LUN 0 for each group.
Deleting a LUN from a group
Run the following command:
echo "del 4:0:0:8 0" > /proc/scsi_tgt/groups/Default_iqn.2007-05.com.example\:storage.iscsi-scst-1/devices
This will remove the LUN "4:0:0:8" from the target iqn.2007-05.com.example:storage.iscsi-scst-1.
Deleting a group.
Run the following command:
echo "del_group Default_iqn.2007-05.com.example:storage.iscsi-scst-1" >/proc/scsi_tgt/scsi_tgt
For more information about LUN masking, refer to SCST README, section
"Access and devices visibility management (LUN masking)".
Creating targets using iscsi-scstd.conf.
The easiest way to create targets is to define them in
/etc/iscsi-scstd.conf. An example can be found in etc/iscsi-scstd.conf.
You need to have this file under /etc/ before starting iSCSI-SCST.
Assigning targets to specific initiators
In order to assign targets to specific initiators, you need to have
/etc/initiators.allow and /etc/initiators.deny. You can find
example files in etc/initiators.allow and etc/initiators.deny.
Note that all targets are allowed to all initiators by default, so if
you want to use /etc/initiators.allow, you will need to have
/etc/initiators.deny that looks like this:
ALL ALL
This will deny all initiators expect for those defined in /etc/initiators.allow.
Useful examples of iscsi-scst-adm:
Show a specific target:
# iscsi-scst-adm --op show --tid=1
QueuedCommands=0
Show the configured parameters for a specific target:
# iscsi-scst-adm --op show --tid=1 --sid=0
InitialR2T=No
ImmediateData=
MaxConnections=0
MaxRecvDataSegmentLength=4269849632
MaxXmitDataSegmentLength=10933
MaxBurstLength=4294967295
FirstBurstLength=32767
DefaultTime2Wait=4203042
DefaultTime2Retain=5
MaxOutstandingR2T=0
DataPDUInOrder=No
DataSequenceInOrder=Yes
ErrorRecoveryLevel=0
HeaderDigest=
DataDigest=CRC32C
OFMarker=
IFMarker=No
OFMarkInt=Reject
IFMarkInt=Reject
Bart Van Assche
Erez Zilber
Vladislav Bolkhovitin
+3 -3
View File
@@ -26,9 +26,9 @@ SCST_INC_DIR := $(SUBDIRS)/../../scst/include
EXTRA_CFLAGS += -I$(src)/../include -I$(SCST_INC_DIR)
# -Wextra -Wno-unused-parameter
EXTRA_CFLAGS += -DEXTRACHECKS
#EXTRA_CFLAGS += -DTRACING
EXTRA_CFLAGS += -DDEBUG -g
#EXTRA_CFLAGS += -DEXTRACHECKS
EXTRA_CFLAGS += -DTRACING
#EXTRA_CFLAGS += -DDEBUG -g
#EXTRA_CFLAGS += -DDEBUG_DIGEST_FAILURES
+22 -1
View File
@@ -1,10 +1,31 @@
Summary of changes between versions 0.9.5 and 0.9.6
Summary of changes between versions 0.9.5 and 1.0.0
---------------------------------------------------
- Fixed sg_tablesize in qla2x00t to be per target card, not global
- Updated to work on 2.6.25.x
- Updated to work on 2.6.24.x
- Fixed possible crash if tgt module rmmod'ed under load
- Fixed incorrect residual on internal BUSY replies
- Updated to work on 2.6.23.x
- Fixes a race, when an event comes on the driver unload, so DPC thread
will try to use already half destroyed data.
- Fixed problem with SNS, not advertising target mode.
- Support for per-target default security groups added.
- Updated to work on 2.6.22.x kernels.
- Updated to work on 2.6.21.x kernels.
- Updated to work on 2.6.20.x kernels.
- Updated to work with SCST 0.9.6.
- /proc support routines changed to work with seq_file interface.
+3 -3
View File
@@ -35,9 +35,9 @@ EXTRA_CFLAGS += -I$(SCST_INC_DIR) -DFC_TARGET_SUPPORT
INSTALL_DIR := /lib/modules/$(shell uname -r)/extra
EXTRA_CFLAGS += -DEXTRACHECKS
#EXTRA_CFLAGS += -DTRACING
EXTRA_CFLAGS += -DDEBUG_TGT -g
#EXTRA_CFLAGS += -DEXTRACHECKS
EXTRA_CFLAGS += -DTRACING
#EXTRA_CFLAGS += -DDEBUG_TGT -g
#EXTRA_CFLAGS += -DDEBUG_WORK_IN_THREAD
ifeq ($(KVER),)
+2 -2
View File
@@ -1,8 +1,8 @@
Target driver for Qlogic 2200/2300 Fibre Channel cards
======================================================
Version 1.0.0, XX June 2008
---------------------------
Version 1.0.0, 7 July 2008
--------------------------
This driver has all required features and looks to be quite stable (for
beta) and useful. It consists from two parts: the target mode driver
+1 -1
View File
@@ -5,7 +5,7 @@
* Copyright (C) 2004 - 2005 Leonid Stoljar
* Copyright (C) 2006 Nathaniel Clark <nate@misrule.us>
*
* Qlogic 2x00 SCSI target driver.
* QLogic 2x00 SCSI target driver.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
+3 -3
View File
@@ -5,7 +5,7 @@
* Copyright (C) 2004 - 2005 Leonid Stoljar
* Copyright (C) 2006 Nathaniel Clark <nate@misrule.us>
*
* Qlogic 2x00 SCSI target driver.
* QLogic 2x00 SCSI target driver.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -37,8 +37,8 @@
/* Version numbers, the same as for the kernel */
#define Q2T_VERSION(a,b,c,d) (((a) << 030) + ((b) << 020) + (c) << 010 + (d))
#define Q2T_VERSION_CODE Q2T_VERSION(0,9,6,0)
#define Q2T_VERSION_STRING "1.0.0-rc1"
#define Q2T_VERSION_CODE Q2T_VERSION(1,0,0,0)
#define Q2T_VERSION_STRING "1.0.0"
#define Q2T_MAX_CDB_LEN 16
#define Q2T_TIMEOUT 10 /* in seconds */
+57 -2
View File
@@ -1,6 +1,61 @@
Summary of changes between versions 0.9.5 and 0.9.6
Summary of changes between versions 0.9.5 and 1.0.0
---------------------------------------------------
- Added per-device memory limit and new scst.ko module parameter scst_max_dev_cmd_mem
- Sending REQUEST SENSE fixed
- Fixed possible incorrect command's retry if double RESET UA is detected.
- Fixed __exit misuse, when such functions called from __init functions.
- "RECEIVE DIAGNOSTIC RESULTS" command handling fixed
- Obtaining device queue parameters in scst_obtain_device_parameters()
changed to handle NOT READY sense
- Added possibility to create virtual removable devices
- Updated to work on 2.6.25.x
- Fixed READ POSITION command handling
- TM processing made independant from other TM commands (before it was serialized)
- Sense buffer made dynamic
- Clustering statistic added
- Updated to work on 2.6.24.x
- Version protection added
- Processing latency measurement facility added
- Sessions registration/unregistration made independant from other activities
- Major performance improvements
- Major task management handling improvements
- Updated to work on 2.6.23.x
- Switching between debug<->performance<->release builds added
- scsi_tgt renamed to scst, scsi_tgt.h renamed to scst.h
- Updated to work on 2.6.22.x
- Semaphores converted to mutexes
- 64-bit platform cleanups
- Added limit on maximum queued on a device commands
- Threads made per-device
- User space device handler added
- New SGV cache low memory management backend with memory flow control
facility was implemented, thanks to Krzysztof Blaszkowski.
@@ -31,7 +86,7 @@ Summary of changes between versions 0.9.5 and 0.9.6
- Support for CPU cache flushing before doing DMA to target devices added.
- Various cleanups, bug fixes and improvements.
- A lot of cleanups, bug fixes and improvements.
Summary of changes between versions 0.9.4 and 0.9.5
---------------------------------------------------
+2 -2
View File
@@ -1,8 +1,8 @@
Generic SCSI target mid-level for Linux (SCST)
==============================================
Version 1.0.0, XX June 2008
---------------------------
Version 1.0.0, 7 July 2008
--------------------------
SCST is designed to provide unified, consistent interface between SCSI
target drivers and Linux kernel and simplify target drivers development
+2 -2
View File
@@ -48,9 +48,9 @@ typedef _Bool bool;
#endif
/* Version numbers, the same as for the kernel */
#define SCST_VERSION_CODE 0x00090601
#define SCST_VERSION_CODE 0x01000000
#define SCST_VERSION(a, b, c, d) (((a) << 24) + ((b) << 16) + ((c) << 8) + d)
#define SCST_VERSION_STRING "1.0.0-rc2"
#define SCST_VERSION_STRING "1.0.0"
#define SCST_INTERFACE_VERSION SCST_VERSION_STRING "$Revision$" SCST_CONST_VERSION
/*************************************************************
+1 -1
View File
@@ -26,7 +26,7 @@
#define DEV_USER_NAME "scst_user"
#define DEV_USER_PATH "/dev/"
#define DEV_USER_VERSION_NAME "1.0.0-rc2"
#define DEV_USER_VERSION_NAME "1.0.0"
#define DEV_USER_VERSION DEV_USER_VERSION_NAME "$Revision$" SCST_CONST_VERSION
/*
+3 -3
View File
@@ -115,7 +115,7 @@ EXTRA_CFLAGS += -I$(SCST_INC_DIR) -Wextra -Wno-unused-parameter
#EXTRA_CFLAGS += -DSTRICT_SERIALIZING
EXTRA_CFLAGS += -DEXTRACHECKS
#EXTRA_CFLAGS += -DEXTRACHECKS
#EXTRA_CFLAGS += -DUSE_EXPECTED_VALUES
#EXTRA_CFLAGS += -DALLOW_PASSTHROUGH_IO_SUBMIT_IN_SIRQ
@@ -123,9 +123,9 @@ EXTRA_CFLAGS += -DEXTRACHECKS
#EXTRA_CFLAGS += -fno-inline
#EXTRA_CFLAGS += -DTRACING
EXTRA_CFLAGS += -DTRACING
EXTRA_CFLAGS += -DDEBUG -g
#EXTRA_CFLAGS += -DDEBUG -g
#EXTRA_CFLAGS += -DDEBUG_TM -DTM_DBG_GO_OFFLINE=0
#EXTRA_CFLAGS += -DDEBUG_RETRY
#EXTRA_CFLAGS += -DDEBUG_OOM
+3 -3
View File
@@ -69,10 +69,10 @@ endif
EXTRA_CFLAGS += -I$(SUBDIRS) -I$(SCST_INC_DIR) -Wextra -Wno-unused-parameter
EXTRA_CFLAGS += -DEXTRACHECKS
#EXTRA_CFLAGS += -DEXTRACHECKS
#EXTRA_CFLAGS += -DTRACING
EXTRA_CFLAGS += -DDEBUG -g
EXTRA_CFLAGS += -DTRACING
#EXTRA_CFLAGS += -DDEBUG -g
clean:
rm -f *.o *.ko .*.cmd *.mod.c .*.d .depend Modules.symvers \
+3 -3
View File
@@ -29,9 +29,9 @@ CFLAGS += -O2 -Wall -Wextra -Wno-unused-parameter -Wstrict-prototypes \
PROGS = fileio_tgt
LIBS = -lpthread
CFLAGS += -DEXTRACHECKS
#CFLAGS += -DTRACING
CFLAGS += -DDEBUG -g
#CFLAGS += -DEXTRACHECKS
CFLAGS += -DTRACING
#CFLAGS += -DDEBUG -g
#CFLAGS += -DDEBUG_NOMEM
#CFLAGS += -DDEBUG_SENSE
+2 -2
View File
@@ -1,8 +1,8 @@
User space FILEIO handler
=========================
Version 1.0.0, XX June 2008
---------------------------
Version 1.0.0, 7 July 2008
--------------------------
User space program fileio_tgt uses interface of SCST's scst_user dev
handler as well as allows to see how it works in various modes.