cvs commit: src/sys/ufs/ffs ffs_snapshot.c
tegge at FreeBSD.org
Sun Oct 9 13:00:18 PDT 2005
tegge 2005-10-09 20:00:17 UTC
FreeBSD src repository
Eliminate a deadlock that can occur during the cgaccount() processing due to
the cg map buffer being held when writing indirect blocks. The process ends up
in ffs_copyonwrite(), attempting to get snaplk while holding the cg map buffer
Another process might be in ffs_copyonwrite(), trying to allocate a new block
for a copy. It would hold snaplk while trying to get the cg map buffer lock.
Release the cg map buffer early and use the copy for most of the cgaccount
processing to avoid this deadlock.
Revision Changes Path
1.108 +2 -3 src/sys/ufs/ffs/ffs_snapshot.c
More information about the cvs-all