diff options
| -rw-r--r-- | drivers/ieee1394/sbp2.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c index c2c776fbda01..8963dd484eb9 100644 --- a/drivers/ieee1394/sbp2.c +++ b/drivers/ieee1394/sbp2.c | |||
| @@ -643,9 +643,15 @@ static int sbp2_remove(struct device *dev) | |||
| 643 | if (!scsi_id) | 643 | if (!scsi_id) |
| 644 | return 0; | 644 | return 0; |
| 645 | 645 | ||
| 646 | /* Trigger shutdown functions in scsi's highlevel. */ | 646 | if (scsi_id->scsi_host) { |
| 647 | if (scsi_id->scsi_host) | 647 | /* Get rid of enqueued commands if there is no chance to |
| 648 | * send them. */ | ||
| 649 | if (!sbp2util_node_is_available(scsi_id)) | ||
| 650 | sbp2scsi_complete_all_commands(scsi_id, DID_NO_CONNECT); | ||
| 651 | /* scsi_remove_device() will trigger shutdown functions of SCSI | ||
| 652 | * highlevel drivers which would deadlock if blocked. */ | ||
| 648 | scsi_unblock_requests(scsi_id->scsi_host); | 653 | scsi_unblock_requests(scsi_id->scsi_host); |
| 654 | } | ||
| 649 | sdev = scsi_id->sdev; | 655 | sdev = scsi_id->sdev; |
| 650 | if (sdev) { | 656 | if (sdev) { |
| 651 | scsi_id->sdev = NULL; | 657 | scsi_id->sdev = NULL; |
