Mike Christie
c4244895dd
Fix regressions in scsi_internal_device_block
...
commit 986fe6c7f5 upstream.
Deleting a SCSI device on a blocked fc_remote_port (before
fast_io_fail_tmo fires) results in a hanging thread:
STACK:
0 schedule+1108 [0x5cac48]
1 schedule_timeout+528 [0x5cb7fc]
2 wait_for_common+266 [0x5ca6be]
3 blk_execute_rq+160 [0x354054]
4 scsi_execute+324 [0x3b7ef4]
5 scsi_execute_req+162 [0x3b80ca]
6 sd_sync_cache+138 [0x3cf662]
7 sd_shutdown+138 [0x3cf91a]
8 sd_remove+112 [0x3cfe4c]
9 __device_release_driver+124 [0x3a08b8]
10 device_release_driver+60 [0x3a0a5c]
11 bus_remove_device+266 [0x39fa76]
12 device_del+340 [0x39d818]
13 __scsi_remove_device+204 [0x3bcc48]
14 scsi_remove_device+66 [0x3bcc8e]
15 sysfs_schedule_callback_work+50 [0x260d66]
16 worker_thread+622 [0x162326]
17 kthread+160 [0x1680b0]
18 kernel_thread_starter+6 [0x10aaea]
During the delete, the SCSI device is in moved to SDEV_CANCEL. When
the FC transport class later calls scsi_target_unblock, this has no
effect, since scsi_internal_device_unblock ignores SCSI devics in this
state.
It looks like all these are regressions caused by:
5c10e63c94
[SCSI] limit state transitions in scsi_internal_device_unblock
Fix by rejecting offline and cancel in the state transition.
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com >
[jejb: Original patch by Christof Schmitt, modified by Mike Christie]
Signed-off-by: James Bottomley <James.Bottomley@suse.de >
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de >
2010-11-22 10:47:38 -08:00
..
2010-08-02 10:20:50 -07:00
2010-08-13 13:20:23 -07:00
2009-04-07 08:31:11 -07:00
2009-04-07 08:31:11 -07:00
2010-03-15 08:49:32 -07:00
2009-10-02 14:01:55 -05:00
2009-11-11 12:21:06 -05:00
2009-10-02 14:01:39 -05:00
2009-10-02 14:01:39 -05:00
2010-01-28 15:01:22 -08:00
2009-06-12 18:01:46 +02:00
2010-01-28 15:01:42 -08:00
2009-08-22 17:52:08 -05:00
2010-08-13 13:20:24 -07:00
2010-01-28 15:01:40 -08:00
2010-11-22 10:47:38 -08:00
2010-01-28 15:01:24 -08:00
2010-05-26 14:29:20 -07:00
2010-03-15 08:49:36 -07:00
2010-04-01 15:58:15 -07:00
2009-06-12 10:02:03 -05:00
2009-08-22 17:52:22 -05:00
2010-07-05 11:11:21 -07:00
2009-09-21 15:14:55 +02:00
2009-06-21 11:12:17 -05:00
2008-01-11 18:22:30 -06:00
2009-05-15 12:23:32 -04:00
2009-03-13 15:46:42 -05:00
2009-05-15 12:24:59 -04:00
2009-05-15 12:24:59 -04:00
2008-05-02 10:18:22 -05:00
2009-04-07 08:31:11 -07:00
2009-04-03 10:17:31 -05:00
2009-04-03 10:17:31 -05:00
2009-04-03 10:17:17 -05:00
2009-04-03 10:17:17 -05:00
2009-04-22 20:39:06 +02:00
2009-04-03 09:25:23 -05:00
2008-10-16 16:52:06 +02:00
2008-04-27 12:19:55 -05:00
2009-06-15 21:30:27 -07:00
2008-02-06 10:41:01 -08:00
2009-07-08 10:30:03 -07:00
2009-03-26 21:15:29 +01:00
2009-04-07 08:31:11 -07:00
2009-04-07 08:31:11 -07:00
2008-04-07 12:15:44 -05:00
2009-03-24 16:38:25 -07:00
2009-08-22 17:52:22 -05:00
2009-08-22 17:51:50 -05:00
2008-04-07 12:15:40 -05:00
2009-10-31 12:11:38 -07:00
2008-05-08 10:46:56 -07:00
2007-11-25 12:19:26 +02:00
2008-12-29 11:24:12 -06:00
2009-05-11 09:50:54 +02:00
2008-12-29 11:24:14 -06:00
2008-08-29 02:13:10 -07:00
2008-01-11 18:22:35 -06:00
2008-12-29 11:24:12 -06:00
2008-04-27 12:19:55 -05:00
2007-11-25 12:19:26 +02:00
2009-06-09 10:31:46 -05:00
2008-10-09 08:56:13 +02:00
2010-11-22 10:47:38 -08:00
2008-10-09 08:56:13 +02:00
2009-01-02 12:16:18 -06:00
2009-12-14 09:44:44 -08:00
2009-10-02 09:45:22 -05:00
2009-10-02 09:45:22 -05:00
2008-12-29 11:24:12 -06:00
2008-07-27 10:31:49 -04:00
2008-12-29 11:24:12 -06:00
2009-04-07 08:31:11 -07:00
2008-12-29 11:24:12 -06:00
2010-01-06 15:03:11 -08:00
2009-11-06 11:09:27 -06:00
2009-04-07 08:31:11 -07:00
2008-08-23 12:14:12 -07:00
2009-10-02 14:01:39 -05:00
2008-12-29 11:24:22 -06:00
2008-04-27 12:33:04 -05:00
2009-10-02 09:50:33 -05:00
2009-04-07 08:31:11 -07:00
2009-06-21 10:52:39 -05:00
2010-05-12 14:57:16 -07:00
2009-09-12 09:35:34 -05:00
2009-07-08 10:30:03 -07:00
2008-12-29 11:24:19 -06:00
2008-12-28 20:00:03 +01:00
2009-10-02 09:50:33 -05:00
2009-04-07 08:31:11 -07:00
2009-06-12 18:01:45 +02:00
2008-06-05 09:23:44 -05:00
2009-03-24 16:38:25 -07:00
2008-04-07 12:19:07 -05:00
2009-06-15 10:09:30 -05:00
2007-10-12 14:51:18 -04:00
2008-01-30 13:14:02 -06:00
2008-12-29 11:24:12 -06:00
2007-10-12 14:55:07 -04:00
2009-05-23 15:44:09 -05:00
2008-07-27 10:31:49 -04:00
2009-04-07 08:31:11 -07:00
2008-08-23 12:14:12 -07:00
2009-03-12 12:58:10 -05:00
2009-03-12 12:58:10 -05:00
2007-11-25 12:19:26 +02:00
2009-11-06 11:09:28 -06:00
2009-09-26 10:17:19 -07:00
2008-07-27 10:31:49 -04:00
2009-06-16 14:15:46 +10:00
2010-03-15 08:49:44 -07:00
2009-05-20 17:21:13 -05:00
2008-12-29 11:24:12 -06:00
2008-01-30 13:14:02 -06:00
2009-04-03 09:25:23 -05:00
2008-08-29 02:14:46 -07:00
2009-01-02 10:22:16 -06:00
2010-05-12 14:57:16 -07:00
2010-01-28 15:01:21 -08:00
2010-05-12 14:57:17 -07:00
2010-04-26 07:41:30 -07:00
2009-12-14 09:44:44 -08:00
2010-11-22 10:47:38 -08:00
2008-10-23 11:42:17 -05:00
2009-09-15 09:50:47 -07:00
2009-03-31 01:14:44 +04:00
2008-04-19 19:10:33 -07:00
2009-11-26 09:43:39 -06:00
2010-11-22 10:47:38 -08:00
2008-07-02 15:06:25 -06:00
2009-05-11 09:50:55 +02:00
2008-07-27 10:31:49 -04:00
2007-10-12 14:46:58 -04:00
2010-04-26 07:41:29 -07:00
2010-01-28 15:01:17 -08:00
2009-08-22 17:52:01 -05:00
2009-06-21 10:52:46 -05:00
2009-01-02 10:22:16 -06:00
2009-04-21 19:40:00 -07:00
2009-10-02 09:46:52 -05:00
2008-01-11 18:22:40 -06:00
2009-11-26 08:54:46 -06:00
2010-11-22 10:47:38 -08:00
2009-10-02 09:47:04 -05:00
2010-04-01 15:58:02 -07:00
2009-10-11 11:12:33 -07:00
2009-01-02 10:58:41 -06:00
2009-01-02 10:22:16 -06:00
2009-04-07 08:31:11 -07:00
2009-04-27 09:32:30 -05:00
2008-10-20 08:52:41 -07:00
2009-10-02 09:45:46 -05:00
2008-02-07 18:02:44 -06:00
2008-04-07 12:15:39 -05:00
2010-01-06 15:03:13 -08:00
2010-01-06 15:03:13 -08:00
2009-09-05 08:50:41 -05:00
2009-07-08 10:30:03 -07:00
2008-04-16 09:28:11 -05:00
2007-11-25 12:19:26 +02:00
2008-10-23 11:42:19 -05:00
2008-08-31 01:23:17 -07:00
2008-12-29 11:24:12 -06:00
2007-11-25 12:19:26 +02:00
2008-12-29 11:24:14 -06:00
2009-05-11 09:50:54 +02:00
2008-04-28 17:31:13 -07:00
2008-04-07 12:19:01 -05:00
2007-10-19 23:22:55 +02:00
2008-12-29 11:24:12 -06:00
2009-06-25 11:37:23 -05:00
2007-11-29 09:24:52 -08:00