Lines Matching refs:zn

114 zap_hash(zap_name_t *zn)  in zap_hash()  argument
116 zap_t *zap = zn->zn_zap; in zap_hash()
121 h = *(uint64_t *)zn->zn_key_orig; in zap_hash()
128 const uint64_t *wp = zn->zn_key_norm; in zap_hash()
130 ASSERT(zn->zn_key_intlen == 8); in zap_hash()
131 for (int i = 0; i < zn->zn_key_norm_numints; in zap_hash()
142 const uint8_t *cp = zn->zn_key_norm; in zap_hash()
151 int len = zn->zn_key_norm_numints - 1; in zap_hash()
153 ASSERT(zn->zn_key_intlen == 1); in zap_hash()
188 zap_match(zap_name_t *zn, const char *matchname) in zap_match() argument
191 ASSERT(!(zap_getflags(zn->zn_zap) & ZAP_FLAG_UINT64_KEY)); in zap_match()
193 if (zn->zn_matchtype & MT_NORMALIZE) { in zap_match()
194 size_t namelen = zn->zn_normbuf_len; in zap_match()
205 if (zap_normalize(zn->zn_zap, matchname, norm, in zap_match()
206 zn->zn_normflags, namelen) != 0) { in zap_match()
209 res = (strcmp(zn->zn_key_norm, norm) == 0); in zap_match()
214 res = (strcmp(zn->zn_key_orig, matchname) == 0); in zap_match()
257 zap_name_t *zn = kmem_cache_alloc(cache, KM_SLEEP); in zap_name_alloc() local
259 zn->zn_zap = zap; in zap_name_alloc()
260 zn->zn_normbuf_len = longname ? ZAP_MAXNAMELEN_NEW : ZAP_MAXNAMELEN; in zap_name_alloc()
261 return (zn); in zap_name_alloc()
265 zap_name_free(zap_name_t *zn) in zap_name_free() argument
267 if (zn->zn_normbuf_len == ZAP_MAXNAMELEN) { in zap_name_free()
268 kmem_cache_free(zap_name_cache, zn); in zap_name_free()
270 ASSERT3U(zn->zn_normbuf_len, ==, ZAP_MAXNAMELEN_NEW); in zap_name_free()
271 kmem_cache_free(zap_name_long_cache, zn); in zap_name_free()
276 zap_name_init_str(zap_name_t *zn, const char *key, matchtype_t mt) in zap_name_init_str() argument
278 zap_t *zap = zn->zn_zap; in zap_name_init_str()
283 zn->zn_normbuf_len == ZAP_MAXNAMELEN_NEW); in zap_name_init_str()
285 zn->zn_key_intlen = sizeof (*key); in zap_name_init_str()
286 zn->zn_key_orig = key; in zap_name_init_str()
287 zn->zn_key_orig_numints = key_len; in zap_name_init_str()
288 zn->zn_matchtype = mt; in zap_name_init_str()
289 zn->zn_normflags = zap->zap_normflags; in zap_name_init_str()
297 zn->zn_normflags &= ~U8_TEXTPREP_TOUPPER; in zap_name_init_str()
304 if (zap_normalize(zap, key, zn->zn_normbuf, in zap_name_init_str()
305 zap->zap_normflags, zn->zn_normbuf_len) != 0) in zap_name_init_str()
307 zn->zn_key_norm = zn->zn_normbuf; in zap_name_init_str()
308 zn->zn_key_norm_numints = strlen(zn->zn_key_norm) + 1; in zap_name_init_str()
312 zn->zn_key_norm = zn->zn_key_orig; in zap_name_init_str()
313 zn->zn_key_norm_numints = zn->zn_key_orig_numints; in zap_name_init_str()
316 zn->zn_hash = zap_hash(zn); in zap_name_init_str()
318 if (zap->zap_normflags != zn->zn_normflags) { in zap_name_init_str()
323 if (zap_normalize(zap, key, zn->zn_normbuf, in zap_name_init_str()
324 zn->zn_normflags, zn->zn_normbuf_len) != 0) in zap_name_init_str()
326 zn->zn_key_norm_numints = strlen(zn->zn_key_norm) + 1; in zap_name_init_str()
336 zap_name_t *zn = zap_name_alloc(zap, (key_len > ZAP_MAXNAMELEN)); in zap_name_alloc_str() local
337 if (zap_name_init_str(zn, key, mt) != 0) { in zap_name_alloc_str()
338 zap_name_free(zn); in zap_name_alloc_str()
341 return (zn); in zap_name_alloc_str()
347 zap_name_t *zn = kmem_cache_alloc(zap_name_cache, KM_SLEEP); in zap_name_alloc_uint64() local
350 zn->zn_zap = zap; in zap_name_alloc_uint64()
351 zn->zn_key_intlen = sizeof (*key); in zap_name_alloc_uint64()
352 zn->zn_key_orig = zn->zn_key_norm = key; in zap_name_alloc_uint64()
353 zn->zn_key_orig_numints = zn->zn_key_norm_numints = numints; in zap_name_alloc_uint64()
354 zn->zn_matchtype = 0; in zap_name_alloc_uint64()
355 zn->zn_normbuf_len = ZAP_MAXNAMELEN; in zap_name_alloc_uint64()
357 zn->zn_hash = zap_hash(zn); in zap_name_alloc_uint64()
358 return (zn); in zap_name_alloc_uint64()
421 mze_find(zap_name_t *zn, zfs_btree_index_t *idx) in mze_find() argument
425 zfs_btree_t *tree = &zn->zn_zap->zap_m.zap_tree; in mze_find()
427 ASSERT(zn->zn_zap->zap_ismicro); in mze_find()
428 ASSERT(RW_LOCK_HELD(&zn->zn_zap->zap_rwlock)); in mze_find()
430 ASSERT0(zn->zn_hash & 0xffffffff); in mze_find()
431 mze_tofind.mze_hash = zn->zn_hash >> 32; in mze_find()
439 ASSERT3U(mze->mze_cd, ==, MZE_PHYS(zn->zn_zap, mze)->mze_cd); in mze_find()
440 if (zap_match(zn, MZE_PHYS(zn->zn_zap, mze)->mze_name)) in mze_find()
486 mze_canfit_fzap_leaf(zap_name_t *zn, uint64_t hash) in mze_canfit_fzap_leaf() argument
488 zap_t *zap = zn->zn_zap; in mze_canfit_fzap_leaf()
571 zap_name_t *zn = zap_name_alloc(zap, B_FALSE); in mzap_open() local
577 zap_name_init_str(zn, mze->mze_name, 0); in mzap_open()
578 mze_insert(zap, i, zn->zn_hash); in mzap_open()
581 zap_name_free(zn); in mzap_open()
803 zap_name_t *zn = zap_name_alloc(zap, B_FALSE); in mzap_upgrade() local
810 zap_name_init_str(zn, mze->mze_name, 0); in mzap_upgrade()
812 VERIFY0(fzap_add_cd(zn, 8, 1, &mze->mze_value, mze->mze_cd, in mzap_upgrade()
814 zap = zn->zn_zap; /* fzap_add_cd() may change zap */ in mzap_upgrade()
816 zap_name_free(zn); in mzap_upgrade()
1059 mzap_normalization_conflict(zap_t *zap, zap_name_t *zn, mzap_ent_t *mze, in mzap_normalization_conflict() argument
1073 if (zn == NULL) { in mzap_normalization_conflict()
1074 zn = zap_name_alloc_str(zap, in mzap_normalization_conflict()
1078 if (zap_match(zn, MZE_PHYS(zap, other)->mze_name)) { in mzap_normalization_conflict()
1080 zap_name_free(zn); in mzap_normalization_conflict()
1089 if (zn == NULL) { in mzap_normalization_conflict()
1090 zn = zap_name_alloc_str(zap, in mzap_normalization_conflict()
1094 if (zap_match(zn, MZE_PHYS(zap, other)->mze_name)) { in mzap_normalization_conflict()
1096 zap_name_free(zn); in mzap_normalization_conflict()
1102 zap_name_free(zn); in mzap_normalization_conflict()
1126 zap_name_t *zn = zap_name_alloc_str(zap, name, mt); in zap_lookup_impl() local
1127 if (zn == NULL) in zap_lookup_impl()
1131 err = fzap_lookup(zn, integer_size, num_integers, buf, in zap_lookup_impl()
1135 mzap_ent_t *mze = mze_find(zn, &idx); in zap_lookup_impl()
1152 zn, mze, &idx); in zap_lookup_impl()
1157 zap_name_free(zn); in zap_lookup_impl()
1184 zap_name_t *zn; in zap_prefetch() local
1189 zn = zap_name_alloc_str(zap, name, 0); in zap_prefetch()
1190 if (zn == NULL) { in zap_prefetch()
1195 fzap_prefetch(zn); in zap_prefetch()
1196 zap_name_free(zn); in zap_prefetch()
1245 zap_name_t *zn = zap_name_alloc_uint64(zap, key, key_numints); in zap_prefetch_uint64_impl() local
1246 if (zn == NULL) { in zap_prefetch_uint64_impl()
1251 fzap_prefetch(zn); in zap_prefetch_uint64_impl()
1252 zap_name_free(zn); in zap_prefetch_uint64_impl()
1290 zap_name_t *zn = zap_name_alloc_uint64(zap, key, key_numints); in zap_lookup_uint64_impl() local
1291 if (zn == NULL) { in zap_lookup_uint64_impl()
1296 int err = fzap_lookup(zn, integer_size, num_integers, buf, in zap_lookup_uint64_impl()
1298 zap_name_free(zn); in zap_lookup_uint64_impl()
1355 zap_name_t *zn = zap_name_alloc_str(zap, name, 0); in zap_length() local
1356 if (zn == NULL) { in zap_length()
1361 err = fzap_length(zn, integer_size, num_integers); in zap_length()
1364 mzap_ent_t *mze = mze_find(zn, &idx); in zap_length()
1374 zap_name_free(zn); in zap_length()
1389 zap_name_t *zn = zap_name_alloc_uint64(zap, key, key_numints); in zap_length_uint64() local
1390 if (zn == NULL) { in zap_length_uint64()
1394 err = fzap_length(zn, integer_size, num_integers); in zap_length_uint64()
1395 zap_name_free(zn); in zap_length_uint64()
1401 mzap_addent(zap_name_t *zn, uint64_t value) in mzap_addent() argument
1403 zap_t *zap = zn->zn_zap; in mzap_addent()
1411 ASSERT(strcmp(zn->zn_key_orig, mze->mze_name) != 0); in mzap_addent()
1415 uint32_t cd = mze_find_unused_cd(zap, zn->zn_hash); in mzap_addent()
1425 (void) strlcpy(mze->mze_name, zn->zn_key_orig, in mzap_addent()
1432 mze_insert(zap, i, zn->zn_hash); in mzap_addent()
1451 zap_name_t *zn = zap_name_alloc_str(zap, key, 0); in zap_add_impl() local
1452 if (zn == NULL) { in zap_add_impl()
1457 err = fzap_add(zn, integer_size, num_integers, val, tag, tx); in zap_add_impl()
1458 zap = zn->zn_zap; /* fzap_add() may change zap */ in zap_add_impl()
1461 !mze_canfit_fzap_leaf(zn, zn->zn_hash)) { in zap_add_impl()
1462 err = mzap_upgrade(&zn->zn_zap, tag, tx, 0); in zap_add_impl()
1464 err = fzap_add(zn, integer_size, num_integers, val, in zap_add_impl()
1467 zap = zn->zn_zap; /* fzap_add() may change zap */ in zap_add_impl()
1470 if (mze_find(zn, &idx) != NULL) { in zap_add_impl()
1473 mzap_addent(zn, *intval); in zap_add_impl()
1476 ASSERT(zap == zn->zn_zap); in zap_add_impl()
1477 zap_name_free(zn); in zap_add_impl()
1522 zap_name_t *zn = zap_name_alloc_uint64(zap, key, key_numints); in zap_add_uint64_impl() local
1523 if (zn == NULL) { in zap_add_uint64_impl()
1527 err = fzap_add(zn, integer_size, num_integers, val, tag, tx); in zap_add_uint64_impl()
1528 zap = zn->zn_zap; /* fzap_add() may change zap */ in zap_add_uint64_impl()
1529 zap_name_free(zn); in zap_add_uint64_impl()
1580 zap_name_t *zn = zap_name_alloc_str(zap, name, 0); in zap_update() local
1581 if (zn == NULL) { in zap_update()
1586 err = fzap_update(zn, integer_size, num_integers, val, in zap_update()
1588 zap = zn->zn_zap; /* fzap_update() may change zap */ in zap_update()
1594 err = mzap_upgrade(&zn->zn_zap, FTAG, tx, 0); in zap_update()
1596 err = fzap_update(zn, integer_size, num_integers, in zap_update()
1599 zap = zn->zn_zap; /* fzap_update() may change zap */ in zap_update()
1602 mzap_ent_t *mze = mze_find(zn, &idx); in zap_update()
1606 mzap_addent(zn, *intval); in zap_update()
1609 ASSERT(zap == zn->zn_zap); in zap_update()
1610 zap_name_free(zn); in zap_update()
1623 zap_name_t *zn = zap_name_alloc_uint64(zap, key, key_numints); in zap_update_uint64_impl() local
1624 if (zn == NULL) { in zap_update_uint64_impl()
1628 err = fzap_update(zn, integer_size, num_integers, val, tag, tx); in zap_update_uint64_impl()
1629 zap = zn->zn_zap; /* fzap_update() may change zap */ in zap_update_uint64_impl()
1630 zap_name_free(zn); in zap_update_uint64_impl()
1681 zap_name_t *zn = zap_name_alloc_str(zap, name, mt); in zap_remove_impl() local
1682 if (zn == NULL) in zap_remove_impl()
1685 err = fzap_remove(zn, tx); in zap_remove_impl()
1688 mzap_ent_t *mze = mze_find(zn, &idx); in zap_remove_impl()
1697 zap_name_free(zn); in zap_remove_impl()
1736 zap_name_t *zn = zap_name_alloc_uint64(zap, key, key_numints); in zap_remove_uint64_impl() local
1737 if (zn == NULL) { in zap_remove_uint64_impl()
1741 err = fzap_remove(zn, tx); in zap_remove_uint64_impl()
1742 zap_name_free(zn); in zap_remove_uint64_impl()