Commit Graph
122 Commits
Author SHA1 Message Date
Bart Van Assche 7a330f2e09 Should have been included in the previous commit (r1371).
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1372 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-30 10:59:40 +00:00
Bart Van Assche b371630185 Avoid dangling pointer dereferences by resetting ioctx->scmnd in srpt_on_free_cmd().
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1371 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-30 09:51:17 +00:00
Bart Van Assche 7cdcbc8c69 Cleanup:
- 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
2009-11-28 18:40:15 +00:00
Bart Van Assche 418e7fb3d6 - Split srpt_find_channel into two functions: srpt_find_channel() and
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
2009-11-28 17:20:22 +00:00
Bart Van Assche ec2e199060 Bug fixes (some introduced in the previous revision, some long-standing):
- 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
2009-11-28 16:36:53 +00:00
Bart Van Assche f50ce17866 Bug fixes:
- 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
2009-11-28 14:03:55 +00:00
Bart Van Assche e6f5aa8865 Changes:
- The message that sense data is truncated is now generated via the
  PRINT_WARNING() macro instead of TRACE_DBG().
- Cleaned up code for sense data truncation.
- Compiles again on RHEL and CentOS systems.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1363 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-27 17:52:47 +00:00
Bart Van Assche 1065e2d317 Log sense data truncation when debugging is enabled.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1362 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-27 12:10:59 +00:00
Bart Van Assche 10530125a5 Whitespace-only change.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1354 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-23 08:40:51 +00:00
Bart Van Assche 495257b44e - Added counter that keeps track of the number of work requests posted on
the per-channel queue pair. This counter is used to prevent that
  ib_post_send() triggers a queue overflow.
- Fixed error handling in srpt_xfer_data(): srpt_unmap_sg_to_ib_sge() is now
  called before returning an error code.
- Simplified implementation of the sysfs attribute login_info.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1353 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-22 18:42:35 +00:00
Bart Van Assche a57d10033f Added more comments.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1344 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-17 18:01:16 +00:00
Bart Van Assche 9d65e4fe05 Removed a BUILD_BUG_ON() statement that was too restrictive.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1343 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-17 18:00:23 +00:00
Bart Van Assche 9955ef7627 Since the expression "sizeof(*sense) + sizeof(*sense) % 4" did not make
sense, replaced this expression by "sizeof(*sense)" and a BUILD_BUG_ON()
statement that verifies that sizeof(*sense) is a multiple of four. Should
the first expression have been "roundup(sizeof(*sense), 4)" ?


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1336 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-15 13:14:40 +00:00
Bart Van Assche bcec50e065 - Small performance improvement: ib_dma_sync_for_device() and
ib_dma_sync_for_cpu() calls do now only synchronize the data areas used.
- Removed per-command mutex again because it's not a full solution with
  regard to avoiding races between module unloading / IB error handling and
  SCST's command handling.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1335 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-15 13:11:46 +00:00
Bart Van Assche 5c208ca261 - Fixed races between command abortion code and regular command processing
code.
- Fixed the bug that new commands could be queued for a channel that was
  being closed.
- Bug fix: ib_dma_unmap_sg() is now called by srpt_xmit_response() when
  aborting commands.
- Changed default value of the kernel module parameter 'thread' from zero
  to one because using thread=0 can cause the Linux and the OFED SRP
  initiator to lock up -- see also
  http://bugzilla.kernel.org/show_bug.cgi?id=14235 and
  https://bugs.openfabrics.org/show_bug.cgi?id=1745.
- Made disconnect logging more detailed -- added cm_id in output.
- Changed argument type of second argument of srpt_release_channel() from
  int to bool.
- Eliminated srpt_abort_scst_cmd's 'tell_initiator' argument because this
  argument always has the same value (i.e. true).
- Simplified abortion of commands in state SRPT_STATE_NEW. Simplified
  implementation of srpt_on_free_cmd().


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1332 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-11 18:44:05 +00:00
Bart Van Assche a6e1b94e5b - Changed default maximum control message size from 996 to 4096 bytes.
As a result, the maximum number of sg list elements that an initiator
  can pass in one message increased from 58 to 251.
- Added kernel module parameter srp_max_message_size, which allows to
  specify the maximum size of SRP control messages.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1328 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-07 11:56:51 +00:00
Bart Van Assche cdbd65daeb Removed trailing whitespace.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1313 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-03 07:46:39 +00:00
Bart Van Assche d5cd0c893a - Fixed uninitialized variable read that was introduced in r1307.
- Introduced new kernel module parameter srp_max_rdma_size. This parameter
  allows to configure the maximum size of SRP RDMA transfers.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1312 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-02 19:45:45 +00:00
Bart Van Assche b9f64a7c61 - Fixed a bug introduced in the previous commit.
- Added more debug tracing related to command abortion.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1308 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-01 20:11:30 +00:00
Bart Van Assche c9f49128bb Fixed the following issues found by Vladislav Bolkhovitin via source reading:
- Inserted tests such that ib_dma_unmap_sg() is never called with a NULL
  second argument.
- Fixed race conditions triggered by ioctx->state manipulations.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1307 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-11-01 17:01:08 +00:00
Bart Van Assche ec836491e4 Should have been included in the previous commit.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1303 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-10-29 19:42:53 +00:00
Bart Van Assche eb46362a7b Added more debug code.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1299 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-10-29 18:56:23 +00:00
Bart Van Assche debe7f1152 Added and commented out compiler flags that make it easier to locate the statement that triggered a kernel oops.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1298 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-10-29 18:42:53 +00:00
Bart Van Assche 773146af26 Added and commented out -DCONFIG_SCST_TRACING.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1270 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-10-25 09:39:55 +00:00
Bart Van Assche 87be4a7213 More #undef CONFIG_SCST_PROC fixes.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1269 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-10-25 09:39:27 +00:00
Bart Van Assche 942aef8387 Compiles now with CONFIG_SCST_PROC undefined.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1255 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-10-23 10:56:44 +00:00
Bart Van Assche 77af82d2c3 Compiles again on RHEL 5 / CentOS 5 with CONFIG_SCST_DEBUG enabled.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1176 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-10-04 08:31:04 +00:00
Bart Van Assche 994b61e39b Added more error injection code.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1154 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-26 15:51:58 +00:00
Bart Van Assche 916dee314f Another bug fix for aborting SCST commands: commands in state
SRPT_STATE_NEW are now aborted properly too. Until now aborting an
SCST command that had state SRPT_STATE_NEW triggered a sBUG_ON()
statement in scst_tgt_cmd_done().


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1153 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-26 12:56:20 +00:00
Bart Van Assche 267f3b1f79 Only report that a command already got aborted when SCSI management
debugging has been enabled.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1139 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-24 18:42:22 +00:00
Bart Van Assche 2a01729d4d Builds again when CONFIG_SCST_DEBUG has not been defined.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1129 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-23 06:50:49 +00:00
Bart Van Assche 18fcb11be3 Added error injection code: the kernel parameter processing_delay_in_us
allows to control by how much the srpt_completion() function (which runs
in interrupt context) will be delayed.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1128 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-22 19:18:45 +00:00
Bart Van Assche 9adc308a2a Since it is normal that the SCST core calls srpt_xmit_response() for
a command that has already been aborted, changed the message that
reports this from an error message to an informational message.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1123 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-21 18:43:15 +00:00
Bart Van Assche d9abf60c23 Fixed typo in an error message.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1119 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-19 19:01:30 +00:00
Bart Van Assche 1afa718390 Ported the OFED 1.5 commit http://www.openfabrics.org/git/?p=ofed_1_5/linux-2.6.git;a=commitdiff;h=ce223537aeb05c9e4c36eab2b509fb98a33ba359:
replaced dma_*map* calls by ib_dma_*map* calls. Added the conversion
of dma_sync_single_for_device() to ib_dma_sync_single_for_device().
This only changes the behavior of SRPT for those IB interfaces whose
driver implements the ib_dma_mapping_ops operations.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1118 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-19 18:22:22 +00:00
Bart Van Assche 9381444e7d Applied a modified version of OFED commit http://www.openfabrics.org/git/?p=ofed_1_5/linux-2.6.git;a=commitdiff;h=6b20b3fb9b51722f382d6bfe333ec5bb5c216e9f.
The OFED commit made a.o. ib_srpt.c compile on 2.6.30 and later kernels.
Although the SCST ib_srpt.c code already compiles on a 2.6.30 kernel, this
commit has been ported to SCST because the source code of the OFED
implementation is cleaner. This commit does not change any functionality
of SCST's SRPT.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1117 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-19 16:40:01 +00:00
Bart Van Assche f048bf9956 Changed a PRINT_ERROR() statement into a PRINT_INFO() statement because
this statement is triggered during the normal logout / relogin procedure.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1116 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-18 19:03:24 +00:00
Bart Van Assche 0a7c9e1f67 Potential fix for the following kernel bug report:
------------[ cut here ]------------
 ib_srpt: srpt_xmit_response: tag= 26 channel in bad state 2
 scst: ***ERROR***: Target driver ib_srpt xmit_response() returned fatal error
 ib_srpt: srpt_xmit_response: tag= 38 channel in bad state 2
 scst: ***ERROR***: Target driver ib_srpt xmit_response() returned fatal error
 ib_srpt: srpt_xmit_response: tag= 27 channel in bad state 2
