-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathChangeLog
More file actions
461 lines (278 loc) · 14.7 KB
/
ChangeLog
File metadata and controls
461 lines (278 loc) · 14.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
Summary of changes between versions 2.1.0 and 2.1.1
---------------------------------------------------
- Update to kernels up to 3.1
- 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 INQUERY 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 lenght 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 changable 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 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.
- 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