mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-01-14 01:02:04 +03:00
ZAP: Remove dmu_object_info_from_dnode() call
dmu_object_info_from_dnode() takes two locks and copies plenty of data that we don't need in zap_lockdir_impl(). Just read dn_type directly in this hot path. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Motin <alexander.motin@TrueNAS.com> Closes #17921
This commit is contained in:
parent
ac0bc4cc00
commit
e895c76194
@ -625,12 +625,10 @@ zap_lockdir_impl(dnode_t *dn, dmu_buf_t *db, const void *tag, dmu_tx_t *tx,
|
||||
ASSERT0(db->db_offset);
|
||||
objset_t *os = dmu_buf_get_objset(db);
|
||||
uint64_t obj = db->db_object;
|
||||
dmu_object_info_t doi;
|
||||
|
||||
*zapp = NULL;
|
||||
|
||||
dmu_object_info_from_dnode(dn, &doi);
|
||||
if (DMU_OT_BYTESWAP(doi.doi_type) != DMU_BSWAP_ZAP)
|
||||
if (DMU_OT_BYTESWAP(dn->dn_type) != DMU_BSWAP_ZAP)
|
||||
return (SET_ERROR(EINVAL));
|
||||
|
||||
zap_t *zap = dmu_buf_get_user(db);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user