On Fri, May 31, 2019 at 12:19:15PM +0300, Nikolay Borisov wrote:
> > {
> > - WARN_ON(atomic_read(&eb->spinning_writers));
> > - atomic_inc(&eb->spinning_writers);
> > + WARN_ON(eb->spinning_writers);
> > + eb->spinning_writers++;
> > }
> >
> > static void btrfs_assert_spinning_writers_put(struct extent_buffer *eb)
> > {
> > - WARN_ON(atomic_read(&eb->spinning_writers) != 1);
> > - atomic_dec(&eb->spinning_writers);
> > + WARN_ON(eb->spinning_writers != 1);
> > + eb->spinning_writers--;
> > }
> >
> > static void btrfs_assert_no_spinning_writers(struct extent_buffer *eb)
> > {
> > - WARN_ON(atomic_read(&eb->spinning_writers));
> > + WARN_ON(eb->spinning_writers);
> > }
>
> IMO longterm it will be good if those debug functions contained
> lockdep_assert_held_exclusive/read macros for posterity.
The functions are not public and used only inside implementation of
locks, so the chances of wrong use are low so I don't see much value
adding it.