| Summary of changes between versions 3.4 and 3.5 |
| ----------------------------------------------- |
| - Added the forward_src and forward_dst sysfs attributes. Removed |
| CONFIG_SCST_FORWARD_MODE_PASS_THROUGH. In other words, forward_src mode |
| is no longer global but is now configurable per target port. |
| - Improved forwarding of SCSI commands between H.A. nodes. The relative |
| target port ID is now correct in the device identification inquiry response. |
| The REPORT TARGET PORT GROUPS and SET TARGET PORT GROUPS commands are now |
| processed locally instead of being forwarded. |
| - A subtle bug in the COMPARE AND WRITE implementation for unaligned buffers |
| has been fixed (r8932). |
| - Support for wildcard matching for initiator names has been added to the |
| copy manager. |
| - Unloading scst_vdisk while I/O is ongoing works again reliably. |
| - Support for scst_register_target(..., NULL) has been dropped. This feature |
| was declared obsolete in 2011. |
| - The behavior of the on_alua_state_change_*() callback functions has been |
| modified such that these are only invoked if the state of a local target |
| port group is being modified. |
| - The RPM build gained support for EL mainline kernels and also for CentOSPlus. |
| - Performance of the ib_srpt driver has been improved by switching from a large |
| number of kernel threads to one workqueue per CPU core. |
| - Support for MOFED 5 has been added in the isert-scst and ib_srpt drivers. |
| - Network namespace support has been added in the iscsi-scst driver. This makes |
| it possible to run iscsi-scst inside a container that uses another network |
| namespace than the default. |
| - Fixed a hard to trigger race condition in the iSCSI connection shutdown code. |
| - Fixed a memory leak in conn_free() in iscsi-scstd. |
| - Large RDMA transfers no longer trigger QP termination with the ib_srpt driver. |
| - Handling of iWARP logins has been fixed in ib_srpt. |
| - Added a new driver, qla2x00t-32gbit, that supports 32 Gb/s QLogic FC adapters. |
| - Updated the qla2x00t-32gbit to the version that is available in Linux kernel |
| v5.9 from v5.4. |
| - The scst_user device handler has been made compatible with the ib_srpt |
| zero-copy mode. |
| - scstadmin has been made compatible again with older Perl interpreters. |
| |
| The kernel versions supported by this release are: |
| * Kernel.org kernel versions v2.6.31..v5.10. |
| * Debian / Ubuntu kernels based on upstream kernel versions v2.6.31..v5.10. |
| * RHEL / CentOS 6.x, 7.x and 8.0..8.3 kernels. |
| * UEK version 4, 5 and 6 kernels. |
| |
| Summary of changes between versions 3.3 and 3.4 |
| ----------------------------------------------- |
| - I/O keeps running at full speed if a LUN is added or removed and also if |
| a device is added or removed. |
| - Added support for asynchronous zero-copy file I/O. This change improves |
| vdisk_fileio performance significantly. See also the documentation of the |
| 'async' and 'o_direct' attributes. |
| - Added support for the SCSI WRITE AND VERIFY command. |
| - Reworked the build infrastructure such that switching between debug, release |
| and perf modes is now much faster. |
| - Dropped support for RHEL 5. |
| - Dropped support for procfs. |
| - Dropped support for I/O context sharing. This mechanism improved CFQ |
| performance. |
| - Fixed a number of small bugs. |
| |
| Summary of changes between versions 3.2 and 3.3 |
| ----------------------------------------------- |
| - Support for a new build method ("make dpkg"). |
| - Support for the latest kernels has been added, up to and including |
| Linux kernel v4.19. |
| - A much more powerful latency measurement infrastructure has been added. |
| - Support for asynchronous buffered and direct I/O has been added to scst_vdisk. |
| - H.A. support has been improved. |
| - SCSI pass-through support is now compatible with Linux kernel versions 4.11 |
| and later. |
| - ACA support has been added. |
| - The scst_user driver is now compatible with usercopy hardening. |
| - "make install" is now compatible with SELinux. |
| |
| Summary of changes between versions 3.1 and 3.2 |
| ----------------------------------------------- |
| - Updated SCST to SPC-4. |
| - Added the CONFIG_SCST_FORWARD_MODE_PASS_THROUGH mode. |
| - Added support for command polling. See also the poll_us attribute. |
| - ib_srpt: Added link_layer and port_id sysfs attributes. |
| - ib_srpt: Reduced CPU load caused by stopping a large number of sessions. |
| - isert: Fixed multiple bugs. |
| - scstadmin gained support for saving and restoring copy manager attributes. |
| - scstadmin -attributes behavior for multiple attributes has been fixed. |
| - scstadmin no longer tries to save the dif_checks_failed counter. |
| |
| Summary of changes between versions 3.0 and 3.1 |
| ----------------------------------------------- |
| - vdisk_nullio: the "read_zero" attribute has been added. |
| - scst_vdisk: LBPRZ now follows limits.discard_zeroes_data. |
| - scst core: support for 64-bit LUNs has been added. This requires a Linux |
| kernel that supports 64-bit LUNs. |
| - A new kernel module parameter, scst_forcibly_close_sessions, controls whether |
| or not attempting to remove an access control group with one or more active |
| sessions succeeds or fails with -EBUSY. |
| - scst_vdisk: the EUI-64 and NAA IDs are now configurable. |
| - scst_vdisk: the device name length has been increased from 16 to 64 |
| characters for OpenStack. |
| - The SCSI-passthrough code has been reworked such that SCSI pass-through |
| works with kernel versions >= 2.6.30 without patching the kernel. |
| - T10-PI support has been added to the SCST core. |
| - Counters have been added to keep track of unaligned I/O. |
| - The "forwarding" sysfs attribute has been added. |
| - Support for iSER has been added. |
| - SCST command thread creation has been made faster. |
| - Support for synchronizing persistent reservation information between cluster |
| nodes via the DLM has been added. |
| - Explicit ALUA support has been added. |
| - EXTENDED COPY support has been added. |
| |
| Summary of changes between versions 2.1.0 and 3.0 |
| ------------------------------------------------- |
| |
| - Update to kernels up to 3.3 |
| |
| - Zero copy read side FILEIO implemented |
| |
| - New initialization scripts implemented |
| |
| - Support for rotational attribute added |
| |
| - Bug fixes and other improvements |
| |
| |
| Summary of changes between versions 2.0.0 and 2.1.0 |
| --------------------------------------------------- |
| |
| - Update to kernels up to 3.0 |
| |
| - Support for implicit ALUA added |
| |
| - Change T10 ID and USN generations to get the random part be CRC32 |
| from the device name in the first 8 characters as many MPIO |
| implementations expect |
| |
| - Assigning CPU affinity to threads and connections added |
| |
| - Splitting of read/write CDBs for pass-through devices with sg_tablesize |
| and max_sectors limitations added to scst_disk |
| |
| - Support for thin provisioning commands added in scst_vdisk |
| |
| - Fix possible incorrect atomic context on exec stages |
| |
| - Limit max tasklet commands via scst_max_tasklet_cmd global attribute |
| to prevent possible starvation under heavy load and in some cases |
| improve performance |
| |
| - Autogenerated SCST target names made deprecated |
| |
| - Custom parse improvements |
| |
| - Logging improvements |
| |
| - Bug fixes and other improvements |
| |
| |
| Summary of changes between versions 1.0.1 and 1.0.2 |
| --------------------------------------------------- |
| |
| - Support for bidirectional transfers added |
| |
| - REQUEST SENSE now can return the most recent sense |
| |
| - READ CAPACITY(16) now reports number of logical blocks per physical |
| block |
| |
| - Parameters scst_max_cmd_mem and scst_max_dev_cmd_mem as well as |
| vdisk's parameters num_threads and scst_vdisk_ID made visible through |
| /sys/module/scst and /sys/module/scst_vdisk correspondingly |
| |
| - Shared between devices SGV caches were implemented |
| |
| - Possibilities to operate with single size entries as well as control of |
| the reclamation time added to the SGV cache |
| |
| - Issues cased by change of cdb_len to unsigned fixed. |
| |
| - INIT ELEMENT STATUS WRANGE added to the list of known commands. |
| |
| - Races on scst_user devices cleanup fixed |
| |
| - Implemented abort on timeout of stuck in tgt hardware commands |
| |
| - Automatic sessions reassignment implemented with corresponding atomic |
| management commands added |
| |
| - Generation of INQUIRY DATA HAS CHANGED Unit Attention or AEN for |
| changed devices during automatic sessions reassignment added |
| |
| - Requeue global Unit Attentions on delivery failure added |
| |
| - Update for 2.6.30 |
| |
| - Other bug fixes and cleanups |
| |
| |
| Summary of changes between versions 1.0.0 and 1.0.1 |
| --------------------------------------------------- |
| |
| - Support for descriptor sense format added |
| |
| - Makefiles made more packager friendly (Ruben Laban) |
| |
| - Support for variable length CDB added |
| |
| - Support for Async. Event Notifications added |
| |
| - Implemented "plug-and-play" notifications about new devices in security |
| groups, deleted devices from security groups and changed size of a |
| device. They can be delivered either through AENs (if supported), or |
| Unit Attentions. |
| |
| - New command "resync_size" added to scst_vdisk proc interface to tell |
| scst_vdisk to reread size of the corresponding device after it was |
| changed |
| |
| - Added pattern matching for initiator names in SCST access control |
| (Gennadiy Nerubayev) |
| |
| - Now only sent for execution commands are counted to wait for in TM |
| commands, which made processing of TM commands faster |
| |
| - Now devices blocked only in reset TM commands. ABORTs, etc. now done |
| without devices blocking. |
| |
| - scst_unregister_session_ex() removed, since there are no users of it |
| |
| - New functions added to scst_user interface: |
| |
| * SCST_USER_UNREGISTER_DEVICE - to unregister device, flush mem reuse |
| (SGV) cache and send UCMD_STATE_ON_CACHE_FREEING notifications for all |
| freed buffers to the user space handler. Simple device close doesn't |
| allow that, so all the cached buffers might look as "leaked" from the |
| user space handler POV. |
| |
| * SCST_USER_FLUSH_CACHE - to flush mem reuse (SGV) cache and send |
| UCMD_STATE_ON_CACHE_FREEING notifications for all freed buffers to |
| the user space handler |
| |
| * SCST_USER_DEVICE_CAPACITY_CHANGED - to notify SCST core that the |
| corresponding device has changed its capacity |
| |
| - Clustering of scst_user pages added |
| |
| - Added autogenerated SCSI SN in vdisk handler |
| |
| - Fixed race in scst_user, which could have lead to usage of already freed |
| command. A misbehaving user space handler could have made ucmd to get |
| dead immediately after the lock is released and that is caught |
| now. |
| |
| - Support for CentOS 5.2 added (Bart Van Assche) |
| |
| - In scst_vdisk new module parameter num_threads added to specify a |
| number of threads for each vdisk/vcdrom. Default is 5. |
| |
| - Access control docs updated |
| |
| - Set memory limits according to LOWMEM, not TOTALMEM |
| |
| - Major performance increase working with disk based storage |
| |
| - Now task_mgmt_fn() callback called for TARGET RESET and NEXUS LOSS |
| functions only once for tgt_dev, which belongs to the session, from |
| which the corresponding request came |
| |
| - SGV cache related parameters moved from scst.h to scst_sgv.h |
| |
| - Log level mgmt_minor for messages like "Warning: expected transfer |
| length X for opcode Y" changed to be disabled by default |
| |
| - Added possibility to coexist if both target driver and dev handler |
| need custom memory allocation. Direct consequences: (1) scst_local |
| can work with scst_user's devices and (2) scst_user now compatible |
| with iscsi-scst if put_page_callback patch not applied. |
| |
| - Depecated scst_cmd_get_tgt_resp_flags() removed |
| |
| - SWP and TAS parameters made changeable in vdisk handler |
| |
| - External interface changed to fix usage of in_atomic(). Now target |
| drivers and dev handlers need to explicitly supply preferred execution |
| context in scst_cmd_done() and scst_tgt_cmd_done() |
| |
| - Handling of internal REQUEST SENSE fixed. |
| |
| - Fixed SAM violation (HiSup bit must be set in INQUIRY response) |
| |
| - Fixed handling of VERIFY commands that comes with BYTCHK unset |
| |
| - Handling of double reset UAs made more reliable |
| |
| - A lot of kernel style, checkpatch and sparse fixes (Bart Van Assche) |
| |
| - In-kernel build integration (Bart Van Assche) |
| |
| - Update for kernels up to 2.6.29 |
| |
| - A lot of fixes and cleanups (many people) |
| |
| |
| 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 independent 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 independent 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. |
| |
| - FILEIO was renamed to VDISK. BLOCKIO added to it, thanks to Ross S. W. |
| Walker and Vu Pham. |
| |
| - Updated to work on 2.6.20.x, no update for 2.6.21.x isn't needed |
| |
| - Internal locking and execution context were reimplemnted. As some of |
| the results now FILEIO has >1 IO threads and implemented full support |
| for SCSI task attributes (SIMPLE, ORDERED, etc.). |
| |
| - Ability to have per-target default security groups added. |
| |
| - Updated to work on 2.6.19.x, thanks to Ming Zhang. |
| |
| - Internal threads management reimplemented based on kthread*() API, |
| thanks to Ming Zhang. |
| |
| - /proc implementation moved to seq_*() library, thanks to Ming Zhang. |
| Target drivers need to be updated accordingly. |
| |
| - Linear search in the LUN translation routines scst_translate_lun() |
| and scst_mgmt_translate_lun() was changed to a hash-based one. |
| |
| - Building from the Linux kernel tree updated, inside kernel building fixed. |
| |
| - Support for CPU cache flushing before doing DMA to target devices added. |
| |
| - A lot of cleanups, bug fixes and improvements. |
| |
| Summary of changes between versions 0.9.4 and 0.9.5 |
| --------------------------------------------------- |
| |
| - Fixed many found task management related problems, especially in the |
| RESETs area. CONFIG_SCST_DEBUG_TM compilation option added (see README). |
| |
| - Updated to work on kernels version 2.6.18+. |
| |
| - FILEIO_ONLY added. If it's defined, there is no need to patch the |
| kernel, but pass-through modules (scst_disk, scst_tape, etc.) are not |
| supported). |
| |
| - Fixed problems with big amount of LUNs (500+). |
| |
| - Timer-based retries for targets after SCST_TGT_RES_QUEUE_FULL status |
| implemented. |
| |
| - More intelligent IO flow control implemented. |
| |
| - Fixed broken CDROM FILEIO. Before that it always reported |
| "No medium found" |
| |
| - Data synchronization fixes and improvements in FILEIO. Added FUA |
| support. |
| |
| - Fixed READ(6)/WRITE(6) CDB decoding for block devices. |
| This bug prevented FreeBSD initiators from working. |
| |
| - Implemented sgv_pool. It is mempool-like interface, which caches |
| built SG-vectors in order not to rebuild them again for every |
| subsequent command, so saves performance price of building |
| SG-vectors, including pages allocation, and of additional context |
| switches. |
| |
| - For ABORTED commands xmit_response() now called. A target driver |
| should recognized such commands using new function |
| scst_cmd_aborted(). Also there are some other cleanups, improvements |
| and interfaces changes that affect target drivers and dev handlers. |
| You can find their full list by diff'ing scsi_tgt.h between versions |
| 0.9.4 and 0.9.5. |
| |
| - Function alloc_data_buf() added to struct scst_tgt_template as well |
| as data_buf_tgt_alloc added to struct scst_cmd to allow a target |
| driver implement own memory management handler (by Arne Redlich). |
| |
| - Exported symbols are now not GPL'ed |
| |
| - Various cleanups and a lot of bug fixes. |
| |
| Summary of changes between versions 0.9.3 and 0.9.4 |
| --------------------------------------------------- |
| |
| - Support for 2.4 kernels has been removed |
| |
| - Added on_free_cmd() callback for dev handlers |
| |
| - Fixed BUG() on task aborts. |
| |
| - Fixed WCE (Write Cache Enabled) handling in FILEIO (by Ming Zhang) |
| |
| - Minor cleanups and bug fixes. |
| |
| Summary of changes between versions 0.9.3-pre4 and 0.9.3 |
| -------------------------------------------------------- |
| |
| - Fixed IO errors on initiators (return code 20008) under considerable |
| load, because of returned BUSY status. Now QUEUE FULL status returned |
| instead. |
| |
| - Fixed "deadlock" on sessions creation. |
| |
| - Fixed support for > 2TB storage device in FILEIO handler (by Ming Zhang) |
| |
| - NULLIO added to FILEIO handler (by Ming Zhang) |
| |
| - Commands serialization now per-(session, device), i.e. tgt_dev. |
| |
| - Minor cleanups and bug fixes |
| |
| Summary of changes between versions 0.9.3-pre2 and 0.9.3-pre4 |
| ------------------------------------------------------------- |
| |
| - Sessions registration and unregistrations reimplemented. The |
| interface with target drivers changed (made much more simple, but |
| incompatible). |
| |
| - Some kmalloc()'s converted to SLAB caches (by Nathaniel Clark) |
| |
| - Too low timeouts for management operations in scst_disk were |
| increased |
| |
| - Cleanups and bug fixes, including several race-based crashes |
| |
| Summary of changes between versions 0.9.3-pre1 and 0.9.3-pre2 |
| ------------------------------------------------------------- |
| |
| - Task management was considerably redone. Particularly, now the result |
| of ABORT TASK is returned to remote initiator immediately, except if |
| the result of the aborted command is already started to be sent. |
| |
| - Per-session commands serialization implemented as part of "device |
| blocking" cleanup. |
| |
| - UA generating after MODE SELECT and LOG SELECT implemented |
| |
| - CONFIG_SCST_STRICT_SERIALIZING compile-time option added for those who need |
| the most robust task management and willing to pay some performance cost for |
| that (see README) |
| |
| - IRQ spinlocks were replaced by BH ones, where appropriate. |
| |
| - Ability to change ISO image on the fly in CDROM FILEIO module added |
| |
| - Cleanups and bug fixes |
| |
| Summary of changes between versions 0.9.2 and 0.9.3-pre1 |
| -------------------------------------------------------- |
| |
| - Sophisticated per-initiator access and devices visibility management added |
| (different initiators now could see different set of devices with |
| different permissions) |
| |
| - FILEIO dev handler was reimplemented in most areas, including: |
| |
| * Management interface via /proc added |
| |
| * Various defects using devices/files larger 2Gb were fixed. Thanks |
| to Mark Buechler. |
| |
| * New CDROM FILEIO handler added. |
| |
| * Now per-session threads created to improve concurrent performance. |
| |
| * New flags added that allow using virtual devices as read only, |
| with write through caching or in O_DIRECT mode. |
| |
| * Task management support added. |
| |
| - RAID controller (type 0xC) dev handler added. |
| |
| - SCSI processor (type 3) dev handler added. |
| |
| - Sessions unregistration contexts cleanup. |
| |
| - Dev handler's on_free_cmd() was dropped. Target driver's flag |
| "thread_per_session" was dropped as well. |
| |
| - Internal locking partially redone. |
| |
| - A lot of stability/bug fixes, cleanups and performance improvements. |
| |
| Summary of changes between versions 0.9.1 and 0.9.2 |
| --------------------------------------------------- |
| |
| - 2.6 support, developed and tested on 2.6.7. |
| |
| - FILEIO/BLKDEV virtual disk device handler added. See main README for |
| details. |
| |
| - /proc updates, "trace_log_level" entry added to change traced |
| events on the fly. |
| |
| - Some internal interfaces changed, see the documentation. |
| |
| - Device handlers' source code layout changed, all device handlers |
| live in one subdirectory now. |
| |
| - Crash on memory allocation failure while building SG data vector |
| fixed. |
| |
| - Other minor fixes |
| |
| Summary of changes between versions 0.9.0a and 0.9.1 |
| ---------------------------------------------------- |
| |
| - scst_debug.* files are also installed together with scsi_tgt.h |
| (required by QLA2x00 target and could be useful for other target |
| drivers) |
| |
| - CDB length for unknown commands (e.g. vendor ones) is now determined |
| from CDB |
| |
| - Race with the commands serialization on one drive fixed |
| |
| - Cleanup |
| |