Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 28 Nov 2000 18:16:31 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        blk@skynet.be (Brad Knowles)
Cc:        joeo@cracktown.com, chat@FreeBSD.ORG
Subject:   Re: Netbsd advances...
Message-ID:  <200011281816.LAA10149@usr08.primenet.com>
In-Reply-To: <v0422080fb6499c5991a4@[195.238.1.121]> from "Brad Knowles" at Nov 28, 2000 06:31:57 PM

next in thread | previous in thread | raw e-mail | index | archive | help
> 	This brings up a good question -- does FreeBSD have a unified 
> buffer cache?  If not, is there a particular reason why?

FreeBSD has a unified VM and buffer cache.

I believe FreeBSD had this before a commercial UNIX did...
over six years ago.

But life is not all a bowl of cherries.

Actually, the removal of explicit VM and buffer cache
synchronization points in the FreeBSD FS implementations
was arguably premature, since it makes it much harder to
synchronize VM objects associated with stacked vnodes.

The reason FreeBSD diked out LFS was that the LFS code
was not maintained over the switch-over, and languished
without a champion for long enough that the complaints
about it crashing, with no patches, outweighed having it
hang around in the main source tree (which is why it's
in the attic).

Ideally, there would be a BSD still around without a
unified VM and buffer cache, and VFS code would be made
portable between FreeBSD and that system, which would
maintain the best of both worlds.

The lack of explicit synchronization points also means it
is harder to proxy operations; this means both over a
network, and over the user/kernel boundary.  One of the
original goals of the Heidemann VFS stacking framework
was to allow proxy by decriptor, so that a system which
did not understand a particular VOP could still proxy it
to a system which did.  Another original goal was the
ability to proxy over the user/kernel boundary, so that a
pure VFS layer (and potentially, an impure one, which did
not have the descriptor interface on both the top and the
bottom) could be developed and debuged in a user space
developement framework.

Doing explicit coherency over a network or over a protection
domain boundary requires explicit synchronization between
backing objects, when those objects have different scopes
(see the "nfsnode" synchronization via the pager VOPs, in
the NFS code, and see some of the recent glue code that
had to be added to nullfs, but still fails to completely and
fully maintain object coherency in the mmap() case -- you
knew msync() had to be there in user space code for a reason,
right?).


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message




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