On Tue, Apr 19, 2005 at 07:19:53PM +0200, Andreas Herrmann wrote: > Hi, > > I have question(s) regarding the fastfail operation of the SCSI stack. > > Performing multipath-tests with an IBM ESS I encountered problems. > During certain operations on an ESS (quiesce/resume and such) requests > on all paths fail temporarily with an data underrun (resid is set in > the FCP-response). In another situation abort sequences happen (see > FC-FS). > > In both cases it is not a path failure but the device (ESS) reports > error conditions temporarily (some seconds). > > Now on error on the first path the multipath layer initiates failover > to other available path(s) where requests will immediately fail. > > Using linux-2.4 and LVM such problems did not occure. There were > enough retries (5 for each path) to handle such situations. > > Now if the FASTFAIL flag is set the SCSI stack prevents retries for > failed SCSI commands. > > Problem is that the multipath layer cannot distinguish between path > and device failures (and won't do any retries for the failed request > on the same path anyway). > > How can an lld force the SCSI stack to retry a failed scsi-command > (without using DID_REQUEUE or DID_IMM_RETRY, which both do not change > the retry counter). > > What about a DID_FORCE_RETRY ? Or is there any outlook when there > will be a better interface between the SCSI stack and the multipath > layer to properly handle retries. We need a patch like Mike Christie had, this: http://marc.theaimsgroup.com/?l=linux-kernel&m=107961883914541&w=2 The scsi core should decode the sense data and pass up the result, then dm need not decode sense data, and we don't need sense data passed around via the block layer. scsi core could be changed to handle device specific decoding via sense tables that can be modified via sysfs, similar to devinfo code (well, devinfo still lacks a sysfs interface). For ESS, you probably also need the BLIST_RETRY_HWERROR that is in current 2.6.12 rc. -- Patrick Mansfield