Skip to contentSkip to conversation

reorder call in scsi_remove_host

PATCH New Mike Anderson 1 participant 1 message Aug 16, 2004 SCSI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 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:

-andmike
--
Michael Anderson
[email protected]

DESC
Reorder call to scsi_forget_host in scsi_remove_host function.

EDESC

 patched-scsi-misc-2.6-andmike/drivers/scsi/hosts.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)
drivers/scsi/hosts.c renamed from drivers/scsi/hosts.c~scsi_forget_host +1 -1
diff -puN drivers/scsi/hosts.c~scsi_forget_host drivers/scsi/hosts.c
@@ -75,9 +75,9 @@ void scsi_host_cancel(struct Scsi_Host *
  **/
 void scsi_remove_host(struct Scsi_Host *shost)
 {
+	scsi_forget_host(shost);
 	scsi_host_cancel(shost, 0);
 	scsi_proc_host_rm(shost);
-	scsi_forget_host(shost);
 
 	set_bit(SHOST_DEL, &shost->shost_state);