tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Partial port of ZFS



Hi,

Here is a partial port of ZFS. I do not have time to complete it right now.
Most of the initial porting work is done and it's looking for someone to
complete it.

This is not a good project for a novice kernel programmer. It needs a person
who is comfortable working in the kernel and who has some level of knowledge
of file systems and device drivers. Some limited VM system know-how would be
an advantage because ZFS interacts with it.

Tarball:

        http://www.netbsd.org/~ad/zfs-20090111.tar.gz

Notes:

- It does not do anything useful yet. There's no point in downloading it
  unless you want to work on it.

- It is more complete than the last port that I did, which I distributed
  only to a few people.

- In some ways the NetBSD kernel works and looks more like Solaris than
  FreeBSD these days, so it's a direct port from OpenSolaris 20081117. Much
  of the build glue and compatibility shims are cribbed from the previous
  port, meaning some is original work and some comes from the FreeBSD port.

- There are two kernel modules: solaris and zfs. If solaris is made to
  compile, then technically there is enough of the zfs code compiling and in
  place to use the volume management bit of zfs. I say technically because
  that has hooks into the zfs file system layer which mean it also needs to
  be ported.

- The main component left with work outstanding is ZPL, the FS layer: vfsops
  and vnops. The FreeBSD port provides a good reference point as their VFS
  layer looks very like ours.

- Most of the source compiles and links. One of the userland binaries does
  not but I can't remember which. The two kernel modules are 'almost'
  linking but do need work. See above.

- ztest now works reliably for me but I have to (cd /usr/bin; ./ztest -VVV). 
  There seems to be a bug in its dealing with getprogname/argv[0] and it
  screws up during pathname munging if outside /usr/bin.

- I have tried to avoid modifying the original Sun source. Most changes are
  handled with glue headers and preprocessor/Makefile tricks. Where the
  source has been modified the changes are isolated, or the file moved out
  of dist and maintained as a local copy (more extensive changes).

- It needs the openat() patch I posted to tech-kern earlier.

Andrew


Home | Main Index | Thread Index | Old Index