From owner-freebsd-fs Tue Feb 6 13:16: 9 2001 Delivered-To: freebsd-fs@freebsd.org Received: from bingnet2.cc.binghamton.edu (bingnet2.cc.binghamton.edu [128.226.1.18]) by hub.freebsd.org (Postfix) with ESMTP id A6AAD37B401 for ; Tue, 6 Feb 2001 13:15:52 -0800 (PST) Received: from opal (cs.binghamton.edu [128.226.123.101]) by bingnet2.cc.binghamton.edu (8.11.2/8.11.2) with ESMTP id f16LFp002770 for ; Tue, 6 Feb 2001 16:15:51 -0500 (EST) Date: Tue, 6 Feb 2001 16:15:45 -0500 (EST) From: Zhiui Zhang X-Sender: zzhang@opal To: freebsd-fs@freebsd.org Subject: Design a journalled file system Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-fs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org 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! -Zhihui To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-fs" in the body of the message