Files
scst/scstadmin
Yan Burman de6aa12e9c Merged revisions 5409-5452,5454 via svnmerge from
svn+ssh://yanb123@svn.code.sf.net/p/scst/svn/trunk

........
  r5409 | bvassche | 2014-04-06 23:13:53 +0300 (Sun, 06 Apr 2014) | 4 lines
  
  scstadmin: Restore LUNs in "scstadmin -list_sessions" output
  
  Signed-off-by: Dave Butler <tears.the@gmail.com>
........
  r5410 | bvassche | 2014-04-06 23:26:08 +0300 (Sun, 06 Apr 2014) | 1 line
  
  scstadmin: List keys alphabetically in the -list_sessions output
........
  r5411 | vlnb | 2014-04-10 02:58:20 +0300 (Thu, 10 Apr 2014) | 10 lines
  
  vdisk_blockio: Specify REQ_SYNC for synchronous I/O requests
  
  Using READ_SYNC instead of READ increases the priority of read requests.
  Using WRITE_SYNC instead of REQ_WRITE increases the priority of write
  requests and avoids that the CFQ scheduler queues such writes waiting
  for further write requests.
  
  Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
  r5412 | vlnb | 2014-04-10 02:59:02 +0300 (Thu, 10 Apr 2014) | 18 lines
  
  vdisk_blockio: Reenable COMPARE AND WRITE
  
  The COMPARE AND WRITE implementation has been tested as follows against
  an SCST vdisk_blockio device:
  
  lba=7
  bdev=$bdev
  for ((i=0;i<4;i++)); do dd if=/dev/urandom of=b$i bs=8k count=1; done
  for p in "0 1" "1 2" "2 3" "3 0"; do set $p; cat b$1 b$2 >b$1$2; done
  dd if=/dev/urandom of=$bdev
  dd if=b0 of=$bdev seek=$lba
  md5sum $bdev
  for ((i=0;i<10000;i++)); do for f in b01 b12 b23 b30; do sg_compare_and_write -l $lba -i $f -n 16 -x 16384 $bdev; done; done
  md5sum $bdev
  
  Signed-off-by: Bart Van Assche <bvanassche@acm.org>
........
  r5413 | bvassche | 2014-04-15 09:03:59 +0300 (Tue, 15 Apr 2014) | 1 line
  
  ib_srpt: Fix a sparse warning
........
  r5414 | vlnb | 2014-04-16 00:26:06 +0300 (Wed, 16 Apr 2014) | 5 lines
  
  Fix READ(6)/WRITE(6)
  
  LBA in those commands is 3 bytes long, not 2.
........
  r5415 | vlnb | 2014-04-16 00:30:26 +0300 (Wed, 16 Apr 2014) | 3 lines
  
  Add SYNCHRONIZE_CACHE(16)
........
  r5416 | vlnb | 2014-04-16 01:04:54 +0300 (Wed, 16 Apr 2014) | 6 lines
  
  Make HEAD OF QUEUE requests sync
  
  Since the block layer has no way to specify bio as HQ, there's no
  choice, but to use every measure to approximate it as close as possible.
........
  r5417 | vlnb | 2014-04-16 01:17:34 +0300 (Wed, 16 Apr 2014) | 3 lines
  
  Add NULLIO VERIFY
........
  r5418 | vlnb | 2014-04-16 04:02:50 +0300 (Wed, 16 Apr 2014) | 3 lines
  
  REPORT SUPPORTED OPERATION CODES added
........
  r5419 | vlnb | 2014-04-16 04:05:49 +0300 (Wed, 16 Apr 2014) | 3 lines
  
  Cleanup
........
  r5420 | vlnb | 2014-04-16 05:24:44 +0300 (Wed, 16 Apr 2014) | 3 lines
  
  Follow up for r5418: some cleanups and fixes
........
  r5421 | bvassche | 2014-04-16 09:17:19 +0300 (Wed, 16 Apr 2014) | 6 lines
  
  scst_targ: Fix a checkpatch complaint
  
  Avoid that checkpatch reports the following message:
  
  ERROR: space required before the open parenthesis '('
........
  r5422 | bvassche | 2014-04-16 09:35:19 +0300 (Wed, 16 Apr 2014) | 1 line
  
  scst_vdisk: Build fix for kernels < 2.6.36 (see also r5416)
