Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Jul 2008 14:32:44 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/ufs/ffs ffs_balloc.c
Message-ID:  <200807231432.m6NEWoTo000748@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
kib         2008-07-23 14:32:44 UTC

  FreeBSD src repository

  Modified files:
    sys/ufs/ffs          ffs_balloc.c 
  Log:
  SVN rev 180758 on 2008-07-23 14:32:44Z by kib
  
  The ffs_balloc_ufs{1,2} functions call bdwrite() while having several
  vnode buffers locked at once. In particular, there are indirect buffers
  among locked ones. The bdwrite() may start the flushing to keep dirty
  buffer list at the bounds. If any buffer on the dirty list requires
  translation from logical to physical block number, code may ends up
  trying to lock an indirect buffer already locked in ffs_balloc_ufsX.
  
  Prevent the bdflush() activity when several buffers are locked at once
  by setting the TDP_INBDFUSH for the problematic code blocks.
  
  Reported and tested by: pho, Josef Buchsteiner at Juniper
  In collaboration with:  kan
  MFC after:      1 month
  
  Revision  Changes    Path
  1.54      +22 -2     src/sys/ufs/ffs/ffs_balloc.c



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