diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-12-18 16:11:11 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2019-12-18 16:11:11 -0500 |
commit | 7d2baabdb15a564a89443614f5c6ad1205164943 (patch) | |
tree | 79285d1c9573aa18718ae10fc96ef4b803b9028f /libbcachefs.h | |
parent | f026d7cc812b5a2e20b83a8a923cb1d6063e85e3 (diff) |
Redo cmd_fs_usage for new ioctls
Diffstat (limited to 'libbcachefs.h')
-rw-r--r-- | libbcachefs.h | 35 |
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 */ |