........
  r5423 | bvassche | 2014-04-16 10:30:34 +0300 (Wed, 16 Apr 2014) | 6 lines
  
  ib_srpt: Disable RDMA access by the initiator
  
  With the SRP protocol all RDMA operations are initiated by the target.
  Since no RDMA operations are initiated by the initiator, do not grant
  the initiator permission to submit RDMA reads or writes to the target.
........
  r5424 | bvassche | 2014-04-16 11:01:58 +0300 (Wed, 16 Apr 2014) | 1 line
  
  ib_srpt: Constify two arguments of srpt_get_nexus()
........
  r5425 | bvassche | 2014-04-16 11:08:50 +0300 (Wed, 16 Apr 2014) | 1 line
  
  ib_srpt: Clean up the code that prints the dgid during login
........
  r5426 | bvassche | 2014-04-16 11:23:11 +0300 (Wed, 16 Apr 2014) | 1 line
  
  ib_srpt: Cache P_Key lookups
........
  r5427 | bvassche | 2014-04-16 12:14:31 +0300 (Wed, 16 Apr 2014) | 1 line
  
  ib_srpt: Remove a superfluous assignment
........
  r5428 | bvassche | 2014-04-16 12:31:56 +0300 (Wed, 16 Apr 2014) | 1 line
  
  scst_vdisk: Avoid that checkpatch complains about unnecessary line continuations
........
  r5429 | bvassche | 2014-04-16 12:35:18 +0300 (Wed, 16 Apr 2014) | 1 line
  
  scst_lib: Avoid that checkpatch complains about unnecessary line continuations
........
  r5430 | bvassche | 2014-04-17 09:09:41 +0300 (Thu, 17 Apr 2014) | 1 line
  
  scst_vdisk: Kernel 2.6.27 build fix
........
  r5431 | bvassche | 2014-04-17 09:12:07 +0300 (Thu, 17 Apr 2014) | 5 lines
  
  scst_vdisk: Fix a kernel 2.6.27 compiler warning
  
  Avoid that the compiler reports that variables 'start_sector' and 'nr_sects'
  are set but not used when building against kernel 2.6.27.
........
  r5432 | vlnb | 2014-04-18 03:32:51 +0300 (Fri, 18 Apr 2014) | 3 lines
  
  Update to kernels 3.14
........
  r5433 | bvassche | 2014-04-18 08:50:04 +0300 (Fri, 18 Apr 2014) | 1 line
  
  nightly build: Add kernel 3.14 build infrastructure
........
  r5434 | bvassche | 2014-04-18 08:54:29 +0300 (Fri, 18 Apr 2014) | 1 line
  
  nightly build: Add kernel version 3.14.1 and update other kernel versions
........
  r5435 | bvassche | 2014-04-18 08:56:35 +0300 (Fri, 18 Apr 2014) | 6 lines
  
  iscsi-scst: Fix a checkpatch warning
  
  Fix the following checkpatch 3.14 warning:
  
  Unnecessary parentheses - maybe == should be = ?
........
  r5436 | bvassche | 2014-04-18 09:03:34 +0300 (Fri, 18 Apr 2014) | 6 lines
  
  scst.h: Fix a checkpatch warning
  
  Fix the following checkpatch 3.14 warning:
  
  Unnecessary space after function pointer name
........
  r5437 | bvassche | 2014-04-18 09:08:07 +0300 (Fri, 18 Apr 2014) | 6 lines
  
  scst: Fix a checkpatch warning
  
  Fix the following checkpatch 3.14 warning:
      
  Unnecessary space after function pointer name
........
  r5438 | bvassche | 2014-04-18 09:13:03 +0300 (Fri, 18 Apr 2014) | 6 lines
  
  scst: Fix a checkpatch 3.14 warning about whitespace
  
  Fix the following checkpatch 3.14 warning:
  
  missing space after return type
........
  r5439 | bvassche | 2014-04-18 14:09:55 +0300 (Fri, 18 Apr 2014) | 1 line
  
  ib_srpt: Update README
........
  r5440 | bvassche | 2014-04-18 15:04:05 +0300 (Fri, 18 Apr 2014) | 2 lines
  
  ib_srpt: Move IB/CM knowledge out of srpt_cm_req_recv()
