mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Illumos 5630 - stale bonus buffer in recycled dnode_t leads to data corruption
5630 stale bonus buffer in recycled dnode_t leads to data corruption Author: Justin T. Gibbs <justing@spectralogic.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: George Wilson <george@delphix.com> Reviewed by: Will Andrews <will@freebsd.org> Approved by: Robert Mustacchi <rm@joyent.com> References: https://www.illumos.org/issues/5630 https://github.com/illumos/illumos-gate/commit/cd485b4 Ported-by: Chris Dunlop <chris@onthe.net.au> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Richard Yao <ryao@gentoo.org> Issue #3172
This commit is contained in:
committed by
Brian Behlendorf
parent
73ad4a9f3c
commit
4c7b7eedcd
+7
-1
@@ -1157,13 +1157,19 @@ dnode_add_ref(dnode_t *dn, void *tag)
|
||||
|
||||
void
|
||||
dnode_rele(dnode_t *dn, void *tag)
|
||||
{
|
||||
mutex_enter(&dn->dn_mtx);
|
||||
dnode_rele_and_unlock(dn, tag);
|
||||
}
|
||||
|
||||
void
|
||||
dnode_rele_and_unlock(dnode_t *dn, void *tag)
|
||||
{
|
||||
uint64_t refs;
|
||||
/* Get while the hold prevents the dnode from moving. */
|
||||
dmu_buf_impl_t *db = dn->dn_dbuf;
|
||||
dnode_handle_t *dnh = dn->dn_handle;
|
||||
|
||||
mutex_enter(&dn->dn_mtx);
|
||||
refs = refcount_remove(&dn->dn_holds, tag);
|
||||
mutex_exit(&dn->dn_mtx);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user