161 dnode_phys_t *dn_phys; /* pointer into dn->dn_dbuf->db.db_data */
162
163 /*
164 * Copies of stuff in dn_phys. They're valid in the open
165 * context (eg. even before the dnode is first synced).
166 * Where necessary, these are protected by dn_struct_rwlock.
167 */
168 dmu_object_type_t dn_type; /* object type */
169 uint16_t dn_bonuslen; /* bonus length */
170 uint8_t dn_bonustype; /* bonus type */
171 uint8_t dn_nblkptr; /* number of blkptrs (immutable) */
172 uint8_t dn_checksum; /* ZIO_CHECKSUM type */
173 uint8_t dn_compress; /* ZIO_COMPRESS type */
174 uint8_t dn_nlevels;
175 uint8_t dn_indblkshift;
176 uint8_t dn_datablkshift; /* zero if blksz not power of 2! */
177 uint8_t dn_moved; /* Has this dnode been moved? */
178 uint16_t dn_datablkszsec; /* in 512b sectors */
179 uint32_t dn_datablksz; /* in bytes */
180 uint64_t dn_maxblkid;
181 uint8_t dn_next_nblkptr[TXG_SIZE];
182 uint8_t dn_next_nlevels[TXG_SIZE];
183 uint8_t dn_next_indblkshift[TXG_SIZE];
184 uint8_t dn_next_bonustype[TXG_SIZE];
185 uint8_t dn_rm_spillblk[TXG_SIZE]; /* for removing spill blk */
186 uint16_t dn_next_bonuslen[TXG_SIZE];
187 uint32_t dn_next_blksz[TXG_SIZE]; /* next block size in bytes */
188
189 /* protected by dn_dbufs_mtx; declared here to fill 32-bit hole */
190 uint32_t dn_dbufs_count; /* count of dn_dbufs */
191 /* There are no level-0 blocks of this blkid or higher in dn_dbufs */
192 uint64_t dn_unlisted_l0_blkid;
193
194 /* protected by os_lock: */
195 list_node_t dn_dirty_link[TXG_SIZE]; /* next on dataset's dirty */
196
197 /* protected by dn_mtx: */
198 kmutex_t dn_mtx;
199 list_t dn_dirty_records[TXG_SIZE];
200 avl_tree_t dn_ranges[TXG_SIZE];
|
161 dnode_phys_t *dn_phys; /* pointer into dn->dn_dbuf->db.db_data */
162
163 /*
164 * Copies of stuff in dn_phys. They're valid in the open
165 * context (eg. even before the dnode is first synced).
166 * Where necessary, these are protected by dn_struct_rwlock.
167 */
168 dmu_object_type_t dn_type; /* object type */
169 uint16_t dn_bonuslen; /* bonus length */
170 uint8_t dn_bonustype; /* bonus type */
171 uint8_t dn_nblkptr; /* number of blkptrs (immutable) */
172 uint8_t dn_checksum; /* ZIO_CHECKSUM type */
173 uint8_t dn_compress; /* ZIO_COMPRESS type */
174 uint8_t dn_nlevels;
175 uint8_t dn_indblkshift;
176 uint8_t dn_datablkshift; /* zero if blksz not power of 2! */
177 uint8_t dn_moved; /* Has this dnode been moved? */
178 uint16_t dn_datablkszsec; /* in 512b sectors */
179 uint32_t dn_datablksz; /* in bytes */
180 uint64_t dn_maxblkid;
181 uint8_t dn_next_type[TXG_SIZE];
182 uint8_t dn_next_nblkptr[TXG_SIZE];
183 uint8_t dn_next_nlevels[TXG_SIZE];
184 uint8_t dn_next_indblkshift[TXG_SIZE];
185 uint8_t dn_next_bonustype[TXG_SIZE];
186 uint8_t dn_rm_spillblk[TXG_SIZE]; /* for removing spill blk */
187 uint16_t dn_next_bonuslen[TXG_SIZE];
188 uint32_t dn_next_blksz[TXG_SIZE]; /* next block size in bytes */
189
190 /* protected by dn_dbufs_mtx; declared here to fill 32-bit hole */
191 uint32_t dn_dbufs_count; /* count of dn_dbufs */
192 /* There are no level-0 blocks of this blkid or higher in dn_dbufs */
193 uint64_t dn_unlisted_l0_blkid;
194
195 /* protected by os_lock: */
196 list_node_t dn_dirty_link[TXG_SIZE]; /* next on dataset's dirty */
197
198 /* protected by dn_mtx: */
199 kmutex_t dn_mtx;
200 list_t dn_dirty_records[TXG_SIZE];
201 avl_tree_t dn_ranges[TXG_SIZE];
|