]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Xarray: use xa_mark_t in xas_squash_marks() to keep code consistent
authorKemeng Shi <shikemeng@huaweicloud.com>
Fri, 13 Dec 2024 12:25:23 +0000 (20:25 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Sat, 25 Jan 2025 06:47:28 +0000 (22:47 -0800)
Besides xas_squash_marks(), all functions use xa_mark_t type to iterate
all possible marks.  Use xa_mark_t in xas_squash_marks() to keep code
consistent.

Link: https://lkml.kernel.org/r/20241213122523.12764-6-shikemeng@huaweicloud.com
Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
Cc: Mattew Wilcox <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/xarray.c

index 2386423865a0a9174f88acd73436bbec5e146327..116e9286c64ec0233f0d3881f233c28146382d8e 100644 (file)
@@ -125,16 +125,20 @@ static inline void node_mark_all(struct xa_node *node, xa_mark_t mark)
  */
 static void xas_squash_marks(const struct xa_state *xas)
 {
-       unsigned int mark = 0;
+       xa_mark_t mark = 0;
        unsigned int limit = xas->xa_offset + xas->xa_sibs + 1;
 
-       do {
-               unsigned long *marks = xas->xa_node->marks[mark];
-               if (find_next_bit(marks, limit, xas->xa_offset + 1) == limit)
-                       continue;
-               __set_bit(xas->xa_offset, marks);
-               bitmap_clear(marks, xas->xa_offset + 1, xas->xa_sibs);
-       } while (mark++ != (__force unsigned)XA_MARK_MAX);
+       for (;;) {
+               unsigned long *marks = node_marks(xas->xa_node, mark);
+
+               if (find_next_bit(marks, limit, xas->xa_offset + 1) != limit) {
+                       __set_bit(xas->xa_offset, marks);
+                       bitmap_clear(marks, xas->xa_offset + 1, xas->xa_sibs);
+               }
+               if (mark == XA_MARK_MAX)
+                       break;
+               mark_inc(mark);
+       }
 }
 
 /* extracts the offset within this node from the index */