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-all mailing list