Print this page
*** NO COMMENTS ***


 108         uint64_t ds_props_obj;          /* DMU_OT_DSL_PROPS for snaps */
 109         uint64_t ds_userrefs_obj;       /* DMU_OT_USERREFS */
 110         uint64_t ds_pad[5]; /* pad out to 320 bytes for good measure */
 111 } dsl_dataset_phys_t;
 112 
 113 typedef struct dsl_dataset {
 114         /* Immutable: */
 115         struct dsl_dir *ds_dir;
 116         dsl_dataset_phys_t *ds_phys;
 117         dmu_buf_t *ds_dbuf;
 118         uint64_t ds_object;
 119         uint64_t ds_fsid_guid;
 120 
 121         /* only used in syncing context, only valid for non-snapshots: */
 122         struct dsl_dataset *ds_prev;
 123 
 124         /* has internal locking: */
 125         dsl_deadlist_t ds_deadlist;
 126         bplist_t ds_pending_deadlist;
 127 
 128         /* to protect against multiple concurrent incremental recv */
 129         kmutex_t ds_recvlock;
 130 
 131         /* protected by lock on pool's dp_dirty_datasets list */
 132         txg_node_t ds_dirty_link;
 133         list_node_t ds_synced_link;
 134 
 135         /*
 136          * ds_phys->ds_<accounting> is also protected by ds_lock.
 137          * Protected by ds_lock:
 138          */
 139         kmutex_t ds_lock;
 140         objset_t *ds_objset;
 141         uint64_t ds_userrefs;
 142 
 143         /*
 144          * ds_owner is protected by the ds_rwlock and the ds_lock
 145          */
 146         krwlock_t ds_rwlock;
 147         kcondvar_t ds_exclusive_cv;
 148         void *ds_owner;
 149 
 150         /* no locking; only for making guesses */




 108         uint64_t ds_props_obj;          /* DMU_OT_DSL_PROPS for snaps */
 109         uint64_t ds_userrefs_obj;       /* DMU_OT_USERREFS */
 110         uint64_t ds_pad[5]; /* pad out to 320 bytes for good measure */
 111 } dsl_dataset_phys_t;
 112 
 113 typedef struct dsl_dataset {
 114         /* Immutable: */
 115         struct dsl_dir *ds_dir;
 116         dsl_dataset_phys_t *ds_phys;
 117         dmu_buf_t *ds_dbuf;
 118         uint64_t ds_object;
 119         uint64_t ds_fsid_guid;
 120 
 121         /* only used in syncing context, only valid for non-snapshots: */
 122         struct dsl_dataset *ds_prev;
 123 
 124         /* has internal locking: */
 125         dsl_deadlist_t ds_deadlist;
 126         bplist_t ds_pending_deadlist;
 127 



 128         /* protected by lock on pool's dp_dirty_datasets list */
 129         txg_node_t ds_dirty_link;
 130         list_node_t ds_synced_link;
 131 
 132         /*
 133          * ds_phys->ds_<accounting> is also protected by ds_lock.
 134          * Protected by ds_lock:
 135          */
 136         kmutex_t ds_lock;
 137         objset_t *ds_objset;
 138         uint64_t ds_userrefs;
 139 
 140         /*
 141          * ds_owner is protected by the ds_rwlock and the ds_lock
 142          */
 143         krwlock_t ds_rwlock;
 144         kcondvar_t ds_exclusive_cv;
 145         void *ds_owner;
 146 
 147         /* no locking; only for making guesses */