Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Sep 2003 20:42:39 +1000
From:      Tim Robbins <tjr@FreeBSD.ORG>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Syncer "giving up" on buffers
Message-ID:  <20030902104239.GA98936@dilbert.robbins.dropbear.id.au>
In-Reply-To: <20030902040856.U5166@gamplex.bde.org>
References:  <20030901165348.GA542@bsd> <20030902040856.U5166@gamplex.bde.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Sep 02, 2003 at 05:10:48AM +1000, Bruce Evans wrote:

> Apparently the bug fixed in ext2fs/fs.h revs 1.3, 1.4 and 1.6 (etc.)
> was restored in rev.1.14.  I think this is because B_LOCKED buffers
> were ignored in the sync() in boot() and flushed later when
> vfs_unmountall() calls ext2fs_unmount(), but they are now seen in the
> sync() so vfs_unmountall() is not called.
> 
> Rev.1.3 of ext2fs/fs.h (etc.) abuses B_LOCKED to do little more than
> make the sync() ignore ext2fs's private buffers (its complications are
> mainly to handle the resulting B_LOCKED buffers).  It wants to brelse()
> the buffers so that their BUF_REFCOUNT() is 0 and the sync() in boot()
> is happy to handle them.  In the original fix, I think the buffers
> could be B_DELWRI and then the sync() would fulush them, but setting
> B_DELWRI was wrong and was changed (in rev.1.4) to setting the private
> flag B_DIRTY instead.  Rev.1.13 esssentially removes the brelse() and
> adds a new complication (BUF_KERNPROC()) and keeps the old ones.  I
> think the BUF_KERNPROC() is less than useful -- without the brelse()'s,
> the buffers are completely private to the file system.

Is there any particular reason why ext2fs keeps these buffers locked instead
of reading/writing them in when it needs to, or storing them in malloc'd
memory and reading/writing them at mount/unmount time? Do we need to
ensure that group descriptors & inode/block bitmaps are not written to
disk until the filesystem gets unmounted, or is it merely to improve
performance and simplify the code?


Tim



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