ラベル zfs の投稿を表示しています。 すべての投稿を表示
ラベル zfs の投稿を表示しています。 すべての投稿を表示

ZFSストレージ

2013/05/09

動画のマシンのパーツ
XIGMATEK UTGARD CPC-T90DB
RaidSonic ICY BOX IB-554SSK

どちらも日本での入手が難しい。そこで日本で手に入るパーツを探してみると下記が見つかった。

ケース
Antec - Nine Hundred Two V3
Antec - Twelve Hundred V3


リムーバブルドライブ
CENTURY CWRS5-BK2
CENTURY CWRS3-BK2


マザーボード
GIGABYTE GA-990FXA-UD5
SATA3 6Gbps x 8 ポート!


SATAポートを節約するために、OSはUSBメモリにインストール
SONY USM16GP


そして組んだのがこれ。OSはSolaris 11.1を使用


結構早かったsmb共有でのベンチマーク結果(左側)
 

左側はCorega CG-NSC4501GTの結果
Read more ...

dmu_buf

2012/10/21

dmu_buf 定義

typedef struct dmu_buf {
        uint64_t db_object;         /* この buffer が所属する object */
        uint64_t db_offset;         /* この object 中の byte offset */
        uint64_t db_size;           /* buffer のサイズ(byte) */
       void *db_data;              /* buffer 中の data */
} dmu_buf_t;

dmu_buf_impl 定義

typedef struct dmu_buf_impl {
        /*
         * 以下のメンバーは db_mtx によって保護されており、
         * db.db_data を除いて、不変です。
         */

        /* 公開されるている構造体 */
        dmu_buf_t db;

        /* 所属する objset */
        struct objset *db_objset;

        /*
         * dnode に安全にアクセスするための handle (NULL when evicted)
         */
        struct dnode_handle *db_dnode_handle;

        /*
         * our parent buffer; if the dnode points to us directly,
         * db_parent == db_dnode_handle->dnh_dnode->dn_dbuf
         * only accessed by sync thread ???
         * (NULL when evicted)
         * May change from NULL to non-NULL under the protection of db_mtx
         * (see dbuf_check_blkptr())
         */
        struct dmu_buf_impl *db_parent;

        /*
         * link for hash table of all dmu_buf_impl_t's
         */
        struct dmu_buf_impl *db_hash_next;

        /* our block number */
        uint64_t db_blkid;

        /*
         * Pointer to the blkptr_t which points to us. May be NULL if we
         * don't have one yet. (NULL when evicted)
         */
        blkptr_t *db_blkptr;

        /*
         * Our indirection level.  Data buffers have db_level==0.
         * Indirect buffers which point to data buffers have
         * db_level==1. etc.  Buffers which contain dnodes have
         * db_level==0, since the dnodes are stored in a file.
         */
        uint8_t db_level;

        /* db_mtx protects the members below */
        kmutex_t db_mtx;

        /*
         * Current state of the buffer
         */
        dbuf_states_t db_state;

        /*
         * Refcount accessed by dmu_buf_{hold,rele}.
         * If nonzero, the buffer can't be destroyed.
         * Protected by db_mtx.
         */
        refcount_t db_holds;

        /* buffer holding our data */
        arc_buf_t *db_buf;

        kcondvar_t db_changed;
        dbuf_dirty_record_t *db_data_pending;

        /* pointer to most recent dirty record for this buffer */
        dbuf_dirty_record_t *db_last_dirty;

        /*
         * Our link on the owner dnodes's dn_dbufs list.
         * Protected by its dn_dbufs_mtx.
         */
        list_node_t db_link;

        /* Data which is unique to data (leaf) blocks: */

        /* stuff we store for the user (see dmu_buf_set_user) */
        void *db_user_ptr;
        void **db_user_data_ptr_ptr;
        dmu_buf_evict_func_t *db_evict_func;

        uint8_t db_immediate_evict;
        uint8_t db_freed_in_flight;

        uint8_t db_dirtycnt;
} dmu_buf_impl_t;

サンプルデータ

# mdb -k
> !ls -li /var/adm
total 14144
      1067 drwxrwxr-x   5 adm      adm            5 10月 21日 2011年 acct
      6155 -rw-------   1 uucp     bin            0 10月 21日 2011年 aculog
      1070 drwxr-xr-x   2 adm      adm            4  7月 25日  16:58 exacct
     12389 -r--r--r--   1 root     root          28 10月 19日  16:13 lastlog
      1068 drwxr-xr-x   2 adm      adm            2 10月 21日 2011年 log
    438616 -rw-r--r--   1 root     root           0 10月 17日  03:10 messages
    438556 -rw-r--r--   1 root     root        3566 10月 16日  11:35 messages.0
    438505 -rw-r--r--   1 root     root        1242 10月  9日  11:00 messages.1
    438452 -rw-r--r--   1 root     root         133  9月 28日  18:08 messages.2
    413763 -rw-r--r--   1 root     root      241942  9月 25日  16:24 messages.3
      1069 drwxr-xr-x   2 root     sys            2 10月 21日 2011年 pool
      1066 drwxrwxr-x   2 adm      sys            2 10月 21日 2011年 sa
      1064 drwxr-xr-x   2 root     sys            2 10月 21日 2011年 sm.bin
      1065 drwxr-xr-x   2 root     sys            2 10月 21日 2011年 streams
    315396 -rw-------   1 root     root        1366  3月 20日 2000年 sulog
      6154 lrwxrwxrwx   1 root     root          27  2月 21日 2012年 utmpx -> ../../system/volatile/utmpx
      6153 -rw-r--r--   1 adm      adm      6818760 10月 19日  16:13 wtmpx
> ::dbufs -n rpool/ROOT/solaris-4/var -o 0t438556
0x3001e0aa1c8
0x3082ab43e18
> 0x3001e0aa1c8::dbuf
        addr object lvl blkid holds os
3001e0aa1c8    6b11c 0     bonus  1 rpool/ROOT/solaris-4/var
> 3001e0aa1c8::print -a dmu_buf_impl_t
3001e0aa1c8 {
    3001e0aa1c8 db = {
        3001e0aa1c8 db_object = 0x6b11c
        3001e0aa1d0 db_offset = 0xffffffffffffffff
        3001e0aa1d8 db_size = 0x140
        3001e0aa1e0 db_data = 0x30010943800
    }
    3001e0aa1e8 db_objset = 0x300121fdb80
    3001e0aa1f0 db_dnode_handle = 0x3082b0650d0
    3001e0aa1f8 db_parent = 0x30a662dc9e0
    3001e0aa200 db_hash_next = 0
    3001e0aa208 db_blkid = 0xffffffffffffffff
    3001e0aa210 db_blkoff = 0
    3001e0aa214 db_level = 0
    3001e0aa218 db_mtx = {
        3001e0aa218 _opaque = [ 0 ]
    }
    3001e0aa220 db_birth = 0
    3001e0aa228 db_state = 4 (DB_CACHED)
    3001e0aa230 db_holds = {
        3001e0aa230 rc_count = 0x1
    }
    3001e0aa238 db_writers_waiting = 0
    3001e0aa240 db_ref = 0x3001200fdf0
    3001e0aa248 db_changed = {
        3001e0aa248 _opaque = 0
    }
    3001e0aa250 db_last_dirty = 0
    3001e0aa258 db_data_pending = 0
    3001e0aa260 db_link = {
        3001e0aa260 list_next = 0
        3001e0aa268 list_prev = 0
    }
    3001e0aa270 db_user_ptr = 0x300153f27d8
    3001e0aa278 db_user_data_ptr_ptr = 0
    3001e0aa280 db_evict_func = sa_evict
    3001e0aa288 db_immediate_evict = 0x1
    3001e0aa289 db_freed_in_flight = 0
    3001e0aa28a db_managed = 0x1
    3001e0aa28b db_dirtycnt = 0
}
Read more ...

