From owner-cvs-src@FreeBSD.ORG Wed Feb 9 11:44:15 2005 Return-Path: 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 8085016A4CE; Wed, 9 Feb 2005 11:44:15 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 56AC243D1D; Wed, 9 Feb 2005 11:44:15 +0000 (GMT) (envelope-from scottl@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 j19BiFFe073111; Wed, 9 Feb 2005 11:44:15 GMT (envelope-from scottl@repoman.freebsd.org) Received: (from scottl@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j19BiF4l073110; Wed, 9 Feb 2005 11:44:15 GMT (envelope-from scottl) Message-Id: <200502091144.j19BiF4l073110@repoman.freebsd.org> From: Scott Long Date: Wed, 9 Feb 2005 11:44:15 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/cam cam_xpt.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 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, 09 Feb 2005 11:44:15 -0000 scottl 2005-02-09 11:44:15 UTC FreeBSD src repository Modified files: sys/cam cam_xpt.c Log: Provide locking for the ccb_bioq. This allows xpt_done() to be called without Giant held. In camisr(), move the ccb_bioq elements to a temporary local list and then process the elements off of that list. This enables the list to be processed by only taking the ccb_bioq_lock once and only for a very short time. ccb_bioq_lock is a leaf mutex, so it's fine to call xpt_done() with other locks held. This is just a very minor step in the work to lock CAM, but it allows us to avoid some messy locking/unlock dances in certain drivers. Revision Changes Path 1.149 +22 -5 src/sys/cam/cam_xpt.c