Print this page
5056 ZFS deadlock on db_mtx and dn_holds
Reviewed by: Will Andrews <willa@spectralogic.com>
Reviewed by: Matt Ahrens <mahrens@delphix.com>
Reviewed by: George Wilson <george.wilson@delphix.com>
Approved by: Dan McDonald <danmcd@omniti.com>
        
*** 19,28 ****
--- 19,29 ----
   * CDDL HEADER END
   */
  /*
   * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
   * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+  * Copyright (c) 2014 Spectra Logic Corporation, All rights reserved.
   */
  
  #ifndef _SYS_DNODE_H
  #define _SYS_DNODE_H
  
*** 253,262 ****
--- 254,264 ----
          zrlock_t dnh_zrlock;
          dnode_t *dnh_dnode;
  } dnode_handle_t;
  
  typedef struct dnode_children {
+         dmu_buf_user_t dnc_dbu;         /* User evict data */
          size_t dnc_count;               /* number of children */
          dnode_handle_t dnc_children[];  /* sized dynamically */
  } dnode_children_t;
  
  typedef struct free_range {
*** 263,273 ****
          avl_node_t fr_node;
          uint64_t fr_blkid;
          uint64_t fr_nblks;
  } free_range_t;
  
! dnode_t *dnode_special_open(struct objset *dd, dnode_phys_t *dnp,
      uint64_t object, dnode_handle_t *dnh);
  void dnode_special_close(dnode_handle_t *dnh);
  
  void dnode_setbonuslen(dnode_t *dn, int newsize, dmu_tx_t *tx);
  void dnode_setbonus_type(dnode_t *dn, dmu_object_type_t, dmu_tx_t *tx);
--- 265,275 ----
          avl_node_t fr_node;
          uint64_t fr_blkid;
          uint64_t fr_nblks;
  } free_range_t;
  
! void dnode_special_open(struct objset *dd, dnode_phys_t *dnp,
      uint64_t object, dnode_handle_t *dnh);
  void dnode_special_close(dnode_handle_t *dnh);
  
  void dnode_setbonuslen(dnode_t *dn, int newsize, dmu_tx_t *tx);
  void dnode_setbonus_type(dnode_t *dn, dmu_object_type_t, dmu_tx_t *tx);