Alfred Perlstein
3eebd44d0c
The change in r236456 (atomic_store_rel not locked) exposed a bug
...
in the ithread code where we could lose ithread interrupts if
intr_event_schedule_thread() is called while the ithread is already
running. Effectively memory writes could be ordered incorrectly
such that the unatomic write of 0 to ithd->it_need (in ithread_loop)
could be delayed until after it was set to be triggered again by
intr_event_schedule_thread().
This was particularly a big problem for CAM because CAM optimizes
scheduling of ithreads such that it only signals camisr() when it
queues to an empty queue. This means that additional completion
events would not unstick CAM and quickly lead to a complete lockup
of the CAM stack.
To fix this use atomics in all places where ithd->it_need is accessed.
Submitted by: delphij, mav
Obtained from: TrueOS, iXsystems
MFC After: 1 week
2013-07-04 05:53:05 +00:00
..
2012-08-21 18:13:09 +00:00
2013-05-01 22:42:42 +00:00
2012-08-15 15:42:57 +00:00
2012-09-25 19:16:28 +00:00
2012-07-22 13:41:45 +00:00
2013-05-01 14:59:16 +00:00
2013-04-17 11:42:40 +00:00
2011-03-06 22:59:30 +00:00
2013-04-03 22:24:36 +00:00
2013-06-08 13:30:13 +00:00
2013-06-30 19:08:06 +00:00
2013-06-17 09:49:07 +00:00
2013-06-28 15:55:30 +00:00
2013-03-04 11:09:56 +00:00
2013-03-04 12:20:48 +00:00
2012-12-22 13:33:28 +00:00
2012-10-06 19:50:23 +00:00
2011-09-16 13:58:51 +00:00
2012-03-10 18:56:16 +00:00
2013-06-25 18:44:15 +00:00
2012-10-22 17:50:54 +00:00
2013-07-01 03:27:14 +00:00
2011-11-07 06:44:47 +00:00
2013-04-16 22:09:08 +00:00
2013-03-13 06:42:01 +00:00
2013-06-16 09:30:35 +00:00
2013-06-06 06:17:20 +00:00
2013-03-02 00:53:12 +00:00
2011-11-07 06:44:47 +00:00
2011-12-01 07:19:13 +00:00
2013-04-19 15:19:29 +00:00
2012-10-22 17:50:54 +00:00
2013-06-15 10:08:34 +00:00
2011-05-31 15:11:43 +00:00
2013-07-04 05:53:05 +00:00
2013-05-19 04:10:34 +00:00
2013-06-15 06:45:17 +00:00
2012-05-26 20:03:47 +00:00
2013-02-08 07:29:07 +00:00
2012-10-22 17:50:54 +00:00
2012-10-22 17:50:54 +00:00
2013-06-25 20:23:08 +00:00
2011-11-07 06:44:47 +00:00
2011-09-16 13:58:51 +00:00
2013-02-04 09:35:48 +00:00
2013-05-24 02:18:37 +00:00
2013-02-02 14:19:50 +00:00
2012-08-22 20:01:57 +00:00
2013-06-25 20:23:08 +00:00
2012-08-16 02:35:44 +00:00
2013-03-27 11:34:27 +00:00
2012-03-28 20:58:30 +00:00
2013-05-22 16:32:18 +00:00
2013-05-19 23:30:24 +00:00
2013-04-14 20:03:48 +00:00
2012-11-14 10:33:12 +00:00
2013-03-14 23:20:18 +00:00
2012-05-30 16:06:38 +00:00
2012-10-26 16:01:08 +00:00
2013-03-07 02:53:29 +00:00
2013-06-25 18:44:15 +00:00
2013-06-25 20:23:08 +00:00
2012-03-27 15:07:43 +00:00
2013-03-09 02:32:23 +00:00
2013-03-09 02:32:23 +00:00
2013-04-05 20:24:51 +00:00
2012-12-09 04:54:22 +00:00
2013-06-25 20:23:08 +00:00
2013-06-28 21:04:15 +00:00
2013-03-01 18:49:14 +00:00
2013-03-04 11:09:56 +00:00
2012-05-26 20:03:47 +00:00
2013-03-21 14:06:27 +00:00
2013-03-12 06:58:49 +00:00
2013-03-25 09:43:50 +00:00
2013-06-13 09:33:22 +00:00
2012-01-05 19:00:36 +00:00
2012-08-10 18:19:57 +00:00
2012-10-22 17:50:54 +00:00
2012-10-22 17:50:54 +00:00
2013-06-28 21:00:08 +00:00
2011-03-01 13:28:27 +00:00
2011-11-21 01:26:10 +00:00
2011-09-16 13:58:51 +00:00
2011-07-17 23:05:24 +00:00
2012-10-26 16:01:08 +00:00
2013-04-15 17:21:02 +00:00
2012-04-17 14:54:00 +00:00
2012-03-13 20:27:48 +00:00
2011-01-06 22:09:37 +00:00
2013-02-05 20:08:33 +00:00
2013-06-01 11:42:47 +00:00
2013-06-27 20:21:54 +00:00
2012-12-20 00:34:54 +00:00
2011-01-09 14:34:56 +00:00
2013-07-01 02:48:27 +00:00
2012-07-11 18:50:50 +00:00
2012-06-22 07:06:40 +00:00
2012-06-25 05:41:16 +00:00
2012-01-23 16:31:46 +00:00
2012-09-04 23:16:55 +00:00
2012-04-12 17:43:59 +00:00
2011-11-15 20:11:03 +00:00
2013-06-25 18:44:15 +00:00
2013-03-04 16:07:55 +00:00
2012-12-05 08:04:20 +00:00
2011-02-09 19:08:21 +00:00
2012-03-19 00:36:32 +00:00
2013-03-19 14:13:12 +00:00
2011-11-07 06:44:47 +00:00
2013-05-12 04:05:01 +00:00
2011-10-16 14:16:46 +00:00
2011-11-07 15:43:11 +00:00
2012-05-31 17:27:05 +00:00
2011-11-19 14:10:16 +00:00
2013-05-16 18:13:10 +00:00
2012-01-26 16:35:09 +00:00
2013-03-18 17:23:58 +00:00
2012-12-19 20:08:06 +00:00
2011-11-16 19:06:55 +00:00
2012-12-28 06:52:53 +00:00
2013-03-23 15:11:53 +00:00
2013-03-18 17:23:58 +00:00
2013-02-17 21:37:32 +00:00
2013-03-09 02:32:23 +00:00
2012-09-14 21:28:56 +00:00
2013-06-28 03:51:20 +00:00
2013-06-03 17:41:11 +00:00
2013-05-23 21:07:26 +00:00
2013-06-29 04:35:04 +00:00
2013-05-01 22:42:42 +00:00
2012-11-13 12:52:31 +00:00
2013-04-08 19:58:32 +00:00
2011-08-16 20:07:47 +00:00
2013-06-08 13:30:13 +00:00
2013-06-08 13:27:57 +00:00
2013-06-08 13:30:13 +00:00
2011-09-16 13:58:51 +00:00
2011-09-16 13:58:51 +00:00
2013-03-09 02:32:23 +00:00
2012-02-06 18:15:46 +00:00
2012-01-02 12:12:10 +00:00
2011-06-26 18:26:20 +00:00
2013-03-21 21:39:15 +00:00
2011-01-04 10:59:38 +00:00
2012-10-25 09:05:21 +00:00
2013-03-02 00:53:12 +00:00
2011-02-25 10:11:01 +00:00
2013-03-02 21:11:30 +00:00
2012-12-05 08:04:20 +00:00
2013-03-29 14:10:40 +00:00
2013-04-07 15:26:09 +00:00
2013-05-03 21:11:57 +00:00
2013-04-07 15:26:09 +00:00
2013-06-19 03:08:01 +00:00
2013-05-08 14:13:14 +00:00
2013-05-09 16:05:51 +00:00
2013-07-02 07:36:04 +00:00
2013-02-06 15:18:46 +00:00
2013-06-08 13:27:57 +00:00
2013-06-28 03:51:20 +00:00
2013-03-20 17:57:00 +00:00
2013-05-31 00:43:41 +00:00
2013-05-31 00:43:41 +00:00
2013-02-21 19:02:50 +00:00
2013-03-30 15:09:04 +00:00
2013-01-14 05:41:40 +00:00
2013-06-29 05:05:57 +00:00
2013-04-01 09:59:38 +00:00
2013-06-10 15:22:27 +00:00
2013-03-23 08:59:34 +00:00
2013-06-03 17:36:43 +00:00
2013-05-11 11:17:44 +00:00
2013-05-31 16:15:22 +00:00
2012-11-22 10:36:10 +00:00