summaryrefslogtreecommitdiff
path: root/libbcachefs/eytzinger.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-01-23 15:49:44 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2019-01-23 15:53:32 -0500
commit35fca2f044d375b1590f499cfd34bef38ca0f8f1 (patch)
treec3906079fe4de190de30690bd2725e4bb0a28b0a /libbcachefs/eytzinger.h
parent1c50d258e3462cd0e0f76570685092910fc11873 (diff)
Update bcachefs sources to 99750eab4d bcachefs: Persist stripe blocks_used
Diffstat (limited to 'libbcachefs/eytzinger.h')
-rw-r--r--libbcachefs/eytzinger.h26
1 files changed, 14 insertions, 12 deletions
diff --git a/libbcachefs/eytzinger.h b/libbcachefs/eytzinger.h
index 66fa227c..d19d809c 100644
--- a/libbcachefs/eytzinger.h
+++ b/libbcachefs/eytzinger.h
@@ -262,18 +262,20 @@ static inline ssize_t eytzinger0_find_le(void *base, size_t nr, size_t size,
}
}
-static inline size_t eytzinger0_find(void *base, size_t nr, size_t size,
- eytzinger_cmp_fn cmp, const void *search)
-{
- size_t i = 0;
- int res;
-
- while (i < nr &&
- (res = cmp(search, base + i * size, size)))
- i = eytzinger0_child(i, res > 0);
-
- return i;
-}
+#define eytzinger0_find(base, nr, size, _cmp, search) \
+({ \
+ void *_base = (base); \
+ void *_search = (search); \
+ size_t _nr = (nr); \
+ size_t _size = (size); \
+ size_t _i = 0; \
+ int _res; \
+ \
+ while (_i < _nr && \
+ (_res = _cmp(_search, _base + _i * _size, _size))) \
+ _i = eytzinger0_child(_i, _res > 0); \
+ _i; \
+})
void eytzinger0_sort(void *, size_t, size_t,
int (*cmp_func)(const void *, const void *, size_t),