zfsvfs

2012/10/16

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 件のコメント:

コメントを投稿