rbtree_latch: Use seqcount_latch_t
authorAhmed S. Darwish <a.darwish@linutronix.de>
Thu, 27 Aug 2020 11:40:43 +0000 (13:40 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Thu, 10 Sep 2020 09:19:29 +0000 (11:19 +0200)
Latch sequence counters have unique read and write APIs, and thus
seqcount_latch_t was recently introduced at seqlock.h.

Use that new data type instead of plain seqcount_t. This adds the
necessary type-safety and ensures that only latching-safe seqcount APIs
are to be used.

Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20200827114044.11173-8-a.darwish@linutronix.de
include/linux/rbtree_latch.h

index 7d012faa509a44c775b8835d409fb1ac3933d3c8..3d1a9e716b803d41e6d2c3137d734cfa8ab3eba5 100644 (file)
@@ -42,8 +42,8 @@ struct latch_tree_node {
 };
 
 struct latch_tree_root {
-       seqcount_t      seq;
-       struct rb_root  tree[2];
+       seqcount_latch_t        seq;
+       struct rb_root          tree[2];
 };
 
 /**
@@ -206,7 +206,7 @@ latch_tree_find(void *key, struct latch_tree_root *root,
        do {
                seq = raw_read_seqcount_latch(&root->seq);
                node = __lt_find(key, root, seq & 1, ops->comp);
-       } while (read_seqcount_retry(&root->seq, seq));
+       } while (read_seqcount_latch_retry(&root->seq, seq));
 
        return node;
 }