FreeBSD ZFS
The Zettabyte File System
Data Fields

dnode Struct Reference

#include <dnode.h>

Collaboration diagram for dnode:
Collaboration graph
[legend]

Data Fields

krwlock_t dn_struct_rwlock
 Protects the structure of the dnode, including the number of levels of indirection (dn_nlevels), dn_maxblkid, and dn_next_*.
list_node_t dn_link
 Our link on dn_objset->os_dnodes list; protected by os_lock.
kmutex_t dn_dbufs_mtx
list_t dn_dbufs
 descendent dbufs
boolean_t dn_have_spill
 have spill or are spilling
struct zfetch dn_zfetch
 holds prefetch structure
Immutable
struct objsetdn_objset
uint64_t dn_object
struct dmu_buf_impldn_dbuf
struct dnode_handledn_handle
dnode_phys_tdn_phys
 pointer into dn->dn_dbuf->db.db_data
Copies of stuff in dn_phys

They're valid in the open context (eg.

even before the dnode is first synced). Where necessary, these are protected by dn_struct_rwlock.

dmu_object_type_t dn_type
 object type
uint16_t dn_bonuslen
 bonus length
uint8_t dn_bonustype
 bonus type
uint8_t dn_nblkptr
 number of blkptrs (immutable)
uint8_t dn_checksum
 ZIO_CHECKSUM type.
uint8_t dn_compress
 ZIO_COMPRESS type.
uint8_t dn_nlevels
uint8_t dn_indblkshift
uint8_t dn_datablkshift
 zero if blksz not power of 2!
uint8_t dn_moved
 Has this dnode been moved?
uint16_t dn_datablkszsec
 in 512b sectors
uint32_t dn_datablksz
 in bytes
uint64_t dn_maxblkid
uint8_t dn_next_nblkptr [TXG_SIZE]
uint8_t dn_next_nlevels [TXG_SIZE]
uint8_t dn_next_indblkshift [TXG_SIZE]
uint8_t dn_next_bonustype [TXG_SIZE]
uint8_t dn_rm_spillblk [TXG_SIZE]
 for removing spill blk
uint16_t dn_next_bonuslen [TXG_SIZE]
uint32_t dn_next_blksz [TXG_SIZE]
 next block size in bytes
Protected by dn_dbufs_mtx

declared here to fill 32-bit hole

uint32_t dn_dbufs_count
 count of dn_dbufs
Protected by os_lock
list_node_t dn_dirty_link [TXG_SIZE]
 next on dataset's dirty
Protected by dn_mtx
kmutex_t dn_mtx
list_t dn_dirty_records [TXG_SIZE]
avl_tree_t dn_ranges [TXG_SIZE]
uint64_t dn_allocated_txg
uint64_t dn_free_txg
uint64_t dn_assigned_txg
kcondvar_t dn_notxholds
enum dnode_dirtycontext dn_dirtyctx
uint8_t * dn_dirtyctx_firstset
 dbg: contents meaningless
Protected by own devices
refcount_t dn_tx_holds
refcount_t dn_holds
Protected by dn_struct_rwlock
struct dmu_buf_impldn_bonus
 bonus buffer dbuf
Parent IO for current sync write
zio_tdn_zio
Used in syncing context
uint64_t dn_oldused
 old phys used bytes
uint64_t dn_oldflags
 old phys dn_flags
uint64_t dn_olduid
uint64_t dn_oldgid
uint64_t dn_newuid
uint64_t dn_newgid
int dn_id_flags

Detailed Description

Definition at line 156 of file dnode.h.


Field Documentation

Definition at line 224 of file dnode.h.

Definition at line 226 of file dnode.h.

bonus buffer dbuf

Definition at line 245 of file dnode.h.

bonus length

Definition at line 184 of file dnode.h.

bonus type

Definition at line 185 of file dnode.h.

ZIO_CHECKSUM type.

Definition at line 187 of file dnode.h.

ZIO_COMPRESS type.

Definition at line 188 of file dnode.h.

zero if blksz not power of 2!

Definition at line 191 of file dnode.h.

in bytes

Definition at line 194 of file dnode.h.

in 512b sectors

Definition at line 193 of file dnode.h.

Definition at line 171 of file dnode.h.

descendent dbufs

Definition at line 240 of file dnode.h.

count of dn_dbufs

Definition at line 209 of file dnode.h.

Definition at line 239 of file dnode.h.

list_node_t dnode::dn_dirty_link[TXG_SIZE]

next on dataset's dirty

Definition at line 215 of file dnode.h.

list_t dnode::dn_dirty_records[TXG_SIZE]

Definition at line 222 of file dnode.h.

Definition at line 228 of file dnode.h.

dbg: contents meaningless

Definition at line 229 of file dnode.h.

Definition at line 225 of file dnode.h.

Definition at line 172 of file dnode.h.

have spill or are spilling

Definition at line 248 of file dnode.h.

Definition at line 236 of file dnode.h.

Definition at line 263 of file dnode.h.

Definition at line 190 of file dnode.h.

list_node_t dnode::dn_link

Our link on dn_objset->os_dnodes list; protected by os_lock.

Definition at line 164 of file dnode.h.

Definition at line 195 of file dnode.h.

uint8_t dnode::dn_moved

Has this dnode been moved?

Definition at line 192 of file dnode.h.

kmutex_t dnode::dn_mtx

Definition at line 221 of file dnode.h.

number of blkptrs (immutable)

Definition at line 186 of file dnode.h.

uint64_t dnode::dn_newgid

Definition at line 262 of file dnode.h.

uint64_t dnode::dn_newuid

Definition at line 262 of file dnode.h.

uint32_t dnode::dn_next_blksz[TXG_SIZE]

next block size in bytes

Definition at line 202 of file dnode.h.

uint16_t dnode::dn_next_bonuslen[TXG_SIZE]

Definition at line 201 of file dnode.h.

uint8_t dnode::dn_next_bonustype[TXG_SIZE]

Definition at line 199 of file dnode.h.

uint8_t dnode::dn_next_indblkshift[TXG_SIZE]

Definition at line 198 of file dnode.h.

uint8_t dnode::dn_next_nblkptr[TXG_SIZE]

Definition at line 196 of file dnode.h.

uint8_t dnode::dn_next_nlevels[TXG_SIZE]

Definition at line 197 of file dnode.h.

Definition at line 189 of file dnode.h.

kcondvar_t dnode::dn_notxholds

Definition at line 227 of file dnode.h.

uint64_t dnode::dn_object

Definition at line 170 of file dnode.h.

Definition at line 169 of file dnode.h.

old phys dn_flags

Definition at line 260 of file dnode.h.

uint64_t dnode::dn_oldgid

Definition at line 261 of file dnode.h.

uint64_t dnode::dn_olduid

Definition at line 261 of file dnode.h.

old phys used bytes

Definition at line 259 of file dnode.h.

pointer into dn->dn_dbuf->db.db_data

Definition at line 173 of file dnode.h.

avl_tree_t dnode::dn_ranges[TXG_SIZE]

Definition at line 223 of file dnode.h.

uint8_t dnode::dn_rm_spillblk[TXG_SIZE]

for removing spill blk

Definition at line 200 of file dnode.h.

Protects the structure of the dnode, including the number of levels of indirection (dn_nlevels), dn_maxblkid, and dn_next_*.

Definition at line 161 of file dnode.h.

Definition at line 235 of file dnode.h.

object type

Definition at line 183 of file dnode.h.

holds prefetch structure

Definition at line 267 of file dnode.h.

Definition at line 253 of file dnode.h.


The documentation for this struct was generated from the following file:
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines