Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 Aug 2003 00:29:34 -0700 (PDT)
From:      Jeff Roberson <jeff@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/ufs/ffs ffs_softdep.c
Message-ID:  <200308310729.h7V7TYfr015861@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
jeff        2003/08/31 00:29:34 PDT

  FreeBSD src repository

  Modified files:
    sys/ufs/ffs          ffs_softdep.c 
  Log:
   - Don't acquire the vnode interlock in drain_output().  Instead, require the
     caller to acquire it.  This permits drain_output() to be done atomically
     with other operations as well as reducing the number of lock operations.
   - Assert that the proper locks are held in drain_output().
   - Change getdirtybuf() to accept a mutex as an argument.  This mutex is used
     to protect the vnode's buf list and the BKGRDWAIT flag.  This lock is
     dropped when we successfully acquire a buffer and held on return
     otherwise.  These semantics reduce the number of cumbersome cases in
     calling code.
   - Pass the mtx from getdirtybuf() into interlocked_sleep() and allow this
     mutex to be used as the interlock argument to BUF_LOCK() in the LOCKBUF
     case of interlocked_sleep().
   - Change the return value of getdirtybuf() to be the resulting locked buffer
     or NULL otherwise.  This is for callers who pass in a list head that
     requires a lock.  It is necessary since the lock that protects the list
     head must be dropped in getdirtybuf() so that we don't have a lock order
     reversal with the buf queues lock in bremfree().
   - Adjust all callers of getdirtybuf() to match the new semantics.
   - Add a comment in indir_trunc() that points at unlocked access to a buf.
     This may also be one of the last instances of incore() in the tree.
  
  Revision  Changes    Path
  1.141     +77 -53    src/sys/ufs/ffs/ffs_softdep.c



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