- Fixed a rare lockup triggered by module removal while I/O was ongoing.
- Made sure that IB cable removal works fine.
- Exported srpt_service_guid via sysfs.
- Made sure that ib_srpt.c compiles fine with #undef CONFIG_SCST_PROC.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1575 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Fixed race condition between SCST session registration and IB channel event
handler in srpt_add_one(): at least in theory it was possible that
sdev->scst_tgt was accessed before being initialized properly.
- A kernel WARN_ON() is no longer triggered when a DREQ has been received after
SCST session deregistration started.
- Made sure that srpt_unmap_sg_to_ib_sge() does not call ib_dma_unmap_sg()
twice.
- Moved srpt_unmap_sg_to_ib_sge() call out of srpt_reset_ioctx() and
srpt_abort_scst_cmd() into the callers of these functions.
- Renamed some of the SRPT command states.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1505 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- The entire receive queue can be used again instead of only SRPT_RQ_SIZE - 1
elements (as in r1470).
- Added initiator-lockup-avoidance code to SRP_TSK_MGMT processing code too.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1473 d57e44dd-8a1f-0410-8b47-8ef2f437770f
completion queue processing is not aborted but that the remaining
completion queue entries are processed.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1446 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- With thread=1, the kernel thread was stopped before all I/O was stopped.
This could result in IB completions for responses sent to the initiator
not being processed, scst_tgt_cmd_done() not being called for certain
SCST commands and hence this race could cause "rmmod ib_srpt" to hang.
- ib_unregister_event_handler() was called after cancel_work_sync(). This
could cause srpt_event_handler() to queue new work, work that could be
executed after the data it operates on had been deallocated.
Change: simplified module unloading by calling ib_destroy_cm_id(sdev->cm_id)
before calling scst_unregister(). This made the variable "cleaning_up"
superfluous.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1441 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- srpt_release_channel_by_cmid(): the sdev->spinlock and scst_mgmt_lock are
no longer locked nested.
- srpt_find_channel(): does now return NULL when the channel is not found
(which never happens).
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1432 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Removed references to SCST core internal state names.
- Does no longer accept new connections while unloading.
- Module unloading should now really no longer cause a hang.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1429 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Decreased number of target-to-initiator request send buffers from two
to one such that a clear error message can be printed when the SRP
initiator did not respond to the SRP_CRED_REQ information unit.
- Bug fix: don't modify ch->last_response_req_lim when sending an SRP
information unit that contains the REQUEST LIMIT DELTA field failed.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1424 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Bug fix: don't set the REQUEST LIMIT DELTA field to SRPT_RQ_SIZE when
sending the first reponse to the initiator but to the proper value
(a small integer).
- An SRP_CRED_REQ information unit is now sent to the initiator if the
number of I/O contexts available for receiving dropped below two I/O
contexts (see also the SRP standard for more information). This change
is required to fix the SRP initiator lockup that happens when the
initiator sends requests faster than the target can process them. In
order to fix the lockup, it is also necessary to implement SRP_CRED_REQ
support in the SRP initiator in the vanilla Linux kernel and in OFED.
Neither kernel version 2.6.32 nor OFED 1.5 nor any previous
version of these components supports SRP_CRED_REQ information units.
See also http://bugzilla.kernel.org/show_bug.cgi?id=14235 for more
information about the initiator lockup.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1423 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- Convert sense data to/from fixed format / descriptor format before
sending back a response.
- Print an error message to the kernel log when an unsupported IB event
has been received.
- Return the SCSI status BUSY instead of CHECK CONDITION when allocating
an SCST command failed (until r1409, the SCSI status in the SRP_RSP
information unit was set to TASK SET FULL in this case).
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1419 d57e44dd-8a1f-0410-8b47-8ef2f437770f
- 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
- 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