objset

2012/10/17

objset 定義

struct objset {
        /* Immutable: */
        struct dsl_dataset *os_dsl_dataset;
        spa_t *os_spa;
        arc_buf_t *os_phys_buf;
        objset_phys_t *os_phys;
        /*
         * The following "special" dnodes have no parent and are exempt from
         * dnode_move(), but they root their descendents in this objset using
         * handles anyway, so that all access to dnodes from dbufs consistently
         * uses handles.
         */
        dnode_handle_t os_meta_dnode;
        dnode_handle_t os_userused_dnode;
        dnode_handle_t os_groupused_dnode;
        zilog_t *os_zil;

        /* can change, under dsl_dir's locks: */
        uint8_t os_checksum;
        uint8_t os_compress;
        uint8_t os_copies;
        uint8_t os_dedup_checksum;
        uint8_t os_dedup_verify;
        uint8_t os_logbias;
        uint8_t os_primary_cache;
        uint8_t os_secondary_cache;
        uint8_t os_sync;

        /* no lock needed: */
        struct dmu_tx *os_synctx; /* XXX sketchy */
        blkptr_t *os_rootbp;
        zil_header_t os_zil_header;
        list_t os_synced_dnodes;
        uint64_t os_flags;

        /* Protected by os_obj_lock */
        kmutex_t os_obj_lock;
        uint64_t os_obj_next;

        /* Protected by os_lock */
        kmutex_t os_lock;
        list_t os_dirty_dnodes[TXG_SIZE];
        list_t os_free_dnodes[TXG_SIZE];
        list_t os_dnodes;
        list_t os_downgraded_dbufs;

        /* stuff we store for the user */
        kmutex_t os_user_ptr_lock;
        void *os_user_ptr;

        /* SA layout/attribute registration */
        sa_os_t *os_sa;
};

サンプルデータ

> 0t602::pid2proc |::pfiles -p
FD   TYPE            VNODE PATH
   0  DIR ffffff01cd29a840 /
   1  DIR ffffff01cd29a840 /
   2  DIR ffffff01cd29a840 /
   3 DOOR ffffff01e111a080 /system/volatile/name_service_door
   4  CHR ffffff01e0fc3e80 /devices/pseudo/sysmsg@0:sysmsg
   5  REG ffffff01d9f06b40 /var/adm/messages
   6  REG ffffff01e047d940 /var/log/syslog
   7  CHR ffffff01e0fc3280 /devices/pseudo/log@0:log
   8 DOOR ffffff01ec9a0b00
> ffffff01d9f06b40::print vnode_t v_data
v_data = 0xffffff01d9f05d28
> 0xffffff01d9f05d28::print znode_t z_zfsvfs
z_zfsvfs = 0xffffff01d1e5c080
> 0xffffff01d1e5c080::print zfsvfs_t z_os
z_os = 0xffffff01cf675900
> 0xffffff01cf675900::print objset_t
{
    os_dsl_dataset = 0xffffff01d172b9c0
    os_spa = 0xffffff01cda50000
    os_phys_buf = 0xffffff01d6c47d88
    os_phys = 0xffffff01cf433800
    os_meta_dnode = {
        dnh_rwlock = {
            _opaque = [ 0 ]
        }
        dnh_dnode = 0xffffff01d6c3d658
    }
    os_userused_dnode = {
        dnh_rwlock = {
            _opaque = [ 0 ]
        }
        dnh_dnode = 0xffffff01d6c3d948
    }
    os_groupused_dnode = {
        dnh_rwlock = {
            _opaque = [ 0 ]
        }
        dnh_dnode = 0xffffff01d6c3dc38
    }
    os_zil = 0xffffff01d313e1c0
    os_checksum = 0x7
    os_compress = 0x2
    os_copies = 0x1
    os_dedup_checksum = 0x2
    os_dedup_verify = 0
    os_logbias = 0
    os_primary_cache = 0x2
    os_secondary_cache = 0x2
    os_sync = 0
    os_crypt = 0x2
    os_synctx = 0xffffff01ecaa4960
    os_last_sync = 0x295a
    os_initializing = 0 (B_FALSE)
    os_zil_header = {
        zh_claim_txg = 0
        zh_replay_seq = 0
        zh_log = {
            blk_dva = [
                {
                    dva_word = [ 0x48, 0x102ff63 ]
                },
                {
                    dva_word = [ 0, 0 ]
                },
                {
                    dva_word = [ 0, 0 ]
                },
            ]
            blk_prop = 0x8009090200470047
            blk_pad = [ 0, 0 ]
            blk_phys_birth = 0
            blk_birth = 0x2958
            blk_fill = 0
            blk_cksum = {
                zc_word = [ 0x367aae96ac0e7439, 0xc383ae890100e6d8, 0x3c, 0x4a ]
            }
        }
        zh_claim_blk_seq = 0
        zh_flags = 0
        zh_claim_lr_seq = 0
        zh_pad = [ 0, 0, 0 ]
    }
    os_synced_dnodes = {
        list_size = 0x2f0
        list_offset = 0xb8
        list_head = {
            list_next = 0xffffff01cf675a50
            list_prev = 0xffffff01cf675a50
        }
    }
    os_flags = 0x1
    os_obj_lock = {
        _opaque = [ 0 ]
    }
    os_obj_next = 0x716d
    os_lock = {
        _opaque = [ 0 ]
    }
    os_dirty_dnodes = [
        {
            list_size = 0x2f0
            list_offset = 0x98
            list_head = {
                list_next = 0xffffff01cf675a90
                list_prev = 0xffffff01cf675a90
            }
        },
        {
            list_size = 0x2f0
            list_offset = 0xa8
            list_head = {
                list_next = 0xffffff01cf675ab0
                list_prev = 0xffffff01cf675ab0
            }
        },
        {
            list_size = 0x2f0
            list_offset = 0xb8
            list_head = {
                list_next = 0xffffff01cf675ad0
                list_prev = 0xffffff01cf675ad0
            }
        },
        {
            list_size = 0x2f0
            list_offset = 0xc8
            list_head = {
                list_next = 0xffffff01cf675af0
                list_prev = 0xffffff01cf675af0
            }
        },
    ]
    os_free_dnodes = [
        {
            list_size = 0x2f0
            list_offset = 0x98
            list_head = {
                list_next = 0xffffff01cf675b10
                list_prev = 0xffffff01cf675b10
            }
        },
        {
            list_size = 0x2f0
            list_offset = 0xa8
            list_head = {
                list_next = 0xffffff01cf675b30
                list_prev = 0xffffff01cf675b30
            }
        },
        {
            list_size = 0x2f0
            list_offset = 0xb8
            list_head = {
                list_next = 0xffffff01cf675b50
                list_prev = 0xffffff01cf675b50
            }
        },
        {
            list_size = 0x2f0
            list_offset = 0xc8
            list_head = {
                list_next = 0xffffff01cf675b70
                list_prev = 0xffffff01cf675b70
            }
        },
    ]
    os_dnodes = {
        list_size = 0x2f0
        list_offset = 0x8
        list_head = {
            list_next = 0xffffff01ee99ecc8
            list_prev = 0xffffff01d6c3d660
        }
    }
    os_downgraded_dbufs = {
        list_size = 0xc8
        list_offset = 0x98
        list_head = {
            list_next = 0xffffff01cf675bb0
            list_prev = 0xffffff01cf675bb0
        }
    }
    os_user_ptr_lock = {
        _opaque = [ 0 ]
    }
    os_user_ptr = 0xffffff01d1e5c080
    os_sa = 0xffffff01d392b510
    os_destroy_nokey = 0 (B_FALSE)
}

