- 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