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;
|
int bonuslen;
|
||||||
sa_handle_t *sa_hdl;
|
sa_handle_t *sa_hdl;
|
||||||
dmu_object_type_t obj_type;
|
dmu_object_type_t obj_type;
|
||||||
sa_bulk_attr_t sa_attrs[ZPL_END];
|
sa_bulk_attr_t *sa_attrs;
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
zfs_acl_locator_cb_t locate = { 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
|
* 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
|
* 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) {
|
if (obj_type == DMU_OT_ZNODE) {
|
||||||
SA_ADD_BULK_ATTR(sa_attrs, cnt, SA_ZPL_ATIME(zfsvfs),
|
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);
|
err = zfs_aclset_common(*zpp, acl_ids->z_aclp, cr, tx);
|
||||||
ASSERT3S(err, ==, 0);
|
ASSERT3S(err, ==, 0);
|
||||||
}
|
}
|
||||||
|
kmem_free(sa_attrs, sizeof(sa_bulk_attr_t) * ZPL_END);
|
||||||
ZFS_OBJ_HOLD_EXIT(zfsvfs, obj);
|
ZFS_OBJ_HOLD_EXIT(zfsvfs, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user