General

SUN's ZFS file system became part of FreeBSD on 6th April 2007.

The current vendor of ZFS code for FreeBSD is the Illumos project:

You can read more about ZFS here:

You can read more about ZFS port to FreeBSD here (the work was first presented on AsiaBSDCon2007):

Live demos:

This page was mostly created to coordinate further work on ZFS, as there are some missing features, not everything works as well as it should, etc.

TODO

Task

Status

Responsible

Description

file(1)

In progress

Eygene Ryabinkin

file(1) should be able to recognize dumps created by 'zfs send' command. You may find this commit useful. And here you can find output of 'zfs send' command from FreeBSD/i386, Solaris/i386 and Solaris/sparc.
We have (final, I believe) version of magic zfs file, which you can find here, which gives really nice and informative output.

fstat(1)

Done

UlfLilleengen

fstat(1) should be able to recognize ZFS file system objects. Equivalent of UFS inode in ZFS is znode. Structure znode_phys from this file describes on-disk format of the znode.

slow mmap(2)

Done

PawelJakubDawidek

During the porting work, the decision was made to bypass FreeBSD buffer cache entirely to avoid caching data twice, to simplify the code and to speed up common workloads. This may (but doesn't have to) be the reason that operating on mmaped files is slow. It is much slower than UFS. Another theory (actually more possible) is that ZFS destroys vmobject on vnode inactive, not on vnode reclaim as other file systems do. This problem has to be analysed and fixed. You may find this tool useful.
The problem was fixed, it was a bug in mappedwrite() function.

FreeBSD namecache

Done

PawelJakubDawidek

There were problems with using FreeBSD's namecache with ZFS, probably because of wrong usage of namecache KPI and OpenSolaris' namecache (DNLC) is used instead. It will be great to be able to teach ZFS about FreeBSD's namecache. You may find code under FREEBSD_NAMECACHE #define helpful to see what was done and didn't work.
Code was rearranged to properly act in inactive() and reclaim() methods, which fixed namecache problem.

missing support for some architectures

Done

PawelJakubDawidek

Currently ZFS on FreeBSD is only available for i386 and amd64 architectures. Mostly because of missing atomic operations that are implemented in assembler. It would be best to implement missing atomic operations in FreeBSD itself. Assembler implementation of those atomic operations for OpenSolaris (i386/amd64/sparc) you can find here.
ZFS is now available on all architectures, missing atomic operations were implemented using a global mutex to ensure their atomicity. Some architectures like sparc64/sun4v could still be improved, but for some other it's not possible to implement real 64bit atomic operations.

zfsboot

Done

DougRabson

ACL

Done

EdwardTomaszNapierala

Currently ZFS on FreeBSD doesn't support ACLs. ZFS itself supports NFSv4-style ACLs, which is different than the existing POSIX.1e implementation in FreeBSD, which means that first thing to do is to add support for NFSv4-style ACLs to FreeBSD, which is being done as a GSoC project (http://wiki.freebsd.org/NFSv4_ACLs).

extattr

Done

PawelJakubDawidek

ZFS supports extended attributes, but there are huge differences between OpenSolaris extended attributes and FreeBSD extended attributes. In FreeBSD an attribute is described by name space, name and value. In OpenSolaris an attribute is logically a file, which is available in attributes name space. One can also create directories hierarchies in attributes name space, etc. Read more here. Of course it would be nice to be able to access extended attributes created on OpenSolaris from FreeBSD and vice versa. My suggestion is to treat whole path to OpenSolaris' attribute as a attribute name in FreeBSD. We could also define that EXTATTR_NAMESPACE_USER is simply org.freebsd.user directory in OpenSolaris attributes name space (similar for EXTATTR_NAMESPACE_SYSTEM and POSIX1E_ACL_ACCESS_EXTATTR_NAMESPACE/POSIX1E_ACL_DEFAULT_EXTATTR_NAMESPACE if we want support for POSIX.1e ACLs in ZFS).

iSCSI support

Not done

Similar to ZFS file system NFS-sharing, it is possible to share ZVOLs via iSCSI. There is no iSCSI target daemon in FreeBSD currently that's why 'zfs set shareiscsi' is not supported. Which means there are two things to do: import iSCSI target to FreeBSD base (there is one implementation from NetBSD in the ports collection) and work on shareiscsi property to produce syntax understandable by the iSCSI target daemon.

documentation

In progress

EdwardTomaszNapierala

To help users to get used to ZFS easily and be able to try all those nifty features we need decent documentation. It would be best to have a chapter about ZFS in FreeBSD's handbook. The entire ZFS functionality available in Solaris is described in ZFS Administration Guide, but there are differences between Solaris and FreeBSD version. There is some FreeBSD-specific functionality, some functionality is not supported and some bits around ZFS needs to be documented (like rc.d/zfs script, root on ZFS configuration, etc.). This is very important task and it has to be done before 7.0-RELEASE.

Delegated Administration

Done

PawelJakubDawidek

The Delegated Administration feature was added to ZFS after ZFS was ported to FreeBSD, but because we want to have all the cool features, it will be nice to port it. You can read more about Delegated Administration here.
The Delegated Administration feature was ported (but its not yet merged to the HEAD branch). To make it work, one has to set vfs.usermount sysctl to 1.

Support chflags(2)

Done

UlfLilleengen / PawelJakubDawidek

As the incoming ZFS import have support for extra attributes similar to those used by chflags(2), it would be nice to be able to use those flags on ZFS filesystems.

TODO (v15)

Task

Status

Responsible

Description

Python interface

done

MartinMatuska

The new ZFS have implemented some functionality in Python. Currently we plan to implement a few very important ones in C and make the rest a port.

ZFSv14 interface compatibility shims

done

MartinMatuska

In order to be MFC'able we need to teach the kernel to talk with older zfs(1M) binary, at least to import zpool and mount file system.

zfsboot compatibility

done

MartinMatuska

Test if we can boot from zpool and fix it if necessary

ZFSv15 import

done

MartinMatuska

Merge ZFS v15 code into -HEAD when all above is met

TODO (v28)

Task

Status

Responsible

Description

ZFSv28 import

done

PawelJakubDawidek

Merge ZFS v28 code into -HEAD and -STABLE

Send me an e-mail (pjd@FreeBSD.org) if you would like to work on any of those items or to propose more tasks.

ZFS (last edited 2013-02-01 08:00:51 by AndriyGapon)