Multiple USB umass devices fail on SCSI synchronize cache
James E. Flemer
jflemer at uvm.edu
Mon Sep 3 18:31:01 PDT 2007
There seems to be at least 11 open PRs on USB devices that fail on
FreeBSD due to SCSI synchronize cache failure[1]. I recently got
another device that also fails (Samsung Digimax L85 camera).
One generic approach[2] in the SCSI da driver works for devices (affects
both SCSI and USB) that fail on sync cache, and don't lock up. There
are devices though that lock up on sync cache, and need to avoid the
command all together[3].
There clearly needs to be a quirk for devices that lock up on
synchronize cache, unless we can safely recover from a lock-up with a
port reset and set the quirk automatically. The only quirk now in the
scsi_da quirk table, which might work, but is flawed for USB-IDE bridge
type devices (i.e. add a quirk for all bridged IDE devices, not the
broken bridge[3]). For devices that can recover, there should be an
automatic approach.
With the da patch from [2] applied and the sysctl enabled, plus my own
patch from [3], all relevant devices I have function as expected. I am
not sure if the patch in [2] is safe to enable by default though. Are
sync cache soft errors possible, where a retry is desired? Perhaps if
the patch in [2] only set the quirk after N sync cache failures (with N
tunable)?
I'm willing to re-work these patches and/or test other patches if it
will help get something committed. I'm only using 6-STABLE at the
moment, but may be able find somewhere to test on -CURRENT if that will
help to get something committed.
[1]
http://www.freebsd.org/cgi/query-pr-summary.cgi?multitext=Synchronize+cache+failed
[2]
http://lists.freebsd.org/pipermail/freebsd-current/2005-January/045779.html
[3] http://www.freebsd.org/cgi/query-pr.cgi?pr=usb/95173
keywords: Synchronize cache failed, SYNCHRONIZE_CACHE,
NO_SYNCHRONIZE_CACHE, netbsd PQUIRK_NOSYNCCACHE, DA_Q_NO_SYNC_CACHE
More information about the freebsd-usb
mailing list