........
  r5441 | bvassche | 2014-04-18 15:08:00 +0300 (Fri, 18 Apr 2014) | 6 lines
  
  ib_srpt: Remove a superfluous check from the REQ handler
  
  ib_send_cm_rep() checks the connection state before sending a response.
  Hence checking ch->state before calling ib_send_cm_rep() is superfluous,
  so remove that check and also the locking that is no longer needed.
........
  r5442 | bvassche | 2014-04-18 15:09:33 +0300 (Fri, 18 Apr 2014) | 5 lines
  
  ib_srpt: Prepare RDMA/CM support
      
  Move IB/CM members into a new struct. Report channel pointer instead of CM ID
  pointer in diagnostic messages.
........
  r5443 | bvassche | 2014-04-18 15:10:47 +0300 (Fri, 18 Apr 2014) | 5 lines
  
  ib_srpt: Use a mutex instead of a spinlock to protect the channel list
      
  This is allowed because all CM callback functions are invoked from thread
  context.
........
  r5444 | bvassche | 2014-04-18 15:11:18 +0300 (Fri, 18 Apr 2014) | 2 lines
  
  ib_srpt: Move the code for checking the QP timeout
........
  r5445 | bvassche | 2014-04-18 15:22:30 +0300 (Fri, 18 Apr 2014) | 4 lines
  
  ib_srpt: Add RDMA/CM support
  
  Or in other words, add RoCE and iWARP support.
........
  r5446 | bvassche | 2014-04-18 15:38:39 +0300 (Fri, 18 Apr 2014) | 1 line
  
  ib_srpt: Build fix for kernel versions < 3.0
........
  r5447 | bvassche | 2014-04-18 15:44:48 +0300 (Fri, 18 Apr 2014) | 1 line
  
  ib_srpt: RHEL 6.5 build fix
........
  r5448 | bvassche | 2014-04-19 14:48:33 +0300 (Sat, 19 Apr 2014) | 1 line
  
  scst_vdisk, COMPARE AND WRITE: Convert a kernel warning into a SCSI sense code
........
  r5449 | bvassche | 2014-04-19 14:52:34 +0300 (Sat, 19 Apr 2014) | 33 lines
  
  vdisk_blockio: Make COMPARE AND WRITE compatible with the scsi_debug driver
  
  This patch fixes the following kernel oops:
  
  BUG: unable to handle kernel paging request at ffffeae380000690
  Call Trace:
   [<ffffffff812f69f9>] sg_miter_next+0x9/0xd0
   [<ffffffff812f6b60>] sg_copy_buffer+0xa0/0x100
   [<ffffffffa0507fc6>] do_device_access.isra.8+0xa6/0x150 [scsi_debug]
   [<ffffffffa05085f4>] resp_read+0xe4/0x240 [scsi_debug]
   [<ffffffffa050b285>] scsi_debug_queuecommand_lck+0x11e5/0x2060 [scsi_debug]
   [<ffffffffa050c130>] scsi_debug_queuecommand+0x30/0x48 [scsi_debug]
   [<ffffffff813fe23f>] scsi_dispatch_cmd+0xaf/0x260
   [<ffffffff814068ed>] scsi_request_fn+0x32d/0x540
   [<ffffffff812bda2a>] __blk_run_queue+0x2a/0x40
   [<ffffffff812c25a4>] blk_queue_bio+0x274/0x350
   [<ffffffff812bd878>] generic_make_request+0xa8/0xf0
   [<ffffffff812bd92c>] submit_bio+0x6c/0x140
   [<ffffffffa06247f6>] blockio_rw_sync.isra.29+0x106/0x170 [scst_vdisk]
   [<ffffffffa0629bf9>] vdisk_exec_caw+0xd9/0x3c0 [scst_vdisk]
   [<ffffffffa061ff5e>] vdev_do_job+0x9e/0x320 [scst_vdisk]
   [<ffffffffa0622c47>] non_fileio_exec+0x57/0xd0 [scst_vdisk]
   [<ffffffffa054cde2>] scst_do_real_exec+0x92/0x3b0 [scst]
   [<ffffffffa05502d2>] scst_exec_check_blocking+0xe2/0x300 [scst]
   [<ffffffffa055066b>] scst_exec_check_sn+0x17b/0x2d0 [scst]
   [<ffffffffa0553231>] scst_process_active_cmd+0x431/0x770 [scst]
   [<ffffffffa0554a0a>] scst_do_job_active+0xea/0x180 [scst]
   [<ffffffffa0554bc6>] scst_cmd_thread+0x126/0x290 [scst]
   [<ffffffff81075241>] kthread+0xc1/0xe0
   [<ffffffff81598ccc>] ret_from_fork+0x7c/0xb0
  
  Reported-by: Sebastian Herbszt <herbszt@gmx.de>