Read more ...

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 ]
        },
    ... ]
}


Read more ...

vnode

2012/10/14

vnode 定義

typedef struct vnode {
        kmutex_t        v_lock;         /* protects vnode fields */
        uint_t          v_flag;         /* vnode flags (see below) */
        uint_t          v_count;        /* reference count */
        void            *v_data;        /* private data for fs */
        struct vfs      *v_vfsp;        /* ptr to containing VFS */
        struct stdata   *v_stream;      /* associated stream */
        enum vtype      v_type;         /* vnode type */
        dev_t           v_rdev;         /* device (VCHR, VBLK) */

        /* PRIVATE FIELDS BELOW - DO NOT USE */

        struct vfs      *v_vfsmountedhere; /* ptr to vfs mounted here */
        struct vnodeops *v_op;          /* vnode operations */
        struct page     *v_pages;       /* vnode pages list */
        struct filock   *v_filocks;     /* ptr to filock list */
        struct shrlocklist *v_shrlocks; /* ptr to shrlock list */
        krwlock_t       v_nbllock;      /* sync for NBMAND locks */
        kcondvar_t      v_cv;           /* synchronize locking */
        void            *v_locality;    /* hook for locality info */
        struct fem_head *v_femhead;     /* fs monitoring */
        char            *v_path;        /* cached path */
        uint_t          v_rdcnt;        /* open for read count  (VREG only) */
        uint_t          v_wrcnt;        /* open for write count (VREG only) */
        u_longlong_t    v_mmap_read;    /* mmap read count */
        u_longlong_t    v_mmap_write;   /* mmap write count */
        void            *v_mpssdata;    /* info for large page mappings */
        void            *v_fopdata;     /* list of file ops event watches */
        kmutex_t        v_vsd_lock;     /* protects v_vsd field */
        struct vsd_node *v_vsd;         /* vnode specific data */
        struct vnode    *v_xattrdir;    /* unnamed extended attr dir (GFS) */
        uint_t          v_count_dnlc;   /* dnlc reference count */
} vnode_t;

サンプルデータ

# mdb -k
> 0t604::pid2proc |::pfiles -p
FD   TYPE            VNODE PATH
   0  DIR ffffff01cd29a840 /
   1  DIR ffffff01cd29a840 /
   2  DIR ffffff01cd29a840 /
   3 DOOR ffffff01e17bd780 /system/volatile/name_service_door
   4  CHR ffffff01e10e4140 /devices/pseudo/sysmsg@0:sysmsg
   5  REG ffffff01df742940 /var/adm/messages
   6  REG ffffff01dc237940 /var/log/syslog
   7  CHR ffffff01e10ac840 /devices/pseudo/log@0:log
   8 DOOR ffffff01e1c94b00
> ffffff01df742940::print -a vnode_t
ffffff01df742940 {
    ffffff01df742940 v_lock = {
        ffffff01df742940 _opaque = [ 0 ]
    }
    ffffff01df742948 v_flag = 0x10000
    ffffff01df74294c v_count = 0x2
    ffffff01df742950 v_data = 0xffffff01df740c18
    ffffff01df742958 v_vfsp = 0xffffff01cf7121e8
    ffffff01df742960 v_stream = 0
    ffffff01df742968 v_type = 1 (VREG)
    ffffff01df742970 v_rdev = 0xffffffffffffffff
    ffffff01df742978 v_vfsmountedhere = 0
    ffffff01df742980 v_op = 0xffffff01cd292a80
    ffffff01df742988 v_pages = 0
    ffffff01df742990 v_filocks = 0
    ffffff01df742998 v_shrlocks = 0
    ffffff01df7429a0 v_nbllock = {
        ffffff01df7429a0 _opaque = [ 0 ]
    }
    ffffff01df7429a8 v_cv = {
        ffffff01df7429a8 _opaque = 0
    }
    ffffff01df7429aa v_pad = 0xbadd
    ffffff01df7429ac v_count_dnlc = 0x1
    ffffff01df7429b0 v_locality = 0
    ffffff01df7429b8 v_femhead = 0
    ffffff01df7429c0 v_path = 0xffffff01e1074be8 "/var/adm/messages"
    ffffff01df7429c8 v_rdcnt = 0
    ffffff01df7429cc v_wrcnt = 0x1
    ffffff01df7429d0 v_mmap_read = 0
    ffffff01df7429d8 v_mmap_write = 0
    ffffff01df7429e0 v_mpssdata = 0
    ffffff01df7429e8 v_fopdata = 0
    ffffff01df7429f0 v_vsd_lock = {
        ffffff01df7429f0 _opaque = [ 0 ]
    }
    ffffff01df7429f8 v_vsd = 0
    ffffff01df742a00 v_xattrdir = 0
    ffffff01df742a08 v_fw = 0xffffff01df742908
}
Read more ...

znode

2012/10/14

znode 定義

