Briefly, my goals for the three quarter term were: port libzfs, port the commandline tools zfs and zpool, and write a kernel module to communicate with userland tools via ioctl() calls on a /dev/zfs. Another goal was to make sure our port of ZFS passes all tests in ztest.
With the exception of a few missing routines, libzfs builds fine on Haiku. So does zpool. zfs requires some love, but nothing major remains to be done. In fact, with the exception of a few routines that I need to implement in libsolcompat (our Solaris compatibility library), the port builds almost perfectly on Haiku. But getting it to build is only half the battle ;)
My midterm goal was porting libzpool -- which contains most of the ZFS code -- to Haiku. Another midterm goal was to get ztest -- the ZFS testing tool --- to run on Haiku. Being able to run ztest in a loop for an entire day means that about 80% of the ported code is working fine (though the remaining 20% is the most difficult part of the entire porting process). ztest is a userland test, so actual file system modules or disks are not involved in the testing procedure -- ztest creates block files in a temporary directory and treats them as disks.
My quarter term goals for the ZFS port included porting all the libzpool dependencies to Haiku. Out of four major dependencies -- libavl, libnvpair, libuutil and libumem -- I already have two -- libavl and libnvpair -- building on Haiku. libumem and libuutil will take another few days, which puts me at least a week behind my original schedule.
I'm currently working on porting libuutil, which is presenting a few roadblocks but nothing that can't be fixed in one day's work.
I was busy with finals throughout the Community Bonding period, which left me with little time to work on GSoC-related tasks. I still have 3 exams left with the last one being on June 7. That's when the fun starts. For now I'm merely playing with ZFS on FreeBSD on a virtual machine. I still need to make my way through at least the ZFS On-Disk Specification. Even though the information contained in this document is not strictly required for porting ZFS to Haiku, it's a useful read nonetheless. It also makes me look like a rockstar when I open it in coffee shops.
I'm Ankur Sethi, a 20 year old hacker from New Delhi, India. I mostly program in Python and Objective-C (on Mac OS X/iOS). This summer, I will work on porting ZFS to Haiku as part of Google Summer of Code 2011. My proposal lives here.
ZFS is a combined file system and logical volume manager built by Sun Microsystems (now Oracle) for OpenSolaris. Besides having a 'Z' in the name -- which automatically grants it +100 awesome points -- ZFS sports a feature set that will enable developers to build some incredibly neat applications on top of Haiku. For example, ZFS supports files and volumes up to 16 exabytes in size. It is designed from the ground up with a focus on protecting data from silent corruption (bit rot, cosmic radiation, etc.) Thanks to its copy-on-write nature, creating snapshots on ZFS is quick, easy and cheap, which takes the pain out of creating backups. This Wikipedia article does a better job than I ever could of describing why ZFS is, as Oracle's marketing department will be happy to let you know, the last word in filesystems.