........
  r5450 | bvassche | 2014-04-20 09:24:23 +0300 (Sun, 20 Apr 2014) | 1 line
  
  iscsi-scst/kernel/patches/put_page_callback-3.2.57.patch: Add
........
  r5451 | bvassche | 2014-04-22 09:56:37 +0300 (Tue, 22 Apr 2014) | 1 line
  
  scst: Revert r5438, a whitespace-only change
........
  r5452 | bvassche | 2014-04-22 10:05:21 +0300 (Tue, 22 Apr 2014) | 1 line
  
  scripts/run-regression-tests: Suppress the checkpatch warning "missing space after return type"
........
  r5454 | bvassche | 2014-04-22 10:32:44 +0300 (Tue, 22 Apr 2014) | 1 line
  
  scst/README: Update the section about Linux initiator ALUA support
........


git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/iser@5455 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2014-04-22 07:50:34 +00:00
..
2010-08-31 17:28:49 +00:00

SCST Configuration/Administration scripts. Here you'll find scstadmin which reads
a configuration file /etc/scst.conf, or one if your choosing. With it you can manually
or automatically configure every aspect of SCST incuding enabling/disabling target mode
on your target SCSI controller. The old directory contains scst_db which uses a mysql
backend database to configure SCST but doesn't handle all the things scstadmin handles.
The perl module SCST::SCST is very generic and tries to handle error checking as well.

The init script was written for debian but should work on most distributions.


	scstadmin.sysfs
			Use this version if you've disabled procfs support in SCST.
	scstadmin.procfs
			This is the default version which uses the older procfs.

	scst-0.8.22	This is the SCST Perl module required by scstadmin and scst_db.
	scst-0.9.00	This is the SCST Perl module to be used with SCST compiled
                        for sysfs. Note, the current version of scstadmin will NOT yet
                        work with this module.

	scstadmin	Script which can accept operations on a command line or from
			a configuration file. See scst.conf. For command help,
				#> scstadmin

	scst.conf	Configuration file for scst script. Usually stored
			in /etc.

	examples	Configuration examples.

	init.d/scst	Init script to start SCST on boot which uses scstadmin.


INSTALLING
----------

Now do the normal:

make
make install

This installs scstadmin, the init.d script and the perl module. If you want SCST to
startup and configure automatically upon boot, enable SCST using your favorite
SysV init editor.

NOTE: The init.d startup & shutdown scripts now depend on lsb-core. Ensure you have
lsb-core installed or 'make install' will fail. Make sure /usr/lib/lsb/install_initd
exists.


GETTING HELP
------------

The new scstadmin has many more options than the olde procfs version to see
them, type:

scstadmin --help


CONVERTING FROM PROCFS (scst version 1.x)
-----------------------------------------

The new scstadmin uses a different configuration file format. However,
scstadmin will convert your old configuration file for you. No special
arguments are required, simply:

scstadmin -config <old config file>

Take note of warnings issued by scstadmin. Manually fix configuration
errors using scstadmin. Once you're satisfied your running configuration is
what you expect, save it by typing:

scstadmin -write_config <new config file>

Be sure to review this new configuration file to ensure it matches.


CREATING A CONFIGURATION FROM SCRATCH
-------------------------------------

* DEVICES *

Devices are defined by their handler. Commonly used handlers are dev_disk,
dev_cdrom, vdisk_fileio, vdisk_blockio and vcdrom.

To list all the available handlers, type:

scstadmin -list_handler

Physical devices used for passthrough handlers like dev_disk and dev_cdrom
are defined by their H:C:I:L :

HANDLER dev_disk {
	DEVICE 1:0:0:0
}

HANDLER dev_cdrom {
	DEVICE 2:0:0:0
}

