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