mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-24 11:18:52 +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
+9
-9
@@ -1110,7 +1110,7 @@ zap_value_search(objset_t *os, uint64_t zapobj, uint64_t value, uint64_t mask,
|
||||
if (mask == 0)
|
||||
mask = -1ULL;
|
||||
|
||||
zap_attribute_t *za = kmem_alloc(sizeof (*za), KM_SLEEP);
|
||||
zap_attribute_t *za = zap_attribute_alloc();
|
||||
for (zap_cursor_init(&zc, os, zapobj);
|
||||
(err = zap_cursor_retrieve(&zc, za)) == 0;
|
||||
zap_cursor_advance(&zc)) {
|
||||
@@ -1120,7 +1120,7 @@ zap_value_search(objset_t *os, uint64_t zapobj, uint64_t value, uint64_t mask,
|
||||
}
|
||||
}
|
||||
zap_cursor_fini(&zc);
|
||||
kmem_free(za, sizeof (*za));
|
||||
zap_attribute_free(za);
|
||||
return (err);
|
||||
}
|
||||
|
||||
@@ -1130,7 +1130,7 @@ zap_join(objset_t *os, uint64_t fromobj, uint64_t intoobj, dmu_tx_t *tx)
|
||||
zap_cursor_t zc;
|
||||
int err = 0;
|
||||
|
||||
zap_attribute_t *za = kmem_alloc(sizeof (*za), KM_SLEEP);
|
||||
zap_attribute_t *za = zap_attribute_alloc();
|
||||
for (zap_cursor_init(&zc, os, fromobj);
|
||||
zap_cursor_retrieve(&zc, za) == 0;
|
||||
(void) zap_cursor_advance(&zc)) {
|
||||
@@ -1144,7 +1144,7 @@ zap_join(objset_t *os, uint64_t fromobj, uint64_t intoobj, dmu_tx_t *tx)
|
||||
break;
|
||||
}
|
||||
zap_cursor_fini(&zc);
|
||||
kmem_free(za, sizeof (*za));
|
||||
zap_attribute_free(za);
|
||||
return (err);
|
||||
}
|
||||
|
||||
@@ -1155,7 +1155,7 @@ zap_join_key(objset_t *os, uint64_t fromobj, uint64_t intoobj,
|
||||
zap_cursor_t zc;
|
||||
int err = 0;
|
||||
|
||||
zap_attribute_t *za = kmem_alloc(sizeof (*za), KM_SLEEP);
|
||||
zap_attribute_t *za = zap_attribute_alloc();
|
||||
for (zap_cursor_init(&zc, os, fromobj);
|
||||
zap_cursor_retrieve(&zc, za) == 0;
|
||||
(void) zap_cursor_advance(&zc)) {
|
||||
@@ -1169,7 +1169,7 @@ zap_join_key(objset_t *os, uint64_t fromobj, uint64_t intoobj,
|
||||
break;
|
||||
}
|
||||
zap_cursor_fini(&zc);
|
||||
kmem_free(za, sizeof (*za));
|
||||
zap_attribute_free(za);
|
||||
return (err);
|
||||
}
|
||||
|
||||
@@ -1180,7 +1180,7 @@ zap_join_increment(objset_t *os, uint64_t fromobj, uint64_t intoobj,
|
||||
zap_cursor_t zc;
|
||||
int err = 0;
|
||||
|
||||
zap_attribute_t *za = kmem_alloc(sizeof (*za), KM_SLEEP);
|
||||
zap_attribute_t *za = zap_attribute_alloc();
|
||||
for (zap_cursor_init(&zc, os, fromobj);
|
||||
zap_cursor_retrieve(&zc, za) == 0;
|
||||
(void) zap_cursor_advance(&zc)) {
|
||||
@@ -1200,7 +1200,7 @@ zap_join_increment(objset_t *os, uint64_t fromobj, uint64_t intoobj,
|
||||
break;
|
||||
}
|
||||
zap_cursor_fini(&zc);
|
||||
kmem_free(za, sizeof (*za));
|
||||
zap_attribute_free(za);
|
||||
return (err);
|
||||
}
|
||||
|
||||
@@ -1378,7 +1378,7 @@ again:
|
||||
ASSERT(err == 0 || err == EOVERFLOW);
|
||||
}
|
||||
err = zap_entry_read_name(zap, &zeh,
|
||||
sizeof (za->za_name), za->za_name);
|
||||
za->za_name_len, za->za_name);
|
||||
ASSERT(err == 0);
|
||||
|
||||
za->za_normalization_conflict =
|
||||
|
||||
Reference in New Issue
Block a user