Print this page
6267 dn_bonus evicted too early
Reviewed by: Richard Yao <ryao@gentoo.org>
Reviewed by: Xin LI <delphij@freebsd.org>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>


  76         objset_phys_t *os_phys;
  77         /*
  78          * The following "special" dnodes have no parent, are exempt
  79          * from dnode_move(), and are not recorded in os_dnodes, but they
  80          * root their descendents in this objset using handles anyway, so
  81          * that all access to dnodes from dbufs consistently uses handles.
  82          */
  83         dnode_handle_t os_meta_dnode;
  84         dnode_handle_t os_userused_dnode;
  85         dnode_handle_t os_groupused_dnode;
  86         zilog_t *os_zil;
  87 
  88         list_node_t os_evicting_node;
  89 
  90         /* can change, under dsl_dir's locks: */
  91         enum zio_checksum os_checksum;
  92         enum zio_compress os_compress;
  93         uint8_t os_copies;
  94         enum zio_checksum os_dedup_checksum;
  95         boolean_t os_dedup_verify;
  96         boolean_t os_evicting;
  97         zfs_logbias_op_t os_logbias;
  98         zfs_cache_type_t os_primary_cache;
  99         zfs_cache_type_t os_secondary_cache;
 100         zfs_sync_type_t os_sync;
 101         zfs_redundant_metadata_type_t os_redundant_metadata;
 102         int os_recordsize;
 103 
 104         /* no lock needed: */
 105         struct dmu_tx *os_synctx; /* XXX sketchy */
 106         blkptr_t *os_rootbp;
 107         zil_header_t os_zil_header;
 108         list_t os_synced_dnodes;
 109         uint64_t os_flags;
 110 
 111         /* Protected by os_obj_lock */
 112         kmutex_t os_obj_lock;
 113         uint64_t os_obj_next;
 114 
 115         /* Protected by os_lock */
 116         kmutex_t os_lock;




  76         objset_phys_t *os_phys;
  77         /*
  78          * The following "special" dnodes have no parent, are exempt
  79          * from dnode_move(), and are not recorded in os_dnodes, but they
  80          * root their descendents in this objset using handles anyway, so
  81          * that all access to dnodes from dbufs consistently uses handles.
  82          */
  83         dnode_handle_t os_meta_dnode;
  84         dnode_handle_t os_userused_dnode;
  85         dnode_handle_t os_groupused_dnode;
  86         zilog_t *os_zil;
  87 
  88         list_node_t os_evicting_node;
  89 
  90         /* can change, under dsl_dir's locks: */
  91         enum zio_checksum os_checksum;
  92         enum zio_compress os_compress;
  93         uint8_t os_copies;
  94         enum zio_checksum os_dedup_checksum;
  95         boolean_t os_dedup_verify;

  96         zfs_logbias_op_t os_logbias;
  97         zfs_cache_type_t os_primary_cache;
  98         zfs_cache_type_t os_secondary_cache;
  99         zfs_sync_type_t os_sync;
 100         zfs_redundant_metadata_type_t os_redundant_metadata;
 101         int os_recordsize;
 102 
 103         /* no lock needed: */
 104         struct dmu_tx *os_synctx; /* XXX sketchy */
 105         blkptr_t *os_rootbp;
 106         zil_header_t os_zil_header;
 107         list_t os_synced_dnodes;
 108         uint64_t os_flags;
 109 
 110         /* Protected by os_obj_lock */
 111         kmutex_t os_obj_lock;
 112         uint64_t os_obj_next;
 113 
 114         /* Protected by os_lock */
 115         kmutex_t os_lock;