Print this page
5981 Deadlock in dmu_objset_find_dp

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/sys/rrwlock.h
          +++ new/usr/src/uts/common/fs/zfs/sys/rrwlock.h
↓ open down ↓ 62 lines elided ↑ open up ↑
  63   63  
  64   64  /*
  65   65   * 'tag' is used in reference counting tracking.  The
  66   66   * 'tag' must be the same in a rrw_enter() as in its
  67   67   * corresponding rrw_exit().
  68   68   */
  69   69  void rrw_init(rrwlock_t *rrl, boolean_t track_all);
  70   70  void rrw_destroy(rrwlock_t *rrl);
  71   71  void rrw_enter(rrwlock_t *rrl, krw_t rw, void *tag);
  72   72  void rrw_enter_read(rrwlock_t *rrl, void *tag);
       73 +void rrw_enter_read_prio(rrwlock_t *rrl, void *tag);
  73   74  void rrw_enter_write(rrwlock_t *rrl);
  74   75  void rrw_exit(rrwlock_t *rrl, void *tag);
  75   76  boolean_t rrw_held(rrwlock_t *rrl, krw_t rw);
  76   77  void rrw_tsd_destroy(void *arg);
  77   78  
  78   79  #define RRW_READ_HELD(x)        rrw_held(x, RW_READER)
  79   80  #define RRW_WRITE_HELD(x)       rrw_held(x, RW_WRITER)
  80   81  #define RRW_LOCK_HELD(x) \
  81   82          (rrw_held(x, RW_WRITER) || rrw_held(x, RW_READER))
  82   83  
↓ open down ↓ 30 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX