Date: Mon, 8 Dec 2008 11:04:17 +0000 (UTC) From: Konstantin Belousov <kib@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/ufs/ufs ufs_quota.c Message-ID: <200812081104.mB8B4Nra028819@repoman.freebsd.org>
index | next in thread | raw e-mail
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 <frode nordahl net>
MFC after: 3 days
Revision Changes Path
1.100 +13 -1 src/sys/ufs/ufs/ufs_quota.c
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812081104.mB8B4Nra028819>
