> -----Original Message----- > From: [EMAIL PROTECTED] [mailto:linux-scsi- > [EMAIL PROTECTED] On Behalf Of Edward Goggin > Sent: Friday, February 02, 2007 5:34 PM > To: James Bottomley > Cc: linux-scsi@vger.kernel.org; Moore, Eric > I think I see your argument ... retries for BUSY and all other scsi/host > status's are limited by the code in scsi_softirq_done which filters the > disposition returned by scsi_decide_disposition, so no status will yield > an indefinite retry. > > Not clear if that's soon enough for RDAC/MPP. For the VMware case, it > appears to allow an additional 30 seconds (beyond what DID_BUSY_BUSY > would allow) for a retry. [Qi, Yanling] The following code in the scsi_lib.c will be enough for RDAC/MPP. BTW, why do we do "wait_for = (cmd->allowed + 1) * cmd->timeout_per_command". With a sd request, the wait_for will be 180 seconds. (SD_MAX_RETRIES=5 and SD_TIMEOUT=30 * HZ).
static void scsi_softirq_done(struct request *rq) { struct scsi_cmnd *cmd = rq->completion_data; unsigned long wait_for = (cmd->allowed + 1) * cmd->timeout_per_command; int disposition; INIT_LIST_HEAD(&cmd->eh_entry); disposition = scsi_decide_disposition(cmd); if (disposition != SUCCESS && time_before(cmd->jiffies_at_alloc + wait_for, jiffies)) { sdev_printk(KERN_ERR, cmd->device, "timing out command, waited %lus\n", wait_for/HZ); disposition = SUCCESS; } Thanks, Yanling - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html