]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Work around the deadlock that occours when ATA waits for the taskqueue
authorsos <sos@FreeBSD.org>
Wed, 1 Mar 2006 07:48:41 +0000 (07:48 +0000)
committersos <sos@FreeBSD.org>
Wed, 1 Mar 2006 07:48:41 +0000 (07:48 +0000)
commitba86c198c3e4129bf9862de4872af7713eff23c2
treec8ac1fd520f1843980e434db15a2fc17e89f49c1
parentff94cb013a7f2f8bdadb7fc31f312e71e7323204
Work around the deadlock that occours when ATA waits for the taskqueue
to call back for completition and something else is holding the taskqueue
waiting for ATA to return data.
This should clear up the "semaphore timeout !! DANGER Will Robinson !!"
in most situations, and log "taskqueue timeout - completing request directly"
instead, with a delayed "WARNING - freeing taskqueue zombie request" when
the taskqueue finally calls us back with the now stale request.
(It would have been nice if there was a way to remove a scheduled item from
 a taskqueue, but that is not currently implemented in the kernel).

A real fix for this is in the works but wont make it to 6.1RELEASE

definite MFC candidate.
sys/dev/ata/ata-all.h
sys/dev/ata/ata-queue.c