FreeBSD ZFS
The Zettabyte File System
|
#include <sys/zap.h>
#include <sys/zfs_context.h>
#include <sys/avl.h>
Go to the source code of this file.
Data Structures | |
struct | mzap_ent_phys |
struct | mzap_phys |
struct | mzap_ent |
struct | zap_phys |
This structure is followed by padding, and then the embedded pointer table. More... | |
struct | zap_phys::zap_table_phys |
struct | zap |
struct | zap_name |
Defines | |
#define | ZAP_MAGIC 0x2F52AB2ABULL |
#define | FZAP_BLOCK_SHIFT(zap) ((zap)->zap_f.zap_block_shift) |
#define | MZAP_ENT_LEN 64 |
#define | MZAP_NAME_LEN (MZAP_ENT_LEN - 8 - 4 - 2) |
#define | MZAP_MAX_BLKSHIFT SPA_MAXBLOCKSHIFT |
#define | MZAP_MAX_BLKSZ (1 << MZAP_MAX_BLKSHIFT) |
#define | ZAP_NEED_CD (-1U) |
#define | MZE_PHYS(zap, mze) (&(zap)->zap_m.zap_phys->mz_chunk[(mze)->mze_chunkid]) |
#define | ZBT_LEAF ((1ULL << 63) + 0) |
#define | ZBT_HEADER ((1ULL << 63) + 1) |
#define | ZBT_MICRO ((1ULL << 63) + 3) |
#define | ZAP_EMBEDDED_PTRTBL_SHIFT(zap) (FZAP_BLOCK_SHIFT(zap) - 3 - 1) |
the embedded pointer table takes up half a block: block size / entry size (2^3) / 2 | |
#define | ZAP_EMBEDDED_PTRTBL_ENT(zap, idx) |
The embedded pointer table starts half-way through the block. | |
#define | zap_f zap_u.zap_fat |
#define | zap_m zap_u.zap_micro |
#define | ZAP_HASH_IDX(hash, n) (((n) == 0) ? 0 : ((hash) >> (64 - (n)))) |
Typedefs | |
typedef struct mzap_ent_phys | mzap_ent_phys_t |
typedef struct mzap_phys | mzap_phys_t |
typedef struct mzap_ent | mzap_ent_t |
typedef struct zap_phys | zap_phys_t |
This structure is followed by padding, and then the embedded pointer table. | |
typedef struct zap_table_phys | zap_table_phys_t |
typedef struct zap | zap_t |
typedef struct zap_name | zap_name_t |
Functions | |
boolean_t | zap_match (zap_name_t *zn, const char *matchname) |
int | zap_lockdir (objset_t *os, uint64_t obj, dmu_tx_t *tx, krw_t lti, boolean_t fatreader, boolean_t adding, zap_t **zapp) |
void | zap_unlockdir (zap_t *zap) |
void | zap_evict (dmu_buf_t *db, void *vmzap) |
zap_name_t * | zap_name_alloc (zap_t *zap, const char *key, matchtype_t mt) |
void | zap_name_free (zap_name_t *zn) |
int | zap_hashbits (zap_t *zap) |
uint32_t | zap_maxcd (zap_t *zap) |
uint64_t | zap_getflags (zap_t *zap) |
void | fzap_byteswap (void *buf, size_t size) |
int | fzap_count (zap_t *zap, uint64_t *count) |
int | fzap_lookup (zap_name_t *zn, uint64_t integer_size, uint64_t num_integers, void *buf, char *realname, int rn_len, boolean_t *normalization_conflictp) |
Routines for manipulating attributes. | |
void | fzap_prefetch (zap_name_t *zn) |
int | fzap_count_write (zap_name_t *zn, int add, uint64_t *towrite, uint64_t *tooverwrite) |
int | fzap_add (zap_name_t *zn, uint64_t integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx) |
int | fzap_update (zap_name_t *zn, int integer_size, uint64_t num_integers, const void *val, dmu_tx_t *tx) |
int | fzap_length (zap_name_t *zn, uint64_t *integer_size, uint64_t *num_integers) |
int | fzap_remove (zap_name_t *zn, dmu_tx_t *tx) |
int | fzap_cursor_retrieve (zap_t *zap, zap_cursor_t *zc, zap_attribute_t *za) |
void | fzap_get_stats (zap_t *zap, zap_stats_t *zs) |
void | zap_put_leaf (struct zap_leaf *l) |
int | fzap_add_cd (zap_name_t *zn, uint64_t integer_size, uint64_t num_integers, const void *val, uint32_t cd, dmu_tx_t *tx) |
void | fzap_upgrade (zap_t *zap, dmu_tx_t *tx, zap_flags_t flags) |
int | fzap_cursor_move_to_key (zap_cursor_t *zc, zap_name_t *zn) |
Variables | |
int | fzap_default_block_shift |
Definition at line 40 of file zap_impl.h.
#define MZAP_ENT_LEN 64 |
Definition at line 42 of file zap_impl.h.
#define MZAP_MAX_BLKSHIFT SPA_MAXBLOCKSHIFT |
Definition at line 44 of file zap_impl.h.
#define MZAP_MAX_BLKSZ (1 << MZAP_MAX_BLKSHIFT) |
Definition at line 45 of file zap_impl.h.
#define MZAP_NAME_LEN (MZAP_ENT_LEN - 8 - 4 - 2) |
Definition at line 43 of file zap_impl.h.
Definition at line 72 of file zap_impl.h.
#define ZAP_EMBEDDED_PTRTBL_ENT | ( | zap, | |
idx | |||
) |
((uint64_t *)(zap)->zap_f.zap_phys) \ [(idx) + (1<<ZAP_EMBEDDED_PTRTBL_SHIFT(zap))]
The embedded pointer table starts half-way through the block.
Since the pointer table itself is half the block, it starts at (64-bit) word number (1<<ZAP_EMBEDDED_PTRTBL_SHIFT(zap)).
Definition at line 106 of file zap_impl.h.
the embedded pointer table takes up half a block: block size / entry size (2^3) / 2
Definition at line 99 of file zap_impl.h.
#define zap_f zap_u.zap_fat |
Definition at line 178 of file zap_impl.h.
#define ZAP_HASH_IDX | ( | hash, | |
n | |||
) | (((n) == 0) ? 0 : ((hash) >> (64 - (n)))) |
Definition at line 192 of file zap_impl.h.
#define zap_m zap_u.zap_micro |
Definition at line 179 of file zap_impl.h.
#define ZAP_MAGIC 0x2F52AB2ABULL |
Definition at line 38 of file zap_impl.h.
#define ZAP_NEED_CD (-1U) |
Definition at line 47 of file zap_impl.h.
#define ZBT_HEADER ((1ULL << 63) + 1) |
Definition at line 91 of file zap_impl.h.
#define ZBT_LEAF ((1ULL << 63) + 0) |
Definition at line 90 of file zap_impl.h.
#define ZBT_MICRO ((1ULL << 63) + 3) |
Definition at line 92 of file zap_impl.h.
typedef struct mzap_ent_phys mzap_ent_phys_t |
typedef struct mzap_ent mzap_ent_t |
typedef struct mzap_phys mzap_phys_t |
typedef struct zap_name zap_name_t |
typedef struct zap_phys zap_phys_t |
This structure is followed by padding, and then the embedded pointer table.
The embedded pointer table takes up second half of the block. It is accessed using the ZAP_EMBEDDED_PTRTBL_ENT() macro.
typedef struct zap_table_phys zap_table_phys_t |
Definition at line 138 of file zap_impl.h.
int fzap_add | ( | zap_name_t * | zn, |
uint64_t | integer_size, | ||
uint64_t | num_integers, | ||
const void * | val, | ||
dmu_tx_t * | tx | ||
) |
int fzap_add_cd | ( | zap_name_t * | zn, |
uint64_t | integer_size, | ||
uint64_t | num_integers, | ||
const void * | val, | ||
uint32_t | cd, | ||
dmu_tx_t * | tx | ||
) |
int fzap_count_write | ( | zap_name_t * | zn, |
int | add, | ||
uint64_t * | towrite, | ||
uint64_t * | tooverwrite | ||
) |
int fzap_cursor_move_to_key | ( | zap_cursor_t * | zc, |
zap_name_t * | zn | ||
) |
int fzap_cursor_retrieve | ( | zap_t * | zap, |
zap_cursor_t * | zc, | ||
zap_attribute_t * | za | ||
) |
void fzap_get_stats | ( | zap_t * | zap, |
zap_stats_t * | zs | ||
) |
int fzap_length | ( | zap_name_t * | zn, |
uint64_t * | integer_size, | ||
uint64_t * | num_integers | ||
) |
int fzap_lookup | ( | zap_name_t * | zn, |
uint64_t | integer_size, | ||
uint64_t | num_integers, | ||
void * | buf, | ||
char * | realname, | ||
int | rn_len, | ||
boolean_t * | normalization_conflictp | ||
) |
void fzap_prefetch | ( | zap_name_t * | zn | ) |
int fzap_remove | ( | zap_name_t * | zn, |
dmu_tx_t * | tx | ||
) |
int fzap_update | ( | zap_name_t * | zn, |
int | integer_size, | ||
uint64_t | num_integers, | ||
const void * | val, | ||
dmu_tx_t * | tx | ||
) |
void fzap_upgrade | ( | zap_t * | zap, |
dmu_tx_t * | tx, | ||
zap_flags_t | flags | ||
) |
void zap_evict | ( | dmu_buf_t * | db, |
void * | vmzap | ||
) |
Definition at line 692 of file zap_micro.c.
uint64_t zap_getflags | ( | zap_t * | zap | ) |
Definition at line 44 of file zap_micro.c.
int zap_hashbits | ( | zap_t * | zap | ) |
Definition at line 52 of file zap_micro.c.
int zap_lockdir | ( | objset_t * | os, |
uint64_t | obj, | ||
dmu_tx_t * | tx, | ||
krw_t | lti, | ||
boolean_t | fatreader, | ||
boolean_t | adding, | ||
zap_t ** | zapp | ||
) |
Definition at line 457 of file zap_micro.c.
boolean_t zap_match | ( | zap_name_t * | zn, |
const char * | matchname | ||
) |
Definition at line 149 of file zap_micro.c.
uint32_t zap_maxcd | ( | zap_t * | zap | ) |
Definition at line 61 of file zap_micro.c.
zap_name_t* zap_name_alloc | ( | zap_t * | zap, |
const char * | key, | ||
matchtype_t | mt | ||
) |
Definition at line 173 of file zap_micro.c.
void zap_name_free | ( | zap_name_t * | zn | ) |
Definition at line 167 of file zap_micro.c.
void zap_unlockdir | ( | zap_t * | zap | ) |
Definition at line 530 of file zap_micro.c.