- Fixed: the SCSOLNT and UCSOLNT bits were ignored in received SRP requests,
and the SOLNT bit was not set in responses when required. This is required
by the SRP protocol specification.
- Fixed: SRP_RSP messages must be limited to the MAXIMUM TARGET TO INITIATOR
IU LENGTH field indicated in the SRP_LOGIN_RSP response instead of the
maximum message size supported by SRPT. This is also required by the SRP
protocol specification.
- Fixed: the STATUS field of response messages with status GOOD and that
contain sense data is no longer modified into CHECK CONDITION.
Internal changes (refactoring):
- Replaced the SCSI sense data handling data structures and code in SRPT by
those of the SCST core.
- Moved the code for building an error response from srpt_handle_cmd() and
srpt_handle_tsk_mgmt() to srpt_handle_new_iu().
- Removed the ioctx::data_len member.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1416 d57e44dd-8a1f-0410-8b47-8ef2f437770f
the minus character in the following expression:
tgt_dev->curr_sn = (typeof(tgt_dev->curr_sn)) -300
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1407 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Made sure that the SRPT source code compiles again on systems with a 2.6.29
or older kernel.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1382 d57e44dd-8a1f-0410-8b47-8ef2f437770f
descriptors are now reported by returning -EINVAL instead of setting the
third argument to true. Removed the third argument of this function.
- Added support for SRP_CMD requests with non-zero ADDITIONAL CDB LENGTH.
Note: support for these requests has not yet been tested -- I do not know
of any SRP initiator that generates such requests.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1380 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Changed default value of srp_max_message_size from 4096 to 2116. This
size corresponds to the size of an SRP_CMD request message containing
an indirect buffer list with 128 elements.
- A warning is now printed when an SRP_CMD request is received containing
more than one CDB -- this kind of messages is not yet supported.
- Switched back from multiple ib_dma_sync_single_for_cpu() calls to a
single call because the latter results in better performance.
- An error message is now printed if a corrupt SRP_CMD request has been
received. Before these were ignored silently.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1377 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Removed a spinlock that became superfluous.
- Fixed checkpatch and sparse complaints.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1370 d57e44dd-8a1f-0410-8b47-8ef2f437770f
srpt_release_channel_by_cmid().
- Removed tracing statements from srpt_unmap_sg_to_ib_sge() because this
function is now invoked while performing I/O.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1369 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Fixed system lockup triggered by "rmmod ib_srpt" while the SRP was writing
data. This lockup occurred because srpt_reset_ioctx() was not resetting
the pointers to the memory it freed, which indirectly triggered a kernel
oops in the IB interrupt handler.
- Fixed BUG() during "rmmod ib_srpt" triggered by calling scst_rx_cmd()
after scst_unregister_session(). This has been fixed by making sure that
the channel state is set to RDMA_CHANNEL_DISCONNECTING before calling
scst_unregister_session().
Performance improvements:
- Simplified cmd_wait_list manipulation code.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1368 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Fixed races on srpt_ioctx::state manipulation by declaring this variable
atomic.
- Fixed races on srpt_rdma_ch::state manipulation by declaring this variable
atomic.
- Fixed bug in srpt_abort_scst_cmd(): SRPT_STATE_DATA_IN was not yet handled.
- Fixed races on srpt_rdma_ch::cm_id destruction. Clearly documented which
object owns the cm_id at which time.
Performance improvements:
- Eliminated the list of active commands (active_scmnd_list) because this
list was a duplicated of a list already kept by the SCST core.
- Switched to double-checked locking in srpt_handle_new_iu(). This saves one
spin_lock_irqsave() and one spin_unlock_irqrestore() call in the common
case (that is, a live channel).
- Eliminated RDMA channel state tests in SCST command handling callback
functions -- removed the function srpt_abort_if_disconnecting().
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1367 d57e44dd-8a1f-0410-8b47-8ef2f437770f