mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-27 10:24:22 +03:00
Conserve stack in zfs_mkdir()
Move the sa_attrs array from the stack to the heap to minimize stack space usage.
This commit is contained in:
parent
1ee1b76786
commit
f30484afc3
@ -773,7 +773,7 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, dmu_tx_t *tx, cred_t *cr,
|
||||
int bonuslen;
|
||||
sa_handle_t *sa_hdl;
|
||||
dmu_object_type_t obj_type;
|
||||
sa_bulk_attr_t sa_attrs[ZPL_END];
|
||||
sa_bulk_attr_t *sa_attrs;
|
||||
int cnt = 0;
|
||||
zfs_acl_locator_cb_t locate = { 0 };
|
||||
|
||||
@ -899,6 +899,7 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, dmu_tx_t *tx, cred_t *cr,
|
||||
* order for DMU_OT_ZNODE is critical since it needs to be constructed
|
||||
* in the old znode_phys_t format. Don't change this ordering
|
||||
*/
|
||||
sa_attrs = kmem_alloc(sizeof(sa_bulk_attr_t) * ZPL_END, KM_SLEEP);
|
||||
|
||||
if (obj_type == DMU_OT_ZNODE) {
|
||||
SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_ATIME(zfsvfs),
|
||||
@ -1002,6 +1003,7 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, dmu_tx_t *tx, cred_t *cr,
|
||||
err = zfs_aclset_common(*zpp, acl_ids->z_aclp, cr, tx);
|
||||
ASSERT3S(err, ==, 0);
|
||||
}
|
||||
kmem_free(sa_attrs, sizeof(sa_bulk_attr_t) * ZPL_END);
|
||||
ZFS_OBJ_HOLD_EXIT(zfsvfs, obj);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user