Lines Matching refs:dr
42 struct xfs_defer_drain *dr)
44 atomic_set(&dr->dr_count, 0);
45 init_waitqueue_head(&dr->dr_waiters);
49 xfs_defer_drain_free(struct xfs_defer_drain *dr)
51 ASSERT(atomic_read(&dr->dr_count) == 0);
55 static inline void xfs_defer_drain_grab(struct xfs_defer_drain *dr)
57 atomic_inc(&dr->dr_count);
71 static inline void xfs_defer_drain_rele(struct xfs_defer_drain *dr)
73 if (atomic_dec_and_test(&dr->dr_count) &&
75 has_waiters(&dr->dr_waiters))
76 wake_up(&dr->dr_waiters);
80 static inline bool xfs_defer_drain_busy(struct xfs_defer_drain *dr)
82 return atomic_read(&dr->dr_count) > 0;
91 static inline int xfs_defer_drain_wait(struct xfs_defer_drain *dr)
93 return wait_event_killable(dr->dr_waiters, !xfs_defer_drain_busy(dr));