Commit 44d90463 authored by Mike Anderson's avatar Mike Anderson Committed by James Bottomley

[PATCH] reorder call in scsi_remove_host

This patch against scsi-misc-2.6 reorders a call to scsi_forget_host in
the scsi_remove_host function. This removes the error message
"Synchronizing SCSI cache..." on rmmod of a scsi host driver module as
shown in example output 1 and 2 below.

I had previous created a much more complicated patch to work around this
problem. In response Christoph mention a simpler solution (pointer to
thread below) which is this patch.

http://marc.theaimsgroup.com/?l=linux-scsi&m=108720042210331&w=2

Example output.

1.) Before patch.

elm:~# scsi1 : scsi_debug, version 1.73 [20040518], dev_size_mb=8,
opts=0x0
  Vendor: Linux     Model: scsi_debug        Rev: 0004
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdc: 16384 512-byte hdwr sectors (8 MB)
SCSI device sdc: drive cache: write back
 sdc: unknown partition table
Attached scsi disk sdc at scsi1, channel 0, id 0, lun 0
Attached scsi generic sg4 at scsi1, channel 0, id 0, lun 0,  type 0
Synchronizing SCSI cache for disk sdc: <4>FAILED
  status = 0, message = 00, host = 1, driver = 00

2.) After patch.

elm:~# scsi1 : scsi_debug, version 1.73 [20040518], dev_size_mb=8, opts=0x0
  Vendor: Linux     Model: scsi_debug        Rev: 0004
  Type:   Direct-Access                      ANSI SCSI revision: 03
SCSI device sdc: 16384 512-byte hdwr sectors (8 MB)
SCSI device sdc: drive cache: write back
 sdc: unknown partition table
Attached scsi disk sdc at scsi1, channel 0, id 0, lun 0
Attached scsi generic sg4 at scsi1, channel 0, id 0, lun 0,  type 0
Synchronizing SCSI cache for disk sdc:
Signed-off-by: default avatarMike Anderson <andmike@us.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent dd424b0a
...@@ -75,9 +75,9 @@ void scsi_host_cancel(struct Scsi_Host *shost, int recovery) ...@@ -75,9 +75,9 @@ void scsi_host_cancel(struct Scsi_Host *shost, int recovery)
**/ **/
void scsi_remove_host(struct Scsi_Host *shost) void scsi_remove_host(struct Scsi_Host *shost)
{ {
scsi_forget_host(shost);
scsi_host_cancel(shost, 0); scsi_host_cancel(shost, 0);
scsi_proc_host_rm(shost); scsi_proc_host_rm(shost);
scsi_forget_host(shost);
set_bit(SHOST_DEL, &shost->shost_state); set_bit(SHOST_DEL, &shost->shost_state);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment