mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-01-14 17:22:05 +03:00
Fix Assert in dbuf_undirty, which triggers during usage zap shrink
Usage zap's (DMU_*USED_OBJECT) are updated in syncing context via
do_userquota_cacheflush(). zap shrink triggers,
ASSERT(db->db_objset == dmu_objset_pool(db->db_objset)->dp_meta_objset
|| txg != spa_syncing_txg(dmu_objset_spa(db->db_objset)));
DMU_*USED_OBJECT are special object (DMU_OBJECT_IS_SPECIAL), gets
updated in syncing context only. So, relax assert for it.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Jitendra Patidar <jitendra.patidar@nutanix.com>
Closes #17602
This commit is contained in:
parent
d3c1d27afd
commit
077269bfed
@ -2557,12 +2557,13 @@ dbuf_undirty(dmu_buf_impl_t *db, dmu_tx_t *tx)
|
||||
|
||||
/*
|
||||
* Due to our use of dn_nlevels below, this can only be called
|
||||
* in open context, unless we are operating on the MOS.
|
||||
* From syncing context, dn_nlevels may be different from the
|
||||
* dn_nlevels used when dbuf was dirtied.
|
||||
* in open context, unless we are operating on the MOS or it's
|
||||
* a special object. From syncing context, dn_nlevels may be
|
||||
* different from the dn_nlevels used when dbuf was dirtied.
|
||||
*/
|
||||
ASSERT(db->db_objset ==
|
||||
dmu_objset_pool(db->db_objset)->dp_meta_objset ||
|
||||
DMU_OBJECT_IS_SPECIAL(db->db.db_object) ||
|
||||
txg != spa_syncing_txg(dmu_objset_spa(db->db_objset)));
|
||||
ASSERT(db->db_blkid != DMU_BONUS_BLKID);
|
||||
ASSERT0(db->db_level);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user