TSS is currently implemented on the Linux-2.2.5 kernel. The following optimizations / improvements has been done on the basic TSS device driver.
These asynchronous writes soon ran into problems of deadlock. The possible reasons for this deadlock could be:
- Too many asynchronous I/Os consume all available kernel memory and no
kernel memory is available for SCSI cmd blocks, etc.
- A large number of asynchronous requests may be generated, which the lower
level SCSI device may not be able to handle.
- A large increase in the request queue size, which the underlying SCSI device may
not be able to handle.
- Some mysterious bug in TSS code itself!
A simple workaround for the problem has been to limit the number of asynchronous I/Os issued by the TSS device. A maximum of 8 asynchronous requests avoids this deadlock problem.