mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-11-17 10:01:01 +03:00
Don't allow dnode allocation if dn_holds != 0
This patch simply fixes a small bug where dnode_hold_impl() could attempt to allocate a dnode that was in the process of being freed, but which still had active references. This patch simply adds the required check. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Tom Caputi <tcaputi@datto.com> Closes #8249
This commit is contained in:
parent
8bd2a2866c
commit
58769a4ebd
@ -1106,6 +1106,7 @@ dnode_check_slots_free(dnode_children_t *children, int idx, int slots)
|
||||
} else if (DN_SLOT_IS_PTR(dn)) {
|
||||
mutex_enter(&dn->dn_mtx);
|
||||
boolean_t can_free = (dn->dn_type == DMU_OT_NONE &&
|
||||
zfs_refcount_is_zero(&dn->dn_holds) &&
|
||||
!DNODE_IS_DIRTY(dn));
|
||||
mutex_exit(&dn->dn_mtx);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user