aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2007-06-18 12:46:49 -0400
committerStefan Richter <stefanr@s5r6.in-berlin.de>2007-07-09 18:07:44 -0400
commit79352e9f94cff4078f2ffefac4a41b7f14046fb6 (patch)
tree906bf0c06e5bab125a157b45791b29014d912931 /drivers/firewire
parentcf47c7a26ca13b944900dce208890c5b6d5f3a14 (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/firewire')
-rw-r--r--drivers/firewire/fw-sbp2.c6
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)
520static void sbp2_reconnect(struct work_struct *work); 520static void sbp2_reconnect(struct work_struct *work);
521static struct scsi_host_template scsi_driver_template; 521static struct scsi_host_template scsi_driver_template;
522 522
523static void 523static void release_sbp2_device(struct kref *kref)
524release_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);