[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[dm-devel] I/O error during controller reboot



James,

I am having issue with scsi_io_completion routine. During device discovery, READ CAPACITY is failing with 02/04/01. It has been retried 5 times(with NEED_RETRY) but when retry gets exhausted ,scsi_io_completion simply ends the request without doing any delay retry as mentioned by you in below mail.  

scsi_io_completion routine checks for deferred sense and if not found, it sets error with -EIO, which eventually ends the request and doesnot allow for any more retries. I am seeing deffered error being checked only for REQ_TYPE_BLOCK_PC command type. Does it meant that command with cmd_type REQ_TYPE_BLOCK_PC having current error sense should not be retried in scsi_io_completion? If yes, then would it be better to retry in rdac device handler in that case. 


On Tues, 2009-03-10 at 15:47, James Bottomley wrote:
> > +		if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x01)
> > +			/* LUN Not Ready - Logical Unit Not 
> Ready and is in
> > +			 * the process of becoming ready
> > +			 * Just retry.
> > +			 */
> > +			return ADD_TO_MLQUEUE;
> > +		if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x04)
> > +			/* LUN Not Ready - Format In Progress
> > +			 *
> > +			 * Just retry.
> > +			 */
> > +			return ADD_TO_MLQUEUE;
> > +		if (sense_hdr->asc == 0x04  && sense_hdr->ascq == 0x07)
> > +			/* LUN Not Ready - Storage controller 
> cannot respond
> > +			 * immediately to a PRIN or PROUT command.
> > +			 * Just retry.
> > +			 */
> > +			return ADD_TO_MLQUEUE;
> 
> For all of these ... along with a few other not ready types, 
> we already
> do a delayed retry at the mid-layer (in scsi_io_completion).  Is there
> some problem that causes this to need to be handled here as well?

Thanks,
Vijay



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]