mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-26 04:07:45 +03:00
Allocate zap_attribute_t from kmem instead of stack
This patch is preparatory work for long name feature. It changes all users of zap_attribute_t to allocate it from kmem instead of stack. It also make zap_attribute_t and zap_name_t structure variable length. Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Chunwei Chen <david.chen@nutanix.com> Closes #15921
This commit is contained in:
committed by
Brian Behlendorf
parent
141368a4b6
commit
3cf2bfa570
@@ -189,7 +189,7 @@ zfs_get_deleteq(objset_t *os)
|
||||
objlist_t *deleteq_objlist = objlist_create();
|
||||
uint64_t deleteq_obj;
|
||||
zap_cursor_t zc;
|
||||
zap_attribute_t za;
|
||||
zap_attribute_t *za;
|
||||
dmu_object_info_t doi;
|
||||
|
||||
ASSERT3U(os->os_phys->os_type, ==, DMU_OST_ZFS);
|
||||
@@ -208,13 +208,15 @@ zfs_get_deleteq(objset_t *os)
|
||||
avl_create(&at, objnode_compare, sizeof (struct objnode),
|
||||
offsetof(struct objnode, node));
|
||||
|
||||
za = zap_attribute_alloc();
|
||||
for (zap_cursor_init(&zc, os, deleteq_obj);
|
||||
zap_cursor_retrieve(&zc, &za) == 0; zap_cursor_advance(&zc)) {
|
||||
zap_cursor_retrieve(&zc, za) == 0; zap_cursor_advance(&zc)) {
|
||||
struct objnode *obj = kmem_zalloc(sizeof (*obj), KM_SLEEP);
|
||||
obj->obj = za.za_first_integer;
|
||||
obj->obj = za->za_first_integer;
|
||||
avl_add(&at, obj);
|
||||
}
|
||||
zap_cursor_fini(&zc);
|
||||
zap_attribute_free(za);
|
||||
|
||||
struct objnode *next, *found = avl_first(&at);
|
||||
while (found != NULL) {
|
||||
|
||||
Reference in New Issue
Block a user