Mike Christie
bf54d251e5
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 11:03:17 -08:00
..
2010-08-11 08:59:02 -07:00
2010-07-28 09:05:27 -05:00
2010-07-12 18:03:50 +02:00
2010-08-11 08:59:00 -07:00
2010-08-17 18:07:43 -07:00
2010-02-18 17:24:21 +00:00
2010-09-02 17:13:09 -03:00
2010-08-12 10:01:59 -07:00
2010-08-11 08:59:01 -07:00
2010-08-04 15:15:15 -07:00
2010-07-28 09:05:43 -05:00
2009-06-12 18:01:46 +02:00
2010-08-04 15:31:02 -07:00
2010-08-11 08:59:01 -07:00
2010-08-06 12:26:39 -05:00
2010-08-06 11:00:26 -05:00
2010-11-22 11:03:15 -08:00
2010-08-14 12:34:34 -07:00
2010-05-17 05:27:04 +02:00
2010-08-04 15:31:02 -07:00
2010-07-28 09:07:49 -05:00
2010-09-02 17:11:55 -03:00
2010-08-03 09:04:14 +02:00
2010-08-06 12:06:08 -05:00
2010-09-05 15:22:55 -03:00
2010-11-22 11:03:16 -08:00
2010-09-02 17:23:20 -03:00
2008-01-11 18:22:30 -06:00
2010-05-24 08:01:10 -07:00
2010-04-11 09:23:25 -05:00
2010-05-24 08:01:10 -07:00
2009-12-04 12:00:51 -06:00
2010-05-24 08:01:10 -07:00
2010-04-11 09:23:25 -05:00
2010-08-11 08:59:21 -07:00
2010-03-30 22:02:32 +09:00
2010-05-26 19:51:08 +02:00
2010-05-26 19:51:07 +02:00
2010-05-26 19:51:08 +02:00
2010-05-26 19:51:07 +02:00
2010-05-26 19:51:09 +02:00
2010-06-16 18:05:05 +02:00
2010-03-30 22:02:32 +09:00
2010-08-07 18:15:46 +02:00
2010-03-30 22:02:32 +09:00
2008-02-06 10:41:01 -08:00
2010-03-30 22:02:32 +09:00
2009-03-26 21:15:29 +01:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2008-04-07 12:15:44 -05:00
2010-03-30 22:02:32 +09:00
2010-08-11 08:59:01 -07:00
2010-09-02 17:15:31 -03:00
2010-08-11 08:59:00 -07:00
2009-12-04 23:41:47 +01:00
2010-07-28 09:05:43 -05:00
2008-05-08 10:46:56 -07:00
2007-11-25 12:19:26 +02:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-01-18 10:48:10 -06:00
2008-08-29 02:13:10 -07:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-01-18 10:48:14 -06:00
2010-08-11 08:59:00 -07:00
2010-08-11 08:59:00 -07:00
2010-01-18 10:48:16 -06:00
2010-03-30 22:02:32 +09:00
2010-01-18 10:48:16 -06:00
2010-11-22 11:03:16 -08:00
2010-01-18 10:48:16 -06:00
2010-05-26 19:51:08 +02:00
2010-05-26 19:51:08 +02:00
2010-07-28 09:07:50 -05:00
2010-07-27 12:02:00 -05:00
2010-09-02 17:14:44 -03:00
2010-07-27 12:01:15 -05:00
2010-07-27 12:01:01 -05:00
2009-10-02 09:45:22 -05:00
2010-01-18 10:48:08 -06:00
2010-03-30 22:02:32 +09:00
2008-12-29 11:24:12 -06:00
2010-08-11 08:59:00 -07:00
2008-12-29 11:24:12 -06:00
2010-07-28 09:05:40 -05:00
2010-07-27 12:03:55 -05:00
2009-04-07 08:31:11 -07:00
2008-08-23 12:14:12 -07:00
2010-08-06 10:45:07 -05:00
2010-05-25 10:04:10 -05:00
2010-04-11 14:04:05 -05:00
2010-03-30 22:02:32 +09:00
2010-08-14 12:34:34 -07:00
2010-03-30 22:02:32 +09:00
2010-04-11 14:03:59 -05:00
2010-05-02 11:16:50 -04:00
2010-03-30 22:02:32 +09:00
2010-06-02 17:50:38 +10:00
2010-03-30 22:02:32 +09:00
2008-12-28 20:00:03 +01:00
2010-08-06 10:45:07 -05:00
2010-05-17 05:27:04 +02:00
2010-05-17 05:27:04 +02:00
2010-06-02 17:50:38 +10:00
2010-03-30 22:02:32 +09:00
2010-05-26 19:51:07 +02:00
2010-05-02 15:55:03 -04:00
2010-03-30 22:02:32 +09:00
2007-10-12 14:51:18 -04:00
2008-01-30 13:14:02 -06:00
2010-08-11 08:59:00 -07:00
2007-10-12 14:55:07 -04:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2008-07-27 10:31:49 -04:00
2010-03-30 22:02:32 +09:00
2008-08-23 12:14:12 -07:00
2010-08-11 08:58:59 -07:00
2009-03-12 12:58:10 -05:00
2007-11-25 12:19:26 +02:00
2010-07-28 09:05:26 -05:00
2010-11-22 11:03:16 -08:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-04-05 15:37:12 -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
2010-08-06 09:25:50 -06:00
2010-08-06 09:25:50 -06:00
2010-03-03 21:17:06 +05:30
2010-07-27 12:03:55 -05:00
2010-03-30 22:02:32 +09:00
2010-08-14 12:34:34 -07:00
2009-12-04 12:01:33 -06:00
2009-12-04 12:01:30 -06:00
2010-11-22 11:03:17 -08:00
2010-03-30 22:02:32 +09:00
2010-07-28 09:07:50 -05:00
2010-08-06 09:17:02 -07:00
2010-03-30 22:02:32 +09:00
2010-02-08 17:15:19 -06:00
2010-07-28 09:07:50 -05:00
2009-11-18 08:37:40 -08:00
2010-11-22 11:03:16 -08:00
2010-03-30 22:02:32 +09:00
2010-08-11 00:55:42 -04:00
2008-07-27 10:31:49 -04:00
2010-04-30 12:52:08 -05:00
2010-08-11 08:59:02 -07:00
2010-07-28 09:06:06 -05:00
2010-02-08 17:15:19 -06:00
2010-03-30 22:02:32 +09:00
2009-01-02 10:22:16 -06:00
2009-04-21 19:40:00 -07:00
2010-09-16 11:48:48 -04:00
2010-03-30 22:02:32 +09:00
2009-11-26 08:54:46 -06:00
2010-11-22 11:03:15 -08:00
2010-08-07 18:26:08 +02:00
2010-03-30 22:02:32 +09:00
2010-08-11 08:59:02 -07:00
2010-03-07 17:04:50 -08:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-08-07 18:25:34 +02:00
2008-02-07 18:02:44 -06:00
2008-04-07 12:15:39 -05:00
2010-05-27 09:12:56 -07:00
2009-12-10 08:54:13 -06:00
2010-03-30 22:02:32 +09:00
2010-08-07 18:17:56 +02:00
2010-08-07 18:17:56 +02:00
2010-08-07 18:17:56 +02:00
2010-03-30 22:02:32 +09:00
2010-08-06 09:25:50 -06:00
2008-12-29 11:24:12 -06:00
2007-11-25 12:19:26 +02:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2008-04-28 17:31:13 -07:00
2010-03-30 22:02:32 +09:00
2009-12-04 12:00:49 -06:00
2010-05-02 15:54:15 -04:00
2010-05-02 15:54:15 -04:00
2010-04-11 13:37:33 -05:00
2009-06-25 11:37:23 -05:00
2010-05-17 21:37:41 +02:00