diff options
author | Dan Williams <[email protected]> | 2012-08-28 22:12:10 -0700 |
---|---|---|
committer | James Bottomley <[email protected]> | 2012-09-24 12:17:49 +0400 |
commit | bc3f02a795d3b4faa99d37390174be2a75d091bd (patch) | |
tree | b1a5b23444144338e4c1937029f55940f82c638d /tools/perf/util/trace-event-scripting.c | |
parent | 225c56960fcafeccc2b6304f96cd3f0dbf42a16a (diff) |
[SCSI] scsi_remove_target: fix softlockup regression on hot remove
John reports:
BUG: soft lockup - CPU#2 stuck for 23s! [kworker/u:8:2202]
[..]
Call Trace:
[<ffffffff8141782a>] scsi_remove_target+0xda/0x1f0
[<ffffffff81421de5>] sas_rphy_remove+0x55/0x60
[<ffffffff81421e01>] sas_rphy_delete+0x11/0x20
[<ffffffff81421e35>] sas_port_delete+0x25/0x160
[<ffffffff814549a3>] mptsas_del_end_device+0x183/0x270
...introduced by commit 3b661a9 "[SCSI] fix hot unplug vs async scan race".
Don't restart lookup of more stargets in the multi-target case, just
arrange to traverse the list once, on the assumption that new targets
are always added at the end. There is no guarantee that the target will
change state in scsi_target_reap() so we can end up spinning if we
restart.
Cc: <[email protected]>
Acked-by: Jack Wang <[email protected]>
LKML-Reference: <CAEhu1-6wq1YsNiscGMwP4ud0Q+MrViRzv=kcWCQSBNc8c68N5Q@mail.gmail.com>
Reported-by: John Drescher <[email protected]>
Tested-by: John Drescher <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
Signed-off-by: James Bottomley <[email protected]>
Diffstat (limited to 'tools/perf/util/trace-event-scripting.c')
0 files changed, 0 insertions, 0 deletions