From owner-cvs-src-old@FreeBSD.ORG Mon Dec 8 11:04:24 2008 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 44E7A1065762 for ; Mon, 8 Dec 2008 11:04:24 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C265C8FC19 for ; Mon, 8 Dec 2008 11:04:23 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id mB8B4N0f028820 for ; Mon, 8 Dec 2008 11:04:23 GMT (envelope-from kib@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id mB8B4Nra028819 for cvs-src-old@freebsd.org; Mon, 8 Dec 2008 11:04:23 GMT (envelope-from kib@repoman.freebsd.org) Message-Id: <200812081104.mB8B4Nra028819@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to kib@repoman.freebsd.org using -f From: Konstantin Belousov Date: Mon, 8 Dec 2008 11:04:17 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/ufs/ufs ufs_quota.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Dec 2008 11:04:24 -0000 kib 2008-12-08 11:04:17 UTC FreeBSD src repository Modified files: sys/ufs/ufs ufs_quota.c Log: SVN rev 185761 on 2008-12-08 11:04:17Z by kib The dqrele() function syncs the dq, then acquires the dqh lock, and then does final drop of the the dq reference to put it onto the free list. There is a possibility that the dq would be found by another thread after sync and before the dqh lock is acquired. If that other thread drops the dq before we have taken the dqh lock, the dirty dq is put on the free list. Recheck the DQ_MOD after the dqh lock is relocked. Repeat dqsync() if the dq is dirty. This ensures that up to date dq is written in the quota file and fixes assertion in dqget(). Reported and tested by: Frode Nordahl MFC after: 3 days Revision Changes Path 1.100 +13 -1 src/sys/ufs/ufs/ufs_quota.c