typedef struct znode {
        struct zfsvfs    *z_zfsvfs;
        vnode_t          *z_vnode;
        uint64_t         z_id;           /* この znode の object ID */
        kmutex_t         z_lock;         /* znode modification lock */
        krwlock_t        z_parent_lock;  /* parent lock for directories */
        krwlock_t        z_name_lock;    /* "master" lock for dirent locks */
        zfs_dirlock_t    *z_dirlocks;    /* directory entry lock list */
        kmutex_t         z_range_lock;   /* protects changes to z_range_avl */
        avl_tree_t       z_range_avl;    /* avl tree of file range locks */
        uint8_t          z_unlinked;     /* file has been unlinked */
        uint8_t          z_atime_dirty;  /* atime needs to be synced */
        uint8_t          z_zn_prefetch;  /* Prefetch znodes? */
        uint8_t          z_moved;        /* Has this znode been moved? */
        uint_t           z_blksz;        /* block size in bytes */
        uint_t           z_seq;          /* modification sequence number */
        uint64_t         z_mapcnt;       /* number of pages mapped to file */
        uint64_t         z_gen;          /* generation (cached) */
        uint64_t         z_size;         /* file size (cached) */
        uint64_t         z_atime[2];     /* atime (cached) */
>        uint64_t        z_links;        /* file links (cached) */
        uint64_t         z_pflags;       /* pflags (cached) */
        uint64_t         z_uid;          /* uid fuid (cached) */
        uint64_t         z_gid;          /* gid fuid (cached) */
        mode_t           z_mode;         /* mode (cached) */
        uint32_t         z_sync_cnt;     /* synchronous open count */
        kmutex_t         z_acl_lock;     /* acl data lock */
        zfs_acl_t        *z_acl_cached;  /* cached acl */
        list_node_t      z_link_node;    /* all znodes in fs link */
        sa_handle_t      *z_sa_hdl;      /* handle to sa data */
        boolean_t        z_is_sa;        /* are we native sa? */
} znode_t;

サンプルデータ

> 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 = 0xffffff01d2e2e480
    z_vnode = 0xffffff01d0d28100
    z_id = 0x7258
    z_lock = {
        _opaque = [ 0 ]
    }
    z_parent_lock = {
        _opaque = [ 0 ]
    }
    z_name_lock = {
        _opaque = [ 0 ]
    }
    z_dirlocks = 0
    z_range_lock = {
        _opaque = [ 0 ]
    }
    z_range_avl = {
        avl_root = 0
        avl_compar = zfs_range_compare
        avl_offset = 0x8
        avl_numnodes = 0
        avl_size = 0x40
    }
    z_unlinked = 0
    z_atime_dirty = 0
    z_zn_prefetch = 0xdd
    z_moved = 0
    z_blksz = 0x1c800
    z_seq = 0x7a473a
    z_mapcnt = 0
    z_gen = 0x162d
    z_size = 0x1c7f9
    z_atime = [ 0x5071c579, 0xb409b9 ]
    z_mtime = [ 0x507c2a88, 0x2dfebeea ]
    z_ctime = [ 0x507c2a88, 0x2dfebeea ]
    z_links = 0x1
    z_pflags = 0x40800000204
    z_uid = 0
    z_gid = 0
    z_mode = 0x81a4
    z_sync_cnt = 0
    z_acl_lock = {
        _opaque = [ 0 ]
    }
    z_acl_cached = 0xffffff01df7b85c0
    z_link_node = {
        list_next = 0xffffff01d0c22108
        list_prev = 0xffffff01dfb1aaf0
    }
    z_sa_hdl = 0xffffff01d11404d0
    z_is_sa = 0x1 (B_TRUE)
}
Read more ...

ディスク上のデータを取り出してみる

2012/10/08
# zpool status pool: rpool state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 c3t0d0s0 ONLINE 0 0 0
# dd if=/dev/rdsk/c3t0d0s0 of=block bs=1024 count=1024

Blank Space(0x00000000~0x00001fff)

ADDRESS   00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  0123456789ABCDEF
----------------------------------------------------------------------------
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
    :
    :
00001FE0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00001FF0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 

Boot Header(0x00002000~0x00003fff)

ADDRESS   00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  0123456789ABCDEF
----------------------------------------------------------------------------
00002000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00002010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
    :
    :
00003FB0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00003FC0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00003FD0  00 00 00 00 00 00 00 00  11 7A 0C B1 7A DA 10 02  .........z.アzレ.. 
00003FE0  3F 2A 6E 7F 80 8F F4 97  FC CE AA 58 16 9F 90 AF  ?*n€畳聯ホェX.汾ッ 
00003FF0  8B B4 6D FF 57 EA D1 CB  AB 5F 46 0D DB 92 C6 6E  橋mW・ヒォ_F.ロ槌n 

Key/Value Pairs(0x00004000~0x0001ffff)

