Chenge logs and TAGS updated
[mirror/scst/.git] / scst / ChangeLog
1 Summary of changes between versions 1.0.1 and 1.0.2
2 ---------------------------------------------------
3
4  - Support for bidirectional transfers added
5
6  - REQUEST SENSE now can return the most recent sense
7
8  - READ CAPACITY(16) now reports number of logical blocks per phisical
9    block
10
11  - Parameters scst_max_cmd_mem and scst_max_dev_cmd_mem as well as
12    vdisk's parameters num_threads and scst_vdisk_ID made visible through
13    /sys/module/scst and /sys/module/scst_vdisk correspondingly
14
15  - Shared between devices SGV caches were implemented
16  
17  - Possibilities to operate with single size entries as well as control of
18    the reclamation time added to the SGV cache
19
20  - Issues cased by change of cdb_len to unsigned fixed.
21
22  - INIT ELEMENT STATUS WRANGE added to the list of known commands.
23
24  - Races on scst_user devices cleanup fixed
25  
26  - Implemented abort on timeout of stuck in tgt hardware commands
27
28  - Automatic sessions reassignment implemented with corresponding atomic
29    management commands added
30
31  - Generation of INQUERY DATA HAS CHANGED Unit Attention or AEN for
32    changed devices during automatic sessions reassignment added
33
34  - Requeue global Unit Attentions on delivery failure added
35
36  - Update for 2.6.30
37
38  - Other bug fixes and cleanups 
39
40
41 Summary of changes between versions 1.0.0 and 1.0.1
42 ---------------------------------------------------
43
44  - Support for descriptor sense format added
45
46  - Makefiles made more packager friendly (Ruben Laban)
47
48  - Support for variable lenght CDB added
49
50  - Support for Async. Event Notifications added
51  
52  - Implemented "plug-and-play" notifications about new devices in security
53    groups, deleted devices from security groups and changed size of a
54    device. They can be delivered either through AENs (if supported), or
55    Unit Attentions.
56   
57  - New command "resync_size" added to scst_vdisk proc interface to tell
58    scst_vdisk to reread size of the corresponding device after it was
59    changed
60
61  - Added pattern matching for initiator names in SCST access control
62    (Gennadiy Nerubayev)
63
64  - Now only sent for execution commands are counted to wait for in TM
65    commands, which made processing of TM commands faster
66
67  - Now devices blocked only in reset TM commands. ABORTs, etc. now done
68    without devices blocking.
69
70  - scst_unregister_session_ex() removed, since there are no users of it
71
72  -  New functions added to scst_user interface:
73  
74     * SCST_USER_UNREGISTER_DEVICE - to unregister device, flush mem reuse
75      (SGV) cache and send UCMD_STATE_ON_CACHE_FREEING notifications for all
76      freed buffers to the user space handler. Simple device close doesn't
77      allow that, so all the cached buffers might look as "leaked" from the
78      user space handler POV.
79   
80     * SCST_USER_FLUSH_CACHE - to flush mem reuse (SGV) cache and send
81       UCMD_STATE_ON_CACHE_FREEING notifications for all freed buffers to
82       the user space handler
83
84     * SCST_USER_DEVICE_CAPACITY_CHANGED - to notify SCST core that the
85       corresponding device has changed its capacity
86
87  - Clustering of scst_user pages added
88
89  - Added autogenerated SCSI SN in vdisk handler
90
91  - Fixed race in scst_user, which could have lead to usage of already freed
92    command. A misbehaving user space handler could have made ucmd to get
93    dead immediately after the lock is released and that is caught
94    now.
95
96  - Support for CentOS 5.2 added (Bart Van Assche)
97
98  - In scst_vdisk new module parameter num_threads added to specify a
99    number of threads for each vdisk/vcdrom. Default is 5.
100
101  - Access control docs updated
102
103  - Set memory limits according to LOWMEM, not TOTALMEM
104
105  - Major performance increase working with disk based storage
106
107  - Now task_mgmt_fn() callback called for TARGET RESET and NEXUS LOSS
108    functions only once for tgt_dev, which belongs to the session, from
109    which the corresponding request came
110
111  - SGV cache related parameters moved from scst.h to scst_sgv.h
112
113  - Log level mgmt_minor for messages like "Warning: expected transfer
114    length X for opcode Y" changed to be disabled by default
115
116  - Added possibility to coexist if both target driver and dev handler
117    need custom memory allocation. Direct consequences: (1) scst_local
118    can work with scst_user's devices and (2) scst_user now compatible
119    with iscsi-scst if put_page_callback patch not applied.
120
121  - Depecated scst_cmd_get_tgt_resp_flags() removed
122
123  - SWP and TAS parameters made changable in vdisk handler
124
125  - External interface changed to fix usage of in_atomic(). Now target
126    drivers and dev handlers need to explicitly supply preferred execution
127    context in scst_cmd_done() and scst_tgt_cmd_done()
128
129  - Handling of internal REQUEST SENSE fixed.
130
131  - Fixed SAM violation (HiSup bit must be set in INQUIRY response)
132
133  - Fixed handling of VERIFY commands that comes with BYTCHK unset
134
135  - Handling of double reset UAs made more reliable
136
137  - A lot of kernel style, checkpatch and sparse fixes (Bart Van Assche)
138
139  - In-kernel build integration (Bart Van Assche)
140
141  - Update for kernels up to 2.6.29
142
143  - A lot of fixes and cleanups (many people)
144
145
146 Summary of changes between versions 0.9.5 and 1.0.0
147 ---------------------------------------------------
148
149  - Added per-device memory limit and new scst.ko module parameter scst_max_dev_cmd_mem
150
151  - Sending REQUEST SENSE fixed
152
153  - Fixed possible incorrect command's retry if double RESET UA is detected.
154
155  - Fixed __exit misuse, when such functions called from __init functions.
156
157  - "RECEIVE DIAGNOSTIC RESULTS" command handling fixed
158
159  - Obtaining device queue parameters in scst_obtain_device_parameters()
160    changed to handle NOT READY sense
161
162  - Added possibility to create virtual removable devices
163
164  - Updated to work on 2.6.25.x
165
166  - Fixed READ POSITION command handling
167
168  - TM processing made independant from other TM commands (before it was serialized)
169
170  - Sense buffer made dynamic
171
172  - Clustering statistic added
173
174  - Updated to work on 2.6.24.x
175
176  - Version protection added
177
178  - Processing latency measurement facility added
179
180  - Sessions registration/unregistration made independant from other activities
181
182  - Major performance improvements
183
184  - Major task management handling improvements
185
186  - Updated to work on 2.6.23.x
187
188  - Switching between debug<->performance<->release builds added
189
190  - scsi_tgt renamed to scst, scsi_tgt.h renamed to scst.h
191
192  - Updated to work on 2.6.22.x
193
194  - Semaphores converted to mutexes
195
196  - 64-bit platform cleanups
197
198  - Added limit on maximum queued on a device commands
199
200  - Threads made per-device
201
202  - User space device handler added
203
204  - New SGV cache low memory management backend with memory flow control
205    facility was implemented, thanks to Krzysztof Blaszkowski.
206
207  - FILEIO was renamed to VDISK. BLOCKIO added to it, thanks to Ross S. W.
208    Walker and Vu Pham.
209
210  - Updated to work on 2.6.20.x, no update for 2.6.21.x isn't needed
211
212  - Internal locking and execution context were reimplemnted. As some of
213    the results now FILEIO has >1 IO threads and implemented full support
214    for SCSI task attributes (SIMPLE, ORDERED, etc.).
215
216  - Ability to have per-target default security groups added.
217
218  - Updated to work on 2.6.19.x, thanks to Ming Zhang.
219
220  - Internal threads management reimplemented based on kthread*() API,
221    thanks to Ming Zhang.
222
223  - /proc implementation moved to seq_*() library, thanks to Ming Zhang.
224    Target drivers need to be updated accordingly.
225
226  - Linear search in the LUN translation routines scst_translate_lun()
227    and scst_mgmt_translate_lun() was changed to a hash-based one, thanks
228    to Michael G. Byrnes.
229
230  - Building from the Linux kernel tree updated, inside kernel building fixed.
231
232  - Support for CPU cache flushing before doing DMA to target devices added.
233
234  - A lot of cleanups, bug fixes and improvements.
235
236 Summary of changes between versions 0.9.4 and 0.9.5
237 ---------------------------------------------------
238
239  - Fixed many found task management related problems, especially in the
240    RESETs area. CONFIG_SCST_DEBUG_TM compilation option added (see README).
241
242  - Updated to work on kernels version 2.6.18+.
243
244  - FILEIO_ONLY added. If it's defined, there is no need to patch the
245    kernel, but pass-through modules (scst_disk, scst_tape, etc.) are not
246    supported).
247
248  - Fixed problems with big amount of LUNs (500+).
249
250  - Timer-based retries for targets after SCST_TGT_RES_QUEUE_FULL status
251    implemented.
252
253  - More intelligent IO flow control implemented.
254
255  - Fixed broken CDROM FILEIO. Before that it always reported 
256    "No medium found"
257
258  - Data synchronization fixes and improvements in FILEIO. Added FUA
259    support.
260
261  - Fixed READ(6)/WRITE(6) CDB decoding for block devices.
262    This bug prevented FreeBSD initiators from working.
263
264  - Implemented sgv_pool. It is mempool-like interface, which caches
265    built SG-vectors in order not to rebuild them again for every
266    subsequent command, so saves performance price of building
267    SG-vectors, including pages allocation, and of additional context
268    switches.
269
270  - For ABORTED commands xmit_response() now called. A target driver
271    should recognized such commands using new function
272    scst_cmd_aborted(). Also there are some other cleanups, improvements
273    and interfaces changes that affect target drivers and dev handlers.
274    You can find their full list by diff'ing scsi_tgt.h between versions
275    0.9.4 and 0.9.5.
276
277  - Function alloc_data_buf() added to struct scst_tgt_template as well
278    as data_buf_tgt_alloc added to struct scst_cmd to allow a target
279    driver implement own memory management handler (by Arne Redlich).
280
281  - Exported symbols are now not GPL'ed
282
283  - Various cleanups and a lot of bug fixes.
284
285 Summary of changes between versions 0.9.3 and 0.9.4
286 ---------------------------------------------------
287
288  - Support for 2.4 kernels has been removed
289
290  - Added on_free_cmd() callback for dev handlers
291
292  - Fixed BUG() on task aborts.
293
294  - Fixed WCE (Write Cache Enabled) handling in FILEIO (by Ming Zhang)
295
296  - Minor cleanups and bug fixes.
297
298 Summary of changes between versions 0.9.3-pre4 and 0.9.3
299 --------------------------------------------------------
300
301  - Fixed IO errors on initiators (return code 20008) under considerable
302    load, because of returned BUSY status. Now QUEUE FULL status returned
303    instead.
304
305  - Fixed "deadlock" on sessions creation.
306
307  - Fixed support for > 2TB storage device in FILEIO handler (by Ming Zhang)
308
309  - NULLIO added to FILEIO handler (by Ming Zhang)
310
311  - Commands serialization now per-(session, device), i.e. tgt_dev.
312
313  - Minor cleanups and bug fixes
314
315 Summary of changes between versions 0.9.3-pre2 and 0.9.3-pre4
316 -------------------------------------------------------------
317
318  - Sessions registration and unregistrations reimplemented. The
319    interface with target drivers changed (made much more simple, but
320    incompatible).
321
322  - Some kmalloc()'s converted to SLAB caches (by Nathaniel Clark)
323
324  - Too low timeouts for management operations in scst_disk were
325    increased
326
327  - Cleanups and bug fixes, including several race-based crashes
328
329 Summary of changes between versions 0.9.3-pre1 and 0.9.3-pre2
330 -------------------------------------------------------------
331
332  - Task management was considerably redone. Particularly, now the result
333    of ABORT TASK is returned to remote initiator immediately, except if
334    the result of the aborted command is already started to be sent.
335
336  - Per-session commands serialization implemented as part of "device
337    blocking" cleanup.
338
339  - UA generating after MODE SELECT and LOG SELECT implemented
340
341  - CONFIG_SCST_STRICT_SERIALIZING compile-time option added for those who need
342    the most robust task management and willing to pay some performance cost for
343    that (see README)
344
345  - IRQ spinlocks were replaced by BH ones, where appropriate.
346
347  - Ability to change ISO image on the fly in CDROM FILEIO module added
348
349  - Cleanups and bug fixes
350
351 Summary of changes between versions 0.9.2 and 0.9.3-pre1
352 --------------------------------------------------------
353
354  - Sophisticated per-initiator access and devices visibility management added
355    (different initiators now could see different set of devices with
356    different permissions)
357
358  - FILEIO dev handler was reimplemented in most areas, including:
359
360     * Management interface via /proc added
361
362     * Various defects using devices/files larger 2Gb were fixed. Thanks
363       to Mark Buechler.
364
365     * New CDROM FILEIO handler added.
366
367     * Now per-session threads created to improve concurrent performance.
368  
369     * New flags added that allow using virtual devices as read only,
370       with write through caching or in O_DIRECT mode.
371
372     * Task management support added.
373
374  - RAID controller (type 0xC) dev handler added.
375
376  - SCSI processor (type 3) dev handler added.
377
378  - Sessions unregistration contexts cleanup.
379  
380  - Dev handler's on_free_cmd() was dropped. Target driver's flag 
381    "thread_per_session" was dropped as well.
382  
383  - Internal locking partially redone.
384  
385  - A lot of stability/bug fixes, cleanups and performance improvements.
386
387 Summary of changes between versions 0.9.1 and 0.9.2
388 ---------------------------------------------------
389
390  - 2.6 support, developed and tested on 2.6.7.
391  
392  - FILEIO/BLKDEV virtual disk device handler added. See main README for
393    details.
394  
395  - /proc updates, "trace_log_level" entry added to change traced
396    events on the fly.
397    
398  - Some internal interfaces changed, see the documentation.
399  
400  - Device handlers' source code layout changed, all device handlers
401    live in one subdirectory now.
402  
403  - Crash on memory allocation failure while building SG data vector
404    fixed.
405
406  - Other minor fixes
407
408 Summary of changes between versions 0.9.0a and 0.9.1
409 ----------------------------------------------------
410
411  - scst_debug.* files are also installed together with scsi_tgt.h
412    (required by QLA2x00 target and could be useful for other target
413    drivers)
414  
415  - CDB length for unknown commands (e.g. vendor ones) is now determined
416    from CDB
417    
418  - Race with the commands serialization on one drive fixed
419    
420  - Cleanup
421