Re: Prevent busy looping

From: Tejun Heo
Date: Wed Jun 11 2008 - 04:04:06 EST


Alan Cox wrote:
>> Elias's synthetic test case triggered infinite loop because it wasn't
>> a proper ->qc_defer(). ->qc_defer() should never defer commands when
>> the target is idle.
>
> Target or host ? We *do* defer commands in the case of an idle channel
> when dealing with certain simplex controllers that can only issue one
> command per host not one per cable (and in fact in the general case we
> can defer commands due to activity on the other drive on the cable).

The term was confusing. I used target to mean both device
(ATA_DEFER_LINK) and host (ATA_DEFER_PORT). Hmmm... in simplex case,
yeah, blocked counters need to be > 1. We'll need to increase blocked
counts after all. I'll test blocked counts of 2 w/ PMP and make sure it
doesn't incur unnecessary delays and post the patch.

Thanks.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/