Hi.

I triggered the panic from the subject with most recent ZFS on FreeBSD
and I wonder if this is a problem in OpenSolaris as well.

The dn_objset pointer is invalidated in dnode_destroy():

        POINTER_INVALIDATE(&dn->dn_objset);

It is checked for being invalid in dnode_create():

        dnode_t *dn = kmem_cache_alloc(dnode_cache, KM_SLEEP);

        ASSERT(!POINTER_IS_VALID(dn->dn_objset));

So it does makes sense, but only when dnode was used already in the
past. Will that work for first allocation where memory is filled with
unknown data? I can't find that kmem_cache_alloc() fills entire buffer
with something that will pass this assertion, but maybe I haven't looked
close enough?

-- 
Pawel Jakub Dawidek                       http://www.wheelsystems.com
[email protected]                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!

Attachment: pgppjZcjew3FL.pgp
Description: PGP signature

_______________________________________________
zfs-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-code

Reply via email to