cvs commit: src/sys/ufs/ffs ffs_snapshot.c
Tor Egge
tegge at FreeBSD.org
Sun Oct 9 13:15:16 PDT 2005
tegge 2005-10-09 20:15:15 UTC
FreeBSD src repository
Modified files:
sys/ufs/ffs ffs_snapshot.c
Log:
Reduce probability for a deadlock that can occur when a snapshot inode is
updated by a process holding the snapshot lock. Another process updating a
different inode in the same inodeblock will do copy on write checks and lock in
the opposite direction.
The snapshot code force a copy on write of these blocks manually (cf. start of
expunge_ufs[12]) and these inode blocks are later put on snapblklist.
This partial fix is to 'drain' the relevant ffs_copyonwrite() operation after
installing new snapblklist. This is not a 100% solution since a failed block
allocation can cause implicit fsync() which might deadlock before the new
snapblklist has been installed.
Revision Changes Path
1.110 +11 -0 src/sys/ufs/ffs/ffs_snapshot.c
More information about the cvs-src
mailing list