#include <linux/string.h>
#include <linux/types.h>
#include <linux/uuid.h>
-#include "ccan/darray/darray.h"
+#include "libbcachefs/darray.h"
#define noreturn __attribute__((noreturn))
_ret; \
})
-int printf_pad(unsigned pad, const char * fmt, ...);
-
-enum units {
- BYTES,
- SECTORS,
- HUMAN_READABLE,
-};
-
-struct units_buf __pr_units(s64, enum units);
-
-struct units_buf {
- char b[20];
-};
-
-#define pr_units(_v, _u) &(__pr_units(_v, _u).b[0])
-
+void write_file_str(int, const char *, const char *);
char *read_file_str(int, const char *);
u64 read_file_u64(int, const char *);
u64 end;
};
-typedef darray(struct range) ranges;
+typedef DARRAY(struct range) ranges;
static inline void range_add(ranges *data, u64 offset, u64 size)
{
- darray_append(*data, (struct range) {
+ darray_push(data, ((struct range) {
.start = offset,
.end = offset + size
- });
+ }));
}
void ranges_sort_merge(ranges *);
static inline struct range hole_iter_next(struct hole_iter *iter)
{
struct range r = {
- .start = iter->idx ? iter->r.item[iter->idx - 1].end : 0,
- .end = iter->idx < iter->r.size
- ? iter->r.item[iter->idx].start : iter->end,
+ .start = iter->idx ? iter->r.data[iter->idx - 1].end : 0,
+ .end = iter->idx < iter->r.nr
+ ? iter->r.data[iter->idx].start : iter->end,
};
BUG_ON(r.start > r.end);
#define for_each_hole(_iter, _ranges, _end, _i) \
for (_iter = (struct hole_iter) { .r = _ranges, .end = _end }; \
- (_iter.idx <= _iter.r.size && \
+ (_iter.idx <= _iter.r.nr && \
(_i = hole_iter_next(&_iter), true));)
#include <linux/fiemap.h>