Virtual devices are opened through special CREATE attributes. For example, a 
virtual disk named "disk1" pointing to a disk partition /dev/hda1 would be look
like:

HANDLER vdisk_fileio {
	DEVICE disk1 {
		filename /dev/hda1
	}
}

To list all the available CREATE attributes for a given handler, type:

scstadmin -list_hnd_attr <handler>

* ASSIGNING DEVICES TO TARGET AND INITIATORS *

Now we can assign the device to a target driver. To get a list of available
drivers, type:

scstadmin -list_driver

To list all available targets, type:

scstadmin -list_target

Now we can build our configuration assigning disk1 to LUN 0 for all initiators:

TARGET_DRIVER qla2x00t {
	TARGET 25:00:00:f0:98:87:92:f3 {
		LUN 0 disk1

		enabled 1
	}
}

NOTE: We added the attribute "enabled" and set it to "1". Without this attribute
set to 1, this target will be disabled and no initiators have access to its
LUNs.

This assigns disk1 to LUN 0 using default attributes. To list all available LUN
CREATE attributes, type:

scstadmin -list_tgt_attr <target> -driver <driver>

An example would be to use the CREATE attribute "read_only" to force the LUN to
be read-only:

TARGET_DRIVER qla2x00t {
	TARGET 25:00:00:f0:98:87:92:f3 {
		LUN 0 disk1 {
			read_only 1
		}

		# Assign LUN 1 to passthrough device 1:0:0:0
		LUN 1 1:0:0:0

		enabled 1
	}
}

Since LUNs 0 and 1 will now be available to all targets, we may want to
establish groups to restrict which LUNs are available to which initiators.
To do that, we use the GROUP clause within the TARGET clause:

TARGET_DRIVER qla2x00t {
	TARGET 25:00:00:f0:98:87:92:f3 {
		GROUP production {
			LUN 0 disk1 {
				read_only 1
			}

			INITIATOR 25:00:00:f0:99:87:94:a3
		}

		GROUP development {
			LUN 0 1:0:0:0
			INITIATOR 25:00:00:f0:99:87:94:a4
		}

		# Allow a CDROM device to be LUN 1 for all initiators
		LUN 1 2:0:0:0

		enabled 1
	}
}

For drivers which support virtual targets, like iSCSI, scstadmin will simply
create them on the fly:

TARGET_DRIVER iscsi {
	enabled 1

	IncomingUser "joe 12charsecret"

	TARGET iqn.2006-10.net.vlnb:tgt {
		IncomingUser "joe 12charsecret"

		LUN 0 disk1

		enabled 1
	}
}

Notice we included a new attribute "IncomingUser" This is a dynamic attribute
which allows an initiator to scan for LUNs, if added at the driver level, and
attach to LUNs if added at the target level. To retrieve a list of available
driver dynamic attributes, type:

scstadmin -list_drv_attr <driver>

To retrieve a list of available target dynamic attributes, type:

scstadmin -list_tgt_attr <target> -driver <driver>

Other attributes called non-key attributes may also be defined, assuming they
are writable. These can be listed using any of the above -list commands using
the extra -nonkey option:

scstadmin -list_tgt_attr <target> -driver <driver> -nonkey

* EXAMPLE CONFIGURATION *

A complete configuration using the above examples would look like:

HANDLER dev_disk {
	DEVICE 1:0:0:0
}

HANDLER dev_cdrom {
	DEVICE 2:0:0:0
}

HANDLER vdisk_fileio {
	DEVICE disk1 {
		filename /dev/hda1
	}
}

TARGET_DRIVER qla2x00t {
	TARGET 25:00:00:f0:98:87:92:f3 {
		GROUP production {
			LUN 0 disk1 {
				read_only 1
			}

			INITIATOR 25:00:00:f0:99:87:94:a3
		}

		GROUP development {
			LUN 0 1:0:0:0
			INITIATOR 25:00:00:f0:99:87:94:a4
		}

		# Allow a CDROM device to be LUN 1 for all initiators
		LUN 1 2:0:0:0

		enabled 1
	}
}

TARGET_DRIVER iscsi {
	enabled 1

	IncomingUser "joe 12charsecret"

	TARGET iqn.2006-10.net.vlnb:tgt {
		IncomingUser "joe 12charsecret"

		LUN 0 disk1

		enabled 1
	}
}