Updates on ZFS.
Matt Olander
matt at ixsystems.com
Tue Aug 10 20:31:00 UTC 2010
Wow, that's impressive, Pawel. Nice work! We'll get to work testing :D
-matt
On Tue, Aug 10, 2010 at 1:03 PM, Pawel Jakub Dawidek <pjd at freebsd.org> wrote:
> Hi.
>
> For the past weeks I was working on getting recent ZFS to work. This is
> what I accomplished:
>
> 1. Fixed (implemented) onexit functionality that is now used by zfs
> send/recv. This is based on device cloning in OpenSolaris, but I
> manage to avoid using device cloning on FreeBSD and ended up using
> cdevpriv, which is much less problematic.
> This was the main reason ZFS in my tree didn't compile for quite a
> while - I needed to find a way and time to implement it properly.
>
> 2. I manage to get ZVOLs to work again. Commit log for this change
> should explain everything:
>
> OpenSolaris switched to lazy creation of /dev/ entires for ZVOLs.
> It creates /dev/ entries on VOP_LOOKUP() or VOP_READDIR().
>
> This of course can't work this way on FreeBSD with GEOM, so we need
> to create ZVOL providers where appropriate. I found the following
> cases:
> 1. Pool first open (pool is loaded based on zpool/cache configuration
> and is then opened for a first time on eg. zfs mount).
> 2. Pool import. It's not the same as 1.
> 3. ZVOL creation: zfs create -V<size> <zvol>.
> 4. Creation of ZVOL snapshot, this includes recursive snapshot
> creation.
>
> To make it work I had to fix LOR between the zfsdev_state_lock, the
> GEOM topology lock and the spa_namespace_lock. They are now always
> obtained in the following order:
> 1. zfsdev_state_lock
> 2. g_topology_lock
> 3. spa_namespace_lock
> Also, we can't use taskqueue to scan for VDEVs as this introduces
> deadlock (because there is no way to honour the order above).
>
> This also allows to simplify vdev_geom.c quite a bit as it is no
> longer a problem to taste ZVOL or ZVOL-based provider.
>
> Update /etc/rc.d/zvol as there are no longer volinit and volfini
> subcommands to zfs(8).
>
> 3. I integrated all the recent changes (including zfs diff and readonly
> pools functionality). We are at v28 now and in sync with today's
> OpenSolaris.
>
> 4. I fixed a handful of bugs.
>
> All in all, it compiles and at least basic functionality should work.
>
> --
> Pawel Jakub Dawidek http://www.wheelsystems.com
> pjd at FreeBSD.org http://www.FreeBSD.org
> FreeBSD committer Am I Evil? Yes, I Am!
>
More information about the zfs-devel
mailing list