Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 9 Oct 2005 20:15:15 +0000 (UTC)
From:      Tor Egge <tegge@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/ufs/ffs ffs_snapshot.c
Message-ID:  <200510092015.j99KFG0J027537@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510092015.j99KFG0J027537>