From owner-cvs-src@FreeBSD.ORG Wed Mar 1 18:36:45 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 65FC416A423; Wed, 1 Mar 2006 18:36:45 +0000 (GMT) (envelope-from sos@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C31A443D53; Wed, 1 Mar 2006 18:36:43 +0000 (GMT) (envelope-from sos@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k21Iah28057287; Wed, 1 Mar 2006 18:36:43 GMT (envelope-from sos@repoman.freebsd.org) Received: (from sos@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k21Iah7e057286; Wed, 1 Mar 2006 18:36:43 GMT (envelope-from sos) Message-Id: <200603011836.k21Iah7e057286@repoman.freebsd.org> From: Søren Schmidt Date: Wed, 1 Mar 2006 18:36:43 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: RELENG_6 Cc: Subject: cvs commit: src/sys/dev/ata ata-all.c ata-all.h ata-chipset.c ata-queue.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Mar 2006 18:36:45 -0000 sos 2006-03-01 18:36:43 UTC FreeBSD src repository Modified files: (Branch: RELENG_6) sys/dev/ata ata-all.c ata-all.h ata-chipset.c ata-queue.c Log: MFC: Keep the parent device (in this case the channel) around in ata_request, so we dont panic device removal or failure. Clean up ata_fail_requests to prevent the queue munging to fail. Fix ata_reinit so it does things in the right order to prevent panic's. Lock the channel so master/slave setups wont trash during reinit. 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 the taskqueue finally calls us back with the now stale request. Approved by: re@ (scottl) Revision Changes Path 1.252.2.6 +31 -37 src/sys/dev/ata/ata-all.c 1.103.2.6 +7 -2 src/sys/dev/ata/ata-all.h 1.126.2.10 +0 -1 src/sys/dev/ata/ata-chipset.c 1.50.2.3 +41 -23 src/sys/dev/ata/ata-queue.c