diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-06-18 12:46:49 -0400 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2007-07-09 18:07:44 -0400 |
commit | 79352e9f94cff4078f2ffefac4a41b7f14046fb6 (patch) | |
tree | 906bf0c06e5bab125a157b45791b29014d912931 /drivers | |
parent | cf47c7a26ca13b944900dce208890c5b6d5f3a14 (diff) |
firewire: fw-sbp2: let SCSI shutdown commands through before logout
This affects of course only the "soft shutdown" case, e.g. "modprobe -r
firewire-sbp2", while it doesn't matter for hot unplug.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Kristian Høgsberg <krh@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/firewire/fw-sbp2.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c index 49f7fd52ae87..846aad8666f5 100644 --- a/drivers/firewire/fw-sbp2.c +++ b/drivers/firewire/fw-sbp2.c | |||
@@ -520,17 +520,15 @@ static int sbp2_agent_reset(struct fw_unit *unit) | |||
520 | static void sbp2_reconnect(struct work_struct *work); | 520 | static void sbp2_reconnect(struct work_struct *work); |
521 | static struct scsi_host_template scsi_driver_template; | 521 | static struct scsi_host_template scsi_driver_template; |
522 | 522 | ||
523 | static void | 523 | static void release_sbp2_device(struct kref *kref) |
524 | release_sbp2_device(struct kref *kref) | ||
525 | { | 524 | { |
526 | struct sbp2_device *sd = container_of(kref, struct sbp2_device, kref); | 525 | struct sbp2_device *sd = container_of(kref, struct sbp2_device, kref); |
527 | struct Scsi_Host *host = | 526 | struct Scsi_Host *host = |
528 | container_of((void *)sd, struct Scsi_Host, hostdata[0]); | 527 | container_of((void *)sd, struct Scsi_Host, hostdata[0]); |
529 | 528 | ||
529 | scsi_remove_host(host); | ||
530 | sbp2_send_management_orb(sd->unit, sd->node_id, sd->generation, | 530 | sbp2_send_management_orb(sd->unit, sd->node_id, sd->generation, |
531 | SBP2_LOGOUT_REQUEST, sd->login_id, NULL); | 531 | SBP2_LOGOUT_REQUEST, sd->login_id, NULL); |
532 | |||
533 | scsi_remove_host(host); | ||
534 | fw_core_remove_address_handler(&sd->address_handler); | 532 | fw_core_remove_address_handler(&sd->address_handler); |
535 | fw_notify("removed sbp2 unit %s\n", sd->unit->device.bus_id); | 533 | fw_notify("removed sbp2 unit %s\n", sd->unit->device.bus_id); |
536 | put_device(&sd->unit->device); | 534 | put_device(&sd->unit->device); |