summaryrefslogtreecommitdiff
path: root/libbcachefs.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2019-12-18 16:11:11 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2019-12-18 16:11:11 -0500
commit7d2baabdb15a564a89443614f5c6ad1205164943 (patch)
tree79285d1c9573aa18718ae10fc96ef4b803b9028f /libbcachefs.h
parentf026d7cc812b5a2e20b83a8a923cb1d6063e85e3 (diff)
Redo cmd_fs_usage for new ioctls
Diffstat (limited to 'libbcachefs.h')
-rw-r--r--libbcachefs.h35
1 files changed, 28 insertions, 7 deletions
diff --git a/libbcachefs.h b/libbcachefs.h
index 61d0ea8d..30add92c 100644
--- a/libbcachefs.h
+++ b/libbcachefs.h
@@ -140,24 +140,35 @@ static inline void bchu_disk_set_state(struct bchfs_handle fs, unsigned dev,
xioctl(fs.ioctl_fd, BCH_IOCTL_DISK_SET_STATE, &i);
}
-static inline struct bch_ioctl_usage *bchu_usage(struct bchfs_handle fs)
+static inline struct bch_ioctl_fs_usage *bchu_fs_usage(struct bchfs_handle fs)
{
- struct bch_ioctl_usage *u = NULL;
- unsigned nr_devices = 4;
+ struct bch_ioctl_fs_usage *u = NULL;
+ size_t replica_entries_bytes = 4096;
while (1) {
- u = xrealloc(u, sizeof(*u) + sizeof(u->devs[0]) * nr_devices);
- u->nr_devices = nr_devices;
+ u = xrealloc(u, sizeof(*u) + replica_entries_bytes);
+ u->replica_entries_bytes = replica_entries_bytes;
- if (!ioctl(fs.ioctl_fd, BCH_IOCTL_USAGE, u))
+ if (!ioctl(fs.ioctl_fd, BCH_IOCTL_FS_USAGE, u))
return u;
if (errno != ERANGE)
die("BCH_IOCTL_USAGE error: %m");
- nr_devices *= 2;
+
+ replica_entries_bytes *= 2;
}
}
+static inline struct bch_ioctl_dev_usage bchu_dev_usage(struct bchfs_handle fs,
+ unsigned idx)
+{
+ struct bch_ioctl_dev_usage i = { .dev = idx, .flags = BCH_BY_INDEX};
+
+ if (xioctl(fs.ioctl_fd, BCH_IOCTL_DEV_USAGE, &i))
+ die("BCH_IOCTL_DEV_USAGE error: %m");
+ return i;
+}
+
static inline struct bch_sb *bchu_read_super(struct bchfs_handle fs, unsigned idx)
{
size_t size = 4096;
@@ -205,4 +216,14 @@ static inline void bchu_disk_resize(struct bchfs_handle fs,
int bchu_data(struct bchfs_handle, struct bch_ioctl_data);
+struct dev_name {
+ unsigned idx;
+ char *dev;
+ char *label;
+ uuid_le uuid;
+};
+typedef darray(struct dev_name) dev_names;
+
+dev_names bchu_fs_get_devices(struct bchfs_handle);
+
#endif /* _LIBBCACHE_H */