Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Feb 2001 13:53:18 -0800
From:      Alfred Perlstein <bright@wintelcom.net>
To:        Zhiui Zhang <zzhang@cs.binghamton.edu>
Cc:        freebsd-fs@FreeBSD.ORG
Subject:   Re: Design a journalled file system
Message-ID:  <20010206135317.Z26076@fw.wintelcom.net>
In-Reply-To: <Pine.SOL.4.21.0102061544230.6584-100000@opal>; from zzhang@cs.binghamton.edu on Tue, Feb 06, 2001 at 04:15:45PM -0500
References:  <Pine.SOL.4.21.0102061544230.6584-100000@opal>

next in thread | previous in thread | raw e-mail | index | archive | help
* Zhiui Zhang <zzhang@cs.binghamton.edu> [010206 13:16] wrote:
> 
> I am considering the design of a journalled file system in FreeBSD. I
> think each transaction corresponds to a file system update operation and
> will therefore consists of a list of modified buffers.  The important
> thing is that these buffers should not be written to disk until they have
> been logged into the log area. To do so, we need to pin these buffers in
> memory for a while. The concept should be simple, but I run into a problem
> which I have no idea how to solve it:
> 
> If you access a lot of files quickly, some vnodes will be reused.  These
> vnodes can contain buffers that are still pinned in the memory because of
> the write-ahead logging constraints.  After a vnode is gone, we have
> no way to recover its buffers. Note that whenever we need a new vnode, we
> are in the process of creating a new file. At this point, we can not flush
> the buffers to the log area.  The result is a deadlock.
> 
> I could make copies of the buffers that are still pinned, but that incurs
> memory copy and need buffer headers, which is also a rare resource.
> 
> The design is similar to ext3fs of linux (they do not seem to have a vnode
> layer and they use device + physical block number instead of vnode +
> logical block number to index buffers, which, I guess, means that buffers
> can exist after the inode is gone). I know Mckusick has a paper on
> journalling FFS, but I just want to know if this design can work or not.
> 
> Any ideas?  Thanks for your help!

There's ways to reassign buffers to other vnodes, you can remove
the buffers from the vnodes at reclaim time (there has to be a hook
for this) and link them to a special vnode linked from your mount
structure.

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]
"I have the heart of a child; I keep it in a jar on my desk."


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




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