> -----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

Reply via email to