Skip to contentSkip to conversation

BUG: SCSI SYNCHRONIZE_CACHE on driver unload

DISCUSSION Mark Lord 2 participants 3 messages Aug 5, 2004 SCSI

lore
Share & tools
lore

Mark Lord

author
#0 lore raw

On module removal of a SCSI Low-Level Driver (LLD), the mid-layer tries to do a SYNCHRONIZE_CACHE command to each device on each host of that driver.

But the command is issued *after* setting SHOST_CANCEL, which means that scsi_dispatch_cmd() will *always* fail the command inline, without passing to the LLD.

This bug shows up only for hosts/drives which support a write-back caching scheme. For the more common write-thru scheme, the SYNCHRONIZE_CACHE command is never issued, so the bug never manifests.

Cheers

Signature · 2 lines
Mark Lord
(hdparm keeper & the original "Linux IDE Guy")
#1 lore raw

On Thu, 05 Aug 2004 19:02:18 -0400 Mark Lord wrote:

| On module removal of a SCSI Low-Level Driver (LLD),
| the mid-layer tries to do a SYNCHRONIZE_CACHE
| command to each device on each host of that driver.
| 
| But the command is issued *after* setting SHOST_CANCEL,
| which means that scsi_dispatch_cmd() will *always*
| fail the command inline, without passing to the LLD.
| 
| This bug shows up only for hosts/drives which support
| a write-back caching scheme.  For the more common
| write-thru scheme, the SYNCHRONIZE_CACHE command is
| never issued, so the bug never manifests.

Like this, when I unmount a zip drive (?):

Synchronizing SCSI cache for disk sde: <4>FAILED
status = 0, message = 00, host = 1, driver = 00

--
~Randy

author
#2 lore raw

Yup. That's the exact bug.

Signature · 2 lines
Mark Lord
(hdparm keeper & the original "Linux IDE Guy")