Dumbbell's home

ReiserFS for FreeBSD

ReiserFS is a journalised filesystem, made by Hans Reiser (namesys.com). It's available for Linux, since the 2.4.x series, but FreeBSD has no support for it.

Since July 10, 2004, I work on a port of ReiserFS for FreeBSD 5-CURRENT. The main goal is to achieve a read-only support for a ReiserFS 3.6 partition. No write support is scheduled for now.

Download

Known issues

To get a list of known issues of this module, see the Project status section.

Version en développement

ReiserFS for FreeBSD, version 0.1.6 (Thursday April 14, 2005)

Locking update to be in sync with 6-CURRENT.

For FreeBSD 6-CURRENt only.

Files :

ReiserFS for FreeBSD, version 0.1.5 (Thursday April 07, 2005)

NFS export support.

For FreeBSD 6-CURRENt only.

Files :

ReiserFS for FreeBSD, version 0.1.4 (Tuesday April 05, 2005)

Update to reflect recent changes in VFS.

For FreeBSD 6-CURRENt only.

Files :

ReiserFS for FreeBSD, version 0.1.3 (Thursday February 10, 2005)

Compilation bugfix.

Files :

ReiserFS for FreeBSD, version 0.1.2 (Monday February 7, 2005)

FreeBSD 6-CURRENT support.

Changes :

  • Adapted to last changes of the VFS in 6-CURRENT
  • Improved mmap(2), now a real one, not a frontend to read(2)

Files :

ReiserFS for FreeBSD, version 0.1.1 (Monday October 18, 2004)

Bugfix release.

Changes :

  • Fixed several bugs leading to panic()

Files :

ReiserFS for FreeBSD, version 0.1.0 (Thursday August 26, 2004)

First public release.

What's new :

  • Read-only support
  • One can read files using both read(2) and mmap(2)
  • Symlink support
  • Inode cache

Files :

  • reiserfs_for_freebsd-0.1.0.tar.bz2 (MD5 sum) (PGP signature)
  • reiserfs_for_freebsd-0.1.0.tar.gz (MD5 sum) (PGP signature)

Installation

This module requires FreeBSD 5.x, and the kernel sources to compile it. It has been tested under FreeBSD 5.2.1-RELEASE, 5.2-CURRENT (several checkouts since the 5.2.1-RELEASE availability) and 6-CURRENT (dated August 23, 2004).

After the sources are uncompressed, you must run the usual make/make install:

freebsd# make
freebsd# make install

The kernel module reiserfs.ko ans the command mount_reiserfs will be compiled and installed. As it uses FreeBSD's Makefiles, you can add the same variable to change compile and install parameters.

It would be better to make a port for this.

Project status

The module is base on ReiserFS sources from Linux 2.6.7, the most up-to-date the day I started the project.

On August 26, 2004, read-only is almost complete. It still lacks:

Here is the project status grid, based on the list of functions to be implemented to have a read-only support:

VFS(9)
Funcion Description Status
VFS_INIT(9) Initialize the module, typically, prepare inode cache Done
VFS_MOUNT(9) Mount a partition into the given directory Done
VFS_ROOT(9) Return the struct vnode for the root node of the filesystem Done
VFS_STATFS(9) Read informations about the partition (fill a struct statfs) Done
VFS_VGET(9) Return a struct vnode base on a given inode number
VFS_CHECKEXP(9) Tell if the given mount point is exported
VFS_FHTOVP(9) Return a struct vnode corresponding to a given NFS handle
VFS_VPTOFH(9) Return a NFS handle correpsonding to a given struct vnode
VFS_UNMOUNT(9) Unmount a partition Done
VFS_UNINIT(9) Free module's resources, typically, delete the inode cache Done
Operation on struct vnode
Function Description Status
VOP_ACCESS(9) Check access rights for a given resource Done
VOP_PATHCONF(9) Give informations about file and directory names, etc. Done
VOP_GETATTR(9) Used by the stat(2) syscall Done
VOP_LOOKUP(9) Lookup a file/directory and return a struct vnode Done
VOP_OPEN(9) Open a file Done
VOP_READ(9) Read a file content Done
VOP_READDIR(9) Read the content of a directory (files and subdirs list) Done
VOP_READLINK(9) Read the link target Done
VOP_BMAP Convert a logical block number to a physical block number (for mmap(2)) Done
VOP_STRATEGY(9) Read a block, using its logical block number (for mmap(2)) Done
VOP_INACTIVE(9) Free an unsed vnode Done
VOP_RECLAIM(9) Recycle a vnode for another use Done