ADDRESS   00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  0123456789ABCDEF
----------------------------------------------------------------------------
00004000  01 01 00 00 00 00 00 00  00 00 00 01 00 00 00 24  ...............$ 
00004010  00 00 00 20 00 00 00 07  76 65 72 73 69 6F 6E 00  ... ....version. 
00004020  00 00 00 08 00 00 00 01  00 00 00 00 00 00 00 21  ...............! 
00004030  00 00 00 24 00 00 00 20  00 00 00 04 6E 61 6D 65  ...$... ....name 
00004040  00 00 00 09 00 00 00 01  00 00 00 05 72 70 6F 6F  ............rpoo 
00004050  6C 00 00 00 00 00 00 24  00 00 00 20 00 00 00 05  l......$... .... 
00004060  73 74 61 74 65 00 00 00  00 00 00 08 00 00 00 01  state........... 
00004070  00 00 00 00 00 00 00 00  00 00 00 20 00 00 00 20  ........... ...  
00004080  00 00 00 03 74 78 67 00  00 00 00 08 00 00 00 01  ....txg......... 
00004090  00 00 00 00 00 00 11 52  00 00 00 28 00 00 00 28  .......R...(...( 
000040A0  00 00 00 09 70 6F 6F 6C  5F 67 75 69 64 00 00 00  ....pool_guid... 
000040B0  00 00 00 08 00 00 00 01  2C F3 B2 86 89 A7 E6 74  ........,・ァ誥 
000040C0  00 00 00 28 00 00 00 28  00 00 00 09 74 69 6D 65  ...(...(....time 
000040D0  73 74 61 6D 70 00 00 00  00 00 00 08 00 00 00 01  stamp........... 
000040E0  00 00 00 00 50 71 35 94  00 00 00 24 00 00 00 20  ....Pq5・..$...  
000040F0  00 00 00 06 68 6F 73 74  69 64 00 00 00 00 00 08  ....hostid...... 
00004100  00 00 00 01 00 00 00 00  00 4D 84 26 00 00 00 20  .........M・...  
00004110  00 00 00 28 00 00 00 08  68 6F 73 74 6E 61 6D 65  ...(....hostname 
00004120  00 00 00 09 00 00 00 01  00 00 00 00 00 00 00 24  ...............$ 
00004130  00 00 00 28 00 00 00 08  74 6F 70 5F 67 75 69 64  ...(....top_guid 
00004140  00 00 00 08 00 00 00 01  85 E1 2F D5 6A A8 BF 19  ........・/ユjィソ. 
00004150  00 00 00 20 00 00 00 20  00 00 00 04 67 75 69 64  ... ... ....guid 
00004160  00 00 00 08 00 00 00 01  85 E1 2F D5 6A A8 BF 19  ........・/ユjィソ. 
00004170  00 00 00 2C 00 00 00 28  00 00 00 0D 76 64 65 76  ...,...(....vdev 
00004180  5F 63 68 69 6C 64 72 65  6E 00 00 00 00 00 00 08  _children....... 
00004190  00 00 00 01 00 00 00 00  00 00 00 01 00 00 02 74  ...............t 
000041A0  00 00 00 38 00 00 00 09  76 64 65 76 5F 74 72 65  ...8....vdev_tre 
000041B0  65 00 00 00 00 00 00 13  00 00 00 01 00 00 00 00  e............... 
000041C0  00 00 00 01 00 00 00 20  00 00 00 20 00 00 00 04  ....... ... .... 
000041D0  74 79 70 65 00 00 00 09  00 00 00 01 00 00 00 04  type............ 
000041E0  64 69 73 6B 00 00 00 20  00 00 00 20 00 00 00 02  disk... ... .... 
000041F0  69 64 00 00 00 00 00 08  00 00 00 01 00 00 00 00  id.............. 
00004200  00 00 00 00 00 00 00 20  00 00 00 20 00 00 00 04  ....... ... .... 
00004210  67 75 69 64 00 00 00 08  00 00 00 01 85 E1 2F D5  guid........・/ユ 
00004220  6A A8 BF 19 00 00 00 30  00 00 00 30 00 00 00 04  jィソ....0...0.... 
00004230  70 61 74 68 00 00 00 09  00 00 00 01 00 00 00 11  path............ 
00004240  2F 64 65 76 2F 64 73 6B  2F 63 33 74 30 64 30 73  /dev/dsk/c3t0d0s 
00004250  30 00 00 00 00 00 00 58  00 00 00 50 00 00 00 05  0......X...P.... 
00004260  64 65 76 69 64 00 00 00  00 00 00 09 00 00 00 01  devid........... 
00004270  00 00 00 36 69 64 31 2C  73 64 40 53 41 54 41 5F  ...6id1,sd@SATA_ 
00004280  5F 5F 5F 5F 56 42 4F 58  5F 48 41 52 44 44 49 53  ____VBOX_HARDDIS 
00004290  4B 5F 5F 5F 5F 56 42 65  37 36 35 33 64 35 33 2D  K____VBe7653d53- 
000042A0  34 64 32 32 37 35 64 35  2F 61 00 00 00 00 00 48  4d2275d5/a.....H 
000042B0  00 00 00 48 00 00 00 09  70 68 79 73 5F 70 61 74  ...H....phys_pat 
000042C0  68 00 00 00 00 00 00 09  00 00 00 01 00 00 00 22  h.............." 
000042D0  2F 70 63 69 40 30 2C 30  2F 70 63 69 38 30 38 36  /pci@0,0/pci8086 
000042E0  2C 32 38 32 39 40 64 2F  64 69 73 6B 40 30 2C 30  ,2829@d/disk@0,0 
000042F0  3A 61 00 00 00 00 00 28  00 00 00 28 00 00 00 0A  :a.....(...(.... 
00004300  77 68 6F 6C 65 5F 64 69  73 6B 00 00 00 00 00 08  whole_disk...... 
00004310  00 00 00 01 00 00 00 00  00 00 00 00 00 00 00 2C  ..............., 
00004320  00 00 00 28 00 00 00 0E  6D 65 74 61 73 6C 61 62  ...(....metaslab 
00004330  5F 61 72 72 61 79 00 00  00 00 00 08 00 00 00 01  _array.......... 
00004340  00 00 00 00 00 00 00 1B  00 00 00 2C 00 00 00 28  ...........,...( 
00004350  00 00 00 0E 6D 65 74 61  73 6C 61 62 5F 73 68 69  ....metaslab_shi 
00004360  66 74 00 00 00 00 00 08  00 00 00 01 00 00 00 00  ft.............. 
00004370  00 00 00 1B 00 00 00 24  00 00 00 20 00 00 00 06  .......$... .... 
00004380  61 73 68 69 66 74 00 00  00 00 00 08 00 00 00 01  ashift.......... 
00004390  00 00 00 00 00 00 00 09  00 00 00 24 00 00 00 20  ...........$...  
000043A0  00 00 00 05 61 73 69 7A  65 00 00 00 00 00 00 08  ....asize....... 
000043B0  00 00 00 01 00 00 00 03  FD 6C 00 00 00 00 00 24  ........l.....$ 
000043C0  00 00 00 20 00 00 00 06  69 73 5F 6C 6F 67 00 00  ... ....is_log.. 
000043D0  00 00 00 08 00 00 00 01  00 00 00 00 00 00 00 00  ................ 
000043E0  00 00 00 28 00 00 00 28  00 00 00 0A 63 72 65 61  ...(...(....crea 
000043F0  74 65 5F 74 78 67 00 00  00 00 00 08 00 00 00 01  te_txg.......... 
00004400  00 00 00 00 00 00 00 04  00 00 00 00 00 00 00 00  ................ 
00004410  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00004420  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
    :
    :
0001FFB0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
0001FFC0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
0001FFD0  00 00 00 00 00 00 00 00  11 7A 0C B1 7A DA 10 02  .........z.アzレ.. 
0001FFE0  D3 92 9E 13 2C 6A 88 25  80 EB B0 DF 96 10 FA 34  モ寵.,j・€・゚・・ 
0001FFF0  94 78 8C 24 EB 28 6C C8  90 D9 05 AA 05 03 AE 14  肺・・lネ拙.ェ..ョ. 

Uberblock Array(0x00020000~0x0003ffff)

ADDRESS   00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  0123456789ABCDEF
----------------------------------------------------------------------------
00020000  0C B1 BA 00 00 00 00 00  21 00 00 00 00 00 00 00  .アコ.....!....... 
00020010  80 0E 00 00 00 00 00 00  8D A5 50 F4 5B E2 D4 B2  €.......婚P籌イ 
00020020  B3 E4 65 50 00 00 00 00  01 00 00 00 00 00 00 00  ウ臚P............ 
00020030  67 00 FF 00 00 00 00 00  01 00 00 00 00 00 00 00  g.............. 
00020040  09 08 60 01 00 00 00 00  01 00 00 00 00 00 00 00  ..`............. 
00020050  80 00 BC 01 00 00 00 00  03 00 00 00 03 07 0B 80  €.シ............€ 
00020060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00020070  00 00 00 00 00 00 00 00  80 0E 00 00 00 00 00 00  ........€....... 
00020080  AC 00 00 00 00 00 00 00  55 35 4B DF 0F 00 00 00  ャ.......U5K゚.... 
00020090  1A A4 4D DD 4E 06 00 00  71 C1 70 4C DD 47 01 00  .、MンN...qチpLンG.. 
000200A0  B2 29 44 24 8F 54 2D 00  21 00 00 00 00 00 00 00  イ)D$週-.!....... 
000200B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
000200C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
    :
    :
000203B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
000203C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
000203D0  00 00 00 00 00 00 00 00  11 7A 0C B1 7A DA 10 02  .........z.アzレ.. 
000203E0  BD BC 71 5D AA 4E FC 98  95 F2 84 33 F0 60 8E BA  スシq]ェN・奉・室 
000203F0  87 70 50 9F D2 44 3B 45  7B F5 32 B0 FE A5 25 58  ㎝P湟D;E{・ー・%X 

00020400  0C B1 BA 00 00 00 00 00  21 00 00 00 00 00 00 00  .アコ.....!....... 
00020410  81 0E 00 00 00 00 00 00  8D A5 50 F4 5B E2 D4 B2  ・......婚P籌イ 
00020420  D1 E4 65 50 00 00 00 00  01 00 00 00 00 00 00 00  ム臚P............ 
00020430  75 00 FF 00 00 00 00 00  01 00 00 00 00 00 00 00  u.............. 
00020440  F9 00 60 01 00 00 00 00  01 00 00 00 00 00 00 00  ・`............. 
00020450  82 00 BC 01 00 00 00 00  03 00 00 00 03 07 0B 80  ・シ............€ 
00020460  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00020470  00 00 00 00 00 00 00 00  81 0E 00 00 00 00 00 00  ........・...... 
00020480  AC 00 00 00 00 00 00 00  5A A2 90 FA 10 00 00 00  ャ.......Z「穿.... 
00020490  DC 54 84 03 C0 06 00 00  94 39 26 FA 66 5E 01 00  ワT・タ...・&曻^.. 
000204A0  ED C0 23 B4 EB 51 30 00  21 00 00 00 00 00 00 00  暲#エ・0.!....... 
000204B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
000204C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
    :
    :
000207B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
000207C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
000207D0  00 00 00 00 00 00 00 00  11 7A 0C B1 7A DA 10 02  .........z.アzレ.. 
000207E0  FC E5 0F C8 8F 6D 32 CA  E7 2B E0 0F 76 E0 5D 15  ・.ネ塾2ハ・・v濔. 
000207F0  84 88 0E 2C E5 EB B5 F0  76 BC D8 6D A3 E8 B0 39  ц.,褄オシリm」隹9 
    :
    :

データ領域(0x00400000~)

ADDRESS   00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  0123456789ABCDEF
----------------------------------------------------------------------------
00400000  03 00 00 00 00 00 00 80  FB EC E9 01 00 00 00 00  .......€隯・.... 
00400010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400040  05 00 00 00 00 00 00 00  00 00 00 00 00 00 56 45  ..............VE 
00400050  52 53 49 4F 4E 00 00 00  00 00 00 00 00 00 00 00  RSION........... 
00400060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400080  02 00 00 00 00 00 00 00  00 00 00 00 00 00 63 61  ..............ca 
00400090  73 65 73 65 6E 73 69 74  69 76 69 74 79 00 00 00  sesensitivity... 
004000A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
004000B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
004000C0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 6E 6F  ..............no 
004000D0  72 6D 61 6C 69 7A 61 74  69 6F 6E 00 00 00 00 00  rmalization..... 
004000E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
004000F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400100  02 00 00 00 00 00 00 00  00 00 00 00 00 00 53 41  ..............SA 
00400110  5F 41 54 54 52 53 00 00  00 00 00 00 00 00 00 00  _ATTRS.......... 
00400120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400140  03 00 00 00 00 00 00 00  00 00 00 00 00 00 44 45  ..............DE 
00400150  4C 45 54 45 5F 51 55 45  55 45 00 00 00 00 00 00  LETE_QUEUE...... 
00400160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
00400180  04 00 00 00 00 00 00 00  00 00 00 00 00 00 52 4F  ..............RO 
00400190  4F 54 00 00 00 00 00 00  00 00 00 00 00 00 00 00  OT.............. 
004001A0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
004001B0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
004001C0  07 00 00 00 00 00 00 00  00 00 00 00 00 00 53 48  ..............SH 
004001D0  41 52 45 53 00 00 00 00  00 00 00 00 00 00 00 00  ARES............ 
004001E0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
004001F0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................ 
    :
    :
Read more ...

zfsのディスクフォーマット

2012/10/07
Read more ...

zfsの構造体

2012/10/07
Read more ...

zfs_write - trace

2012/10/02
-> zfs_write  
  -> rrw_enter zfs_vnops.c#624
  -> rrw_enter_read  
  -> uio_prefaultpages zfs_vnops.c#674
  -> zfs_range_lock zfs_vnops.c#684
  -> zfs_range_lock_writer zfs_rlock.c#454
  -> zfs_owner_overquota zfs_vnops.c#727
  -> _uio_pagelock  
  -> dmu_tx_create zfs_vnops.c#774
  -> dmu_tx_create_dd zfs/dmu_tx.c#67
  -> dsl_dataset_prev_snap_txg dmu_tx.c#69
  -> spa_last_synced_txg dsl_dataset.c#232
  -> dmu_tx_hold_sa zfs_vnops.c#775
  -> sa_handle_object dmu_tx.c#1362
  -> dmu_tx_hold_bonus dmu_tx.c#1364
  -> dmu_tx_hold_object_impl dmu_tx.c#755
  -> dnode_hold dmu_tx.c#107
  -> dnode_hold_impl dnode.c#1143
  -> rw_write_held dnode.c#1050
  -> dbuf_whichblock dnode.c#1055
  -> dbuf_hold dnode.c#1057
  -> dbuf_hold_impl dbuf.c#1951
  -> dbuf_find dbuf.c#1872
  -> dbuf_hash dbuf.c#113
  -> dbuf_update_data dbuf.c#1931
  -> dbuf_read dnode.c#1062
  -> dmu_zfetch dbuf.c#623
  -> dmu_zfetch_find dmu_zfetch.c#663
  -> dmu_buf_get_user dnode.c#1074
  -> dbuf_rele dnode.c#1131
  -> dbuf_rele_and_unlock dbuf.c#2023
  -> dmu_tx_count_dnode dmu_tx.c#758
  -> dmu_buf_freeable  
  -> dbuf_block_freeable  
  -> dsl_dataset_block_freeable dbuf.c#2169
  -> dsl_dataset_prev_snap_txg dsl_dataset.c#241
  -> spa_last_synced_txg dsl_dataset.c#232
  -> dsl_dataset_get_spa dsl_dataset.c#244
  -> ddt_prefetch dsl_dataset.c#244
  -> dmu_tx_sa_registration_hold dmu_tx.c#1377
  -> dmu_tx_hold_write zfs_vnops.c#776
  -> dmu_tx_hold_object_impl dmu_tx.c#414
  -> dnode_hold dmu_tx.c#107
  -> dnode_hold_impl dnode.c#1143
  -> rw_write_held dnode.c#1050
  -> dbuf_whichblock dnode.c#1055
  -> dbuf_hold dnode.c#1057
  -> dbuf_hold_impl dbuf.c#1951
  -> dbuf_find dbuf.c#1872
  -> dbuf_hash dbuf.c#113
  -> dbuf_update_data dbuf.c#1931
  -> dbuf_read dnode.c#1062
  -> dmu_zfetch dbuf.c#623
  -> dmu_zfetch_find dmu_zfetch.c#663
  -> dmu_buf_get_user dnode.c#1074
  -> dbuf_rele dnode.c#1131
  -> dbuf_rele_and_unlock dbuf.c#2023
  -> dmu_tx_count_write dmu_tx.c#419
  -> dmu_objset_spa  
  -> spa_max_block_shift  
  -> dmu_tx_check_ioerr dmu_tx.c#257
  -> dbuf_hold_level dmu_tx.c#160
  -> dbuf_hold_impl dbuf.c#1959
  -> dbuf_find dbuf.c#1872
  -> dbuf_hash dbuf.c#113
  -> dbuf_findoff  
  -> dbuf_hold_impl  
  -> dbuf_find dbuf.c#1872
  -> dbuf_hash dbuf.c#113
  -> dbuf_update_data  
  -> dbuf_read  
  -> dbuf_create dbuf.c#1891
  -> dbuf_hash_insert dbuf.c#1714
  -> dbuf_hash dbuf.c#146
  -> arc_space_consume dbuf.c#1723
  -> dbuf_add_ref dbuf.c#1726
  -> dbuf_update_data dbuf.c#1931
  -> dbuf_rele dbuf.c#1937
  -> dbuf_rele_and_unlock dbuf.c#2023
  -> dbuf_read dmu_tx.c#164
  -> zio_root dbuf.c#632
  -> zio_null zio.c#601
  -> zio_create zio.c#591
  -> dbuf_read_impl dbuf.c#633
  -> dnode_block_freed dbuf.c#550
  -> spa_get_dsl dnode.c#1713
  -> dbuf_is_metadata dbuf.c#570
  -> arc_hole_ref  
  -> arc_buf_alloc_hole  
  -> spa_guid  
  -> spa_get_random  
  -> random_get_pseudo_bytes  
  -> kcf_rnd_get_pseudo_bytes  
  -> bcopy  
  -> arc_buf_cksum_compute  
  -> arc_cksum_compute  
  -> fletcher_2_native  
  -> arc_hold  
  -> arc_add_ref  
  -> arc_hold  
  -> dbuf_set_data  
  -> dbuf_update_data  
  -> dmu_zfetch dbuf.c#650
  -> dmu_zfetch_find dmu_zfetch.c#663
  -> zio_wait  
  -> zio_execute zio.c#1214
  -> highbit zio.c#1190
  -> zio_ready  
  -> zio_wait_for_children zio.c#2650
  -> zio_walk_parents zio.c#2670
  -> highbit zio.c#1190
  -> zio_done  
  -> zio_wait_for_children zio.c#2715
  -> zio_inherit_child_errors zio.c#2743
  -> zio_pop_transforms zio.c#2774
  -> vdev_stat_update zio.c#2776
  -> zio_inherit_child_errors zio.c#2843
  -> zio_gang_tree_free zio.c#2850
  -> zio_walk_parents zio.c#2955
  -> cv_broadcast zio.c#2965
  -> zio_destroy zio.c#1222
  -> dbuf_rele dmu_tx.c#165
  -> dbuf_rele_and_unlock dbuf.c#2023
  -> arc_ref_freeze  
  -> arc_ref_anonymous  
  -> arc_inactivate_ref  
  -> arc_rele  
  -> arc_add_to_evictables  
  -> lbolt_event_driven  
  -> dbuf_hold_impl dmu_tx.c#315
  -> dbuf_find dbuf.c#1872
  -> dbuf_hash dbuf.c#113
  -> arc_reactivate_ref  
  -> arc_hold  
  -> arc_access  
  -> ddi_get_lbolt  
  -> lbolt_event_driven  
  -> dbuf_update_data dbuf.c#1931
  -> dmu_tx_count_twig dmu_tx.c#323
  -> dmu_buf_freeable  
  -> dbuf_block_freeable  
  -> dsl_dataset_block_freeable dbuf.c#921
  -> dsl_dataset_prev_snap_txg dsl_dataset.c#241
  -> spa_last_synced_txg dsl_dataset.c#232
  -> dsl_dataset_get_spa dsl_dataset.c#244
  -> ddt_prefetch dsl_dataset.c#244
  -> dmu_tx_count_twig dmu_tx.c#209
  -> dmu_tx_count_twig dmu_tx.c#209
  -> dbuf_rele dmu_tx.c#325
  -> dbuf_rele_and_unlock dbuf.c#2023
  -> arc_ref_freeze  
  -> arc_ref_anonymous  
  -> arc_inactivate_ref  
  -> arc_rele  
  -> arc_add_to_evictables  
  -> dmu_tx_count_dnode dmu_tx.c#420
  -> dmu_buf_freeable  
  -> dbuf_block_freeable  
  -> dsl_dataset_block_freeable dbuf.c#921
  -> dsl_dataset_prev_snap_txg dsl_dataset.c#241
  -> spa_last_synced_txg dsl_dataset.c#232
  -> dsl_dataset_get_spa dsl_dataset.c#244
  -> ddt_prefetch dsl_dataset.c#244
  -> zfs_sa_upgrade_txholds zfs_vnops.c#777
  -> dmu_tx_assign zfs_vnops.c#778
  -> dmu_tx_try_assign dmu_tx.c#1077
  -> dmu_objset_is_snapshot  
  -> spa_suspended dmu_tx.c#919
  -> txg_hold_open dmu_tx.c#936
  -> dsl_dataset_prev_snap_txg dmu_tx.c#982
  -> spa_last_synced_txg dsl_dataset.c#232
  -> spa_get_asize dmu_tx.c#989
  -> dsl_dir_tempreserve_space dmu_tx.c#1011
  -> arc_tempreserve_space dsl_dir.c#825
  -> arc_memory_throttle arc.c#3566
  -> dsl_pool_tempreserve_space dsl_dir.c#833
  -> dsl_pool_reserve_inflight  
  -> spa_get_deferred  
  -> spa_get_adjfree  
  -> dsl_dir_tempreserve_impl dsl_dir.c#850
  -> dsl_dir_space_towrite dsl_dir.c#709
  -> dsl_dataset_check_quota dsl_dir.c#723
  -> dsl_dataset_adjust_space  
  -> parent_delta dsl_dir.c#781
  -> dsl_dir_tempreserve_impl dsl_dir.c#794
  -> dsl_dir_space_towrite dsl_dir.c#709
  -> parent_delta dsl_dir.c#781
  -> dsl_dir_tempreserve_impl dsl_dir.c#794
  -> dsl_dir_space_towrite dsl_dir.c#709
  -> dsl_pool_adjustedsize dsl_dir.c#752
  -> spa_get_dspace dsl_pool.c#572
  -> parent_delta dsl_dir.c#781
  -> txg_rele_to_quiesce dmu_tx.c#1086
  -> sa_get_db zfs_vnops.c#818
  -> dmu_write_uio_dbuf zfs_vnops.c#818
  -> dmu_write_uio_dnode dmu.c#1089
  -> dmu_buf_hold_array_by_dnode dmu.c#1032
  -> dsl_pool_sync_context dmu.c#402
  -> spa_get_dsl  
  -> zio_root dmu.c#404
  -> zio_null zio.c#601
  -> zio_create zio.c#591
  -> dbuf_whichblock dmu.c#405
  -> dbuf_hold dmu.c#407
  -> dbuf_hold_impl dbuf.c#1951
  -> dbuf_find dbuf.c#1872
  -> dbuf_hash dbuf.c#113
  -> arc_reactivate_ref  
  -> arc_hold  
  -> arc_access  
  -> lbolt_event_driven  
  -> dbuf_update_data dbuf.c#1931
  -> zio_wait dmu.c#423
  -> zio_execute zio.c#1214
  -> highbit zio.c#1190
  -> zio_ready  
  -> zio_wait_for_children zio.c#2650
  -> zio_walk_parents zio.c#2670
  -> highbit zio.c#1190
  -> zio_done  
  -> zio_wait_for_children zio.c#2715
  -> zio_inherit_child_errors zio.c#2743
  -> zio_pop_transforms zio.c#2774
  -> vdev_stat_update zio.c#2776
  -> zio_inherit_child_errors zio.c#2843
  -> zio_gang_tree_free zio.c#2850
  -> zio_walk_parents zio.c#2955
  -> cv_broadcast zio.c#2965
  -> zio_destroy zio.c#1222
  -> dsl_pool_sync_context dmu.c#425
  -> spa_get_dsl  
  -> dbuf_will_dirty dmu.c#1052
  -> rw_write_held dbuf.c#1392
  -> dbuf_read dbuf.c#1395
  -> dbuf_dirty dbuf.c#1396
  -> dbuf_dirty_impl  
  -> dnode_willuse_space  
  -> spa_get_asize dnode.c#1793
  -> dsl_dir_willuse_space dnode.c#1796
  -> dsl_pool_willuse_space dsl_dir.c#927
  -> dsl_dir_willuse_space_impl dsl_dir.c#928
  -> dsl_dir_space_towrite dsl_dir.c#907
  -> dsl_dataset_adjust_space  
  -> parent_delta dsl_dir.c#908
  -> dsl_dir_dirty dsl_dir.c#912
  -> txg_list_add dsl_dir.c#567
  -> dsl_dir_willuse_space_impl dsl_dir.c#916
  -> dsl_dir_space_towrite dsl_dir.c#907
  -> parent_delta dsl_dir.c#908
  -> dsl_dir_dirty dsl_dir.c#912
  -> txg_list_add dsl_dir.c#567
  -> dsl_dir_willuse_space_impl dsl_dir.c#916
  -> dsl_dir_space_towrite dsl_dir.c#907
  -> parent_delta dsl_dir.c#908
  -> dsl_dir_dirty dsl_dir.c#912
  -> txg_list_add dsl_dir.c#567
  -> dmu_tx_willuse_space dnode.c#1798
  -> dbuf_block_freeable  
  -> dsl_dataset_block_freeable  
  -> dsl_dataset_prev_snap_txg dsl_dataset.c#241
  -> spa_last_synced_txg dsl_dataset.c#232
  -> dsl_dataset_get_spa dsl_dataset.c#244
  -> ddt_prefetch dsl_dataset.c#244
  -> arc_get_blkptr  
  -> dnode_willuse_space  
  -> spa_get_asize dnode.c#1793
  -> dsl_dir_willuse_space dnode.c#1796
  -> dsl_pool_willuse_space dsl_dir.c#927
  -> dsl_dir_willuse_space_impl dsl_dir.c#928
  -> dsl_dir_space_towrite dsl_dir.c#907
  -> parent_delta dsl_dir.c#908
  -> dsl_dir_dirty dsl_dir.c#912
  -> txg_list_add dsl_dir.c#567
  -> dsl_dir_willuse_space_impl dsl_dir.c#916
  -> dsl_dir_space_towrite dsl_dir.c#907
  -> parent_delta dsl_dir.c#908
  -> dsl_dir_dirty dsl_dir.c#912
  -> txg_list_add dsl_dir.c#567
  -> dsl_dir_willuse_space_impl dsl_dir.c#916
  -> dsl_dir_space_towrite dsl_dir.c#907
  -> parent_delta dsl_dir.c#908
  -> dsl_dir_dirty dsl_dir.c#912
  -> txg_list_add dsl_dir.c#567
  -> dmu_tx_willuse_space  
  -> arc_make_writable  
  -> arc_try_make_writable  
  -> arc_cksum_verify  
  -> arc_anonymize_ref  
  -> arc_get_data_block  
  -> zio_data_buf_alloc  
  -> arc_space_consume  
  -> arc_rele  
  -> arc_add_to_evictables  
  -> dbuf_set_data  
  -> dbuf_update_data  
  -> dnode_clear_range dbuf.c#1175
  -> dbuf_add_ref dbuf.c#1183
  -> ddt_prefetch dbuf.c#1210
  -> rw_write_held dbuf.c#1214
  -> dnode_new_blkid dbuf.c#1220
  -> dbuf_dirty dbuf.c#1240
  -> dbuf_dirty_impl  
  -> dnode_setdirty dbuf.c#1268
  -> dmu_objset_userquota_get_ids dnode.c#1224
  -> dmu_objset_userused_enabled dmu_objset.c#1386
  -> spa_version dmu_objset.c#1250
  -> uiomove dmu.c#1060
  -> dmu_buf_rele_array dmu.c#1072
  -> dbuf_rele dmu.c#502
  -> dbuf_rele_and_unlock dbuf.c#2023
  -> arc_ref_freeze dbuf.c#2051
  -> vn_has_cached_data zfs_vnops.c#845
  -> zfs_tstamp_update_setup zfs_vnops.c#887
  -> sa_bulk_update zfs_vnops.c#907
  -> sa_bulk_update_impl sa.c#1854
  -> dmu_get_bonustype sa.c#1746
  -> sa_attr_op sa.c#1755
  -> dbuf_will_dirty  
  -> rw_write_held dbuf.c#1392
  -> dbuf_read dbuf.c#1395
  -> dbuf_dirty  
  -> dbuf_dirty_impl  
  -> dbuf_unoverride  
  -> arc_ref_thaw  
  -> zfs_log_write zfs_vnops.c#909
  -> zil_replaying zfs_log.c#462
  -> spa_has_slogs zfs_log.c#468
  -> tsd_get zfs_log.c#477
  -> spa_max_block_size  
  -> zil_itx_create zfs_log.c#494
  -> zil_itx_assign zfs_log.c#520
  -> spa_freeze_txg zil.c#1254
  -> dmu_tx_get_txg zil.c#1304
  -> dmu_tx_commit zfs_vnops.c#910
  -> dnode_rele  
  -> cv_broadcast dmu_tx.c#1154
  -> dnode_rele dmu_tx.c#1157
  -> dsl_dir_tempreserve_clear dmu_tx.c#1161
  -> arc_tempreserve_clear  
  -> dsl_pool_tempreserve_clear dsl_dir.c#880
  -> txg_rele_to_sync dmu_tx.c#1167
  -> cv_broadcast txg.c#265
  -> _uio_pageunlock  
  -> zfs_range_unlock zfs_vnops.c#921
  -> rrw_exit zfs_vnops.c#936
  -> cv_broadcast rrwlock.c#247
Read more ...