Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Sep 2015 04:05:24 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 202607] [panic] Poudriere umounting file systems causes 'solaris assert: avl_is_empty(&dn->dn_dbufs)' panic
Message-ID:  <bug-202607-8-n1satPGB7D@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-202607-8@https.bugs.freebsd.org/bugzilla/>
References:  <bug-202607-8@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=202607

--- Comment #4 from Justin T. Gibbs <gibbs@FreeBSD.org> ---
(In reply to Xin LI from comment #2)
I spent some more time this evening reviewing the code. I believe that removing
the assert is safe. However, it would be good to assert that the only dbufs on
the dnode are either for the bonus buffer or in the evicting state. This should
hold true because the dnode free paths at higher levels (e.g. ZPL and ZVOL)
enforce mutual exclusion between reads/writes and frees. 

Currently, dbuf_rele_and_unlock() doesn't contain any logic to ensure regular
(not bonus buffer) dbufs are immediately evicted for free'd dnodes. So if, due
to a bug or regression, a dbuf for a dnode being freed is held during the call
to dnode_sync_free() , the dbuf and dnode will stick around in memory until
memory pressure evicts the dbuf. From the perspective of dnode_sync_free() and
even memory usage, this is no big deal, but it probably indicates a bug.

-- 
You are receiving this mail because:
You are the assignee for the bug.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-202607-8-n1satPGB7D>