<repeated many times>
 kernel BUG at /root/scst/scst/src/scst_targ.c:3089!
 invalid opcode: 0000 [1] SMP
 CPU 0
...
 RIP: 0010:[<ffffffffa04759f6>]  [<ffffffffa04759f6>] scst_tgt_cmd_done+0x26/0x30 [scst]
 RSP: 0018:ffff88039ad27b50  EFLAGS: 00010297
 RAX: 0000000000000200 RBX: ffff8803ad9c68f8 RCX: 0000000000000000
 RDX: 00000000ffffffff RSI: 0000000000000000 RDI: ffff8803ad9c68f8
 RBP: ffff88039ad27b50 R08: 0000000000000000 R09: 0000000000000000
 R10: ffff88039ad277c0 R11: ffff88041ad278cf R12: ffff8803c2972180
 R13: ffff88039ada0000 R14: 0000000000000001 R15: ffff8803fb00c2b0
 FS:  0000000000000000(0000) GS:ffffffff807dd000(0000) knlGS:0000000000000000
 CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
 CR2: 00007f9281e64000 CR3: 0000000000201000 CR4: 00000000000006e0
 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
 Process ib_cm/0 (pid: 8299, threadinfo ffff88039ad26000, task ffff88039ad40000)
 Stack:  ffff88039ad27b80 ffffffffa04c0c47 ffff88039a8db900 ffff8803c2972180
  ffff8803fb00c240 ffff8803fb00c284 ffff88039ad27bc0 ffffffffa04c0d93
  ffff88042a4959c0 ffff88042a9d7800 ffff88042544da00 ffff88042a9d7898
 Call Trace:
  [<ffffffffa04c0c47>] srpt_abort_scst_cmd+0xd7/0x160 [ib_srpt]
  [<ffffffffa04c0d93>] srpt_release_channel+0xc3/0x190 [ib_srpt]
  [<ffffffffa04c0e82>] srpt_find_and_release_channel+0x22/0x30 [ib_srpt]
  [<ffffffffa04c227d>] srpt_cm_handler+0x6d/0xbb8 [ib_srpt]
  [<ffffffff80247526>] ? try_to_wake_up+0x126/0x2f0
  [<ffffffff802476fd>] ? default_wake_function+0xd/0x10
  [<ffffffff80267106>] ?  autoremove_wake_function+0x16/0x40
  [<ffffffff8023c99a>] ? __wake_up_common+0x5a/0x90
  [<ffffffff8023dece>] ? __wake_up+0x4e/0x70
  [<ffffffff80263271>] ? __queue_work+0x41/0x50
  [<ffffffff8026331d>] ? queue_work_on+0x4d/0x60
  [<ffffffff8026344f>] ? queue_work+0x1f/0x30
  [<ffffffff8026350d>] ? queue_delayed_work+0x2d/0x40
  [<ffffffffa0373255>] ? wait_for_response+0xd5/0xe0 [ib_mad]
  [<ffffffffa04b4e07>] cm_process_work+0x27/0x130 [ib_cm]
  [<ffffffffa04b5cf1>] cm_drep_handler+0xf1/0x180 [ib_cm]
  [<ffffffffa04b7790>] ? cm_work_handler+0x0/0x1b8 [ib_cm]
  [<ffffffffa04b7895>] cm_work_handler+0x105/0x1b8 [ib_cm]
  [<ffffffffa04b7790>] ? cm_work_handler+0x0/0x1b8 [ib_cm]
  [<ffffffff802628c2>] run_workqueue+0xc2/0x1a0
  [<ffffffff80262bcf>] worker_thread+0xaf/0x130
  [<ffffffff802670f0>] ? autoremove_wake_function+0x0/0x40
  [<ffffffff80262b20>] ? worker_thread+0x0/0x130
  [<ffffffff80266cbe>] kthread+0x4e/0x90
  [<ffffffff80213c99>] child_rip+0xa/0x11
  [<ffffffff80266c70>] ? kthread+0x0/0x90
  [<ffffffff80213c8f>] ? child_rip+0x0/0x11
 Code: 00 00 00 00 00 55 48 89 e5 e8 a7 cc d9 df 83 7f 28 78 75 17 80 67 2d f7 c7 47 28 0d 00 00 00 ba 01 00 00 00 e8 8c fc ff ff c9 c3 <0f> 0b eb fe 66 0f 1f 44 00 00 55 48 89 e5 41 54 53 e8 74 cc d9
 RIP  [<ffffffffa04759f6>] scst_tgt_cmd_done+0x26/0x30 [scst]
  RSP <ffff88039ad27b50>
 ---[ end trace a7f20725e9471e16 ]---


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1115 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-18 18:58:55 +00:00
Bart Van Assche 4decd55808 - Removed blank lines from kernel log.
- When a session is being released, it is now logged why.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1090 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-13 19:13:31 +00:00
Bart Van Assche 9d78dc61b7 - Renamed PFX macro to LOG_PFX such that it is recognized by the
PRINT_INFO() and related macro's.
- Replaced printk(KERN_INFO PFX and printk(KERN_ERROR PFX by
  PRINT_INFO( and PRINT_ERROR( respectively.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1089 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-09-13 18:15:05 +00:00
Bart Van Assche 097f5151cb Refinements for SRPT command processing state management.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1059 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-16 13:27:01 +00:00
Bart Van Assche 1e1b800f8b - Changed the identification string displayed by the ibsrpdm tool from
"Mellanox OFED SRP target" to "SCST SRP target" to reflect that this
  version of the SRP target is distributed through the SCST project.
- Added kernel parameter use_port_guid_in_session_name that allows to
  use the original session naming scheme of the SRP target. This should
  make it again possible to connect to a multiport SRP target by masking
  out redundant paths on the target.
- Made sure that whenever a login is rejected that a kernel message is
  generated (printk()) such that this information ends up in
  /var/log/messages.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1055 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-15 13:48:12 +00:00
Bart Van Assche 6f191159e9 Added more comments.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1054 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-15 13:33:24 +00:00
Bart Van Assche e6bd69006a Changed terminology in comments and one printk() message such that it
matches the terminology used in the SRP spec.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1046 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-13 19:05:31 +00:00
Bart Van Assche 63b8d248ce Removed the one_guid_per_ioc kernel parameter again because it did not
solve the connectivity problem between WinOF and an SRP target
equipped with multiple IB ports.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1039 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-11 19:58:48 +00:00
Bart Van Assche 92ef2de4a5 Added a note about the size of struct ib_qp_attr.
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1038 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-11 19:24:30 +00:00
Bart Van Assche fb6bad5bd9 Should have been included in the previous commit (r1034).
git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1035 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-10 15:44:22 +00:00
Bart Van Assche 64f93b6add - Implemented kernel module parameter one_guid_per_ioc. Setting this
parameter to true should make it possible to connect from a WinOF
  initiator to an SRP target when there is more than one IB path
  between initiator and target.
- Renamed mellanox_ioc_guid into global_ioc_guid.


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1034 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-10 15:28:03 +00:00
Bart Van Assche 3d227b8f73 - Added consistency checking for the SRPT command state management
introduced in r1026.
- Removed WARN_ON() statements that could trigger a warning when nothing
  was wrong because these were reading uninitialized memory. These statements
  were introduced in r1026. The call stack of the warning logged in the
  kernel log is as follows:
  <IRQ>  [<ffffffffa057f578>] ? srpt_handle_new_iu+0x818/0xaf0 [ib_srpt]
  [<ffffffff80243f18>] warn_slowpath_common+0x78/0xd0
  [<ffffffff80243f7f>] warn_slowpath_null+0xf/0x20
  [<ffffffffa057f578>] srpt_handle_new_iu+0x818/0xaf0 [ib_srpt]
  [<ffffffffa057f9ab>] srpt_completion+0x15b/0x230 [ib_srpt]
  [<ffffffffa04351f2>] mlx4_ib_cq_comp+0x12/0x20 [mlx4_ib]
  [<ffffffffa01eb1aa>] mlx4_cq_completion+0x3a/0x80 [mlx4_core]
  [<ffffffffa01ec475>] mlx4_eq_int+0x2a5/0x2e0 [mlx4_core]
  [<ffffffffa01ec59a>] mlx4_msi_x_interrupt+0x6a/0x90 [mlx4_core]
  [<ffffffff8027c0aa>] handle_IRQ_event+0x3a/0xf0
  [<ffffffff8027dee1>] handle_edge_irq+0xc1/0x160
  [<ffffffff8020ec3f>] handle_irq+0x1f/0x30
  [<ffffffff8020e37a>] do_IRQ+0x6a/0xf0
  [<ffffffff8020c7d3>] ret_from_intr+0x0/0xa
  <EOI>  [<ffffffffa0012e52>] ? acpi_idle_enter_simple+0x159/0x187 [processor]
  [<ffffffffa0012e48>] ? acpi_idle_enter_simple+0x14f/0x187 [processor]
  [<ffffffff804323e5>] ? cpuidle_idle_call+0xa5/0x100
  [<ffffffff8020b0a2>] ? cpu_idle+0x62/0xd0
  [<ffffffff804be614>] ? rest_init+0x84/0x90
  [<ffffffff8067ecc5>] ? start_kernel+0x35a/0x415
  [<ffffffff8067e289>] ? x86_64_start_reservations+0x99/0xb9
  [<ffffffff8067e389>] ? x86_64_start_kernel+0xe0/0xf2


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1030 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-10 09:57:30 +00:00
Bart Van Assche bbad4dfcaa - Fixed memory leak in srpt_handle_tsk_mgmt() error path.
- Modified srpt_build_cmd_rsp() and srpt_build_tskmgmt_rsp() such that
  these two functions now return the number of bytes of the response PDU
  built.
- Converted a printk() statement to TRACE_DBG().


git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@1029 d57e44dd-8a1f-0410-8b47-8ef2f437770f
2009-08-08 15:02:19 +00:00