7.2 dies in zfs

Borja Marcos borjam at sarenet.es
Mon Nov 23 09:47:20 UTC 2009


On Nov 23, 2009, at 10:01 AM, Jeremy Chadwick wrote:

> On Mon, Nov 23, 2009 at 09:41:43AM +0100, Borja Marcos wrote:
>> On Nov 22, 2009, at 12:34 AM, Randy Bush wrote:
>>> 
>>>> Try running FreeBSD 7-Stable to get the latest ZFS version which on
>>>> FreeBSD is 13
>>> 
>>> that is what i am running.  RELENG_7
>> 
>> I've been following ZFS on FreeBSD long ago, and it really seems to be stable on 8.0/amd64.
>> Even Sun Microsystems say that ZFS is better used on a 64 bit system, they don't recommend it
>> on the 32 bit version of Solaris.
>> 
>> That said, there's still an outstanding bug, I managed to deadlock it but the condition is easy to avoid.
> 
> Please provide details of this deadlock (PR, kernel output, scenario
> details, etc.), and details of how to avoid it.

Of course, it's been discussed on freebsd-fs, that's why I didn's cross-post.

I'm making a heavy usage of zfs send/receive to keep a replica of a dataset. ZFS can deadlock if you are doing a zfs send and zfs receive (I'm using incremental snapshots) and at the same time you have reading activity on the destination dataset.

Imagine this:

Machine 1 is the origin, machine 2 is the destination:

machine 1: zfs send -i pool/dataset at first pool/dataset at second | ssh machine2 zfs receive -d pool

And while this is running, I have some activity going on with pool/dataset. Easy to replicate if pool/dataset contains /usr/obj and you are doing a make buildworld on the first machine, doing frequent replicas (30 second intervals) while on the second machine you keep a job reading it, I did the tests with a tar process copying the /usr/obj tree to another location.

However, if you can ensure that the destination dataset is not read while the zfs receive is working, there is no problem at all, zfs send -i/zfs receives work like a charm, even at 30 second intervals.







Borja.



More information about the freebsd-stable mailing list