zfsvfs 定義
struct zfsvfs {
vfs_t *z_vfs; /* generic fs struct */
zfsvfs_t *z_parent; /* parent fs */
objset_t *z_os; /* objset reference */
uint64_t z_root; /* id of root znode */
uint64_t z_unlinkedobj; /* id of unlinked zapobj */
uint64_t z_max_blksz; /* maximum block size for files */
uint64_t z_fuid_obj; /* fuid table object number */
uint64_t z_fuid_size; /* fuid table size */
avl_tree_t z_fuid_idx; /* fuid tree keyed by index */
avl_tree_t z_fuid_domain; /* fuid tree keyed by domain */
krwlock_t z_fuid_lock; /* fuid lock */
boolean_t z_fuid_loaded; /* fuid tables are loaded */
boolean_t z_fuid_dirty; /* need to sync fuid table ? */
struct zfs_fuid_info *z_fuid_replay; /* fuid info for replay */
zilog_t *z_log; /* intent log pointer */
uint_t z_acl_mode; /* acl chmod/mode behavior */
uint_t z_acl_inherit; /* acl inheritance behavior */
zfs_case_t z_case; /* case-sense */
boolean_t z_utf8; /* utf8-only */
int z_norm; /* normalization flags */
boolean_t z_atime; /* enable atimes mount option */
boolean_t z_unmounted; /* unmounted */
rrwlock_t z_teardown_lock;
krwlock_t z_teardown_inactive_lock;
list_t z_all_znodes; /* all vnodes in the fs */
kmutex_t z_znodes_lock; /* lock for z_all_znodes */
vnode_t *z_ctldir; /* .zfs directory pointer */
boolean_t z_show_ctldir; /* expose .zfs in the root dir */
boolean_t z_issnap; /* true if this is a snapshot */
boolean_t z_vscan; /* virus scan on/off */
boolean_t z_use_fuids; /* version allows fuids */
boolean_t z_replay; /* set during ZIL replay */
boolean_t z_use_sa; /* version allow system attributes */
uint64_t z_version; /* ZPL version */
uint64_t z_shares_dir; /* hidden shares dir */
kmutex_t z_lock;
uint64_t z_userquota_obj;
uint64_t z_groupquota_obj;
uint64_t z_replay_eof; /* New end of file - replay only */
sa_attr_type_t *z_attr_table; /* SA attr mapping->id */
#define ZFS_OBJ_MTX_SZ 64
kmutex_t z_hold_mtx[ZFS_OBJ_MTX_SZ]; /* znode hold locks */
};
サンプルデータ
> 0t592::pid2proc |::pfiles -p
FD TYPE VNODE PATH
0 DIR ffffff01cd29a840 /
1 DIR ffffff01cd29a840 /
2 DIR ffffff01cd29a840 /
3 DOOR ffffff01e09f1380 /system/volatile/name_service_door
4 CHR ffffff01e0702600 /devices/pseudo/sysmsg@0:sysmsg
5 REG ffffff01d0d28100 /var/adm/messages
6 REG ffffff01da061b40 /var/log/syslog
7 CHR ffffff01e7964500 /devices/pseudo/log@0:log
8 DOOR ffffff01e7964200
> ffffff01d0d28100::print -a vnode_t v_data
ffffff01d0d28110 v_data = 0xffffff01d1346148
> 0xffffff01d1346148::print znode_t z_zfsvfs
z_zfsvfs = 0xffffff01d2e2e480
> 0xffffff01d2e2e480::print zfsvfs_t
{
z_vfs = 0xffffff01cf7081e8
z_parent = 0xffffff01d2e2e480
z_os = 0xffffff01d1faea00
z_root = 0x4
z_unlinkedobj = 0x3
z_max_blksz = 0x20000
z_fuid_obj = 0
z_fuid_size = 0
z_fuid_idx = {
avl_root = 0
avl_compar = 0
avl_offset = 0
avl_numnodes = 0
avl_size = 0
}
z_fuid_domain = {
avl_root = 0
avl_compar = 0
avl_offset = 0
avl_numnodes = 0
avl_size = 0
}
z_fuid_lock = {
_opaque = [ 0 ]
}
z_fuid_loaded = 0 (B_FALSE)
z_fuid_dirty = 0 (B_FALSE)
z_fuid_replay = 0
z_log = 0xffffff01d096d380
z_acl_inherit = 0x4
z_acl_mode = 0
z_case = 0x2 (ZFS_CASE_MIXED)
z_utf8 = 0 (B_FALSE)
z_norm = 0x2
z_atime = 0x1 (B_TRUE)
z_unmounted = 0 (B_FALSE)
z_teardown_lock = {
rr_lock = {
_opaque = [ 0 ]
}
rr_cv = {
_opaque = 0
}
rr_writer = 0
rr_anon_rcount = {
rc_count = 0
}
rr_linked_rcount = {
rc_count = 0
}
rr_writer_wanted = 0 (B_FALSE)
}
z_teardown_inactive_lock = {
_opaque = [ 0 ]
}
z_all_znodes = {
list_size = 0x118
list_offset = 0xf8
list_head = {
list_next = 0xffffff01d398eae8
list_prev = 0xffffff01d32fc240
}
}
z_znodes_lock = {
_opaque = [ 0 ]
}
z_ctldir = 0xffffff01d3121b80
z_show_ctldir = 0 (B_FALSE)
z_issnap = 0 (B_FALSE)
z_vscan = 0 (B_FALSE)
z_use_fuids = 0x1 (B_TRUE)
z_replay = 0 (B_FALSE)
z_use_sa = 0x1 (B_TRUE)
z_version = 0x5
z_shares_dir = 0x7
z_lock = {
_opaque = [ 0 ]
}
z_userquota_obj = 0
z_groupquota_obj = 0
z_replay_eof = 0
z_attr_table = 0xffffff01d387d5c8
z_tslabel = 0
z_hold_mtx = [
{
_opaque = [ 0 ]
},
{
_opaque = [ 0 ]
},
{
_opaque = [ 0 ]
},
... ]
}
0 件のコメント:
コメントを投稿