diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-08-17 18:27:02 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-08-17 18:27:05 -0400 |
commit | f968aa040b78bb0e6070845050b39644c24a9770 (patch) | |
tree | 2ff0c4c1038e0b550cd11f51d7d4b2ff9412653d /c_src | |
parent | 4226cd1854ed724c4c45d43a25ba4ff3dfe3c17a (diff) |
dev_name.state
Get memebr state when we're getting device names.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'c_src')
-rw-r--r-- | c_src/libbcachefs.c | 6 | ||||
-rw-r--r-- | c_src/libbcachefs.h | 11 |
2 files changed, 12 insertions, 5 deletions
diff --git a/c_src/libbcachefs.c b/c_src/libbcachefs.c index 2b5ca211..017c331f 100644 --- a/c_src/libbcachefs.c +++ b/c_src/libbcachefs.c @@ -910,6 +910,8 @@ dev_names bchu_fs_get_devices(struct bchfs_handle fs) struct dirent *d; dev_names devs; + struct bch_sb *sb = bchu_read_super(fs, -1); + darray_init(&devs); while ((errno = 0), (d = readdir(dir))) { @@ -940,9 +942,13 @@ dev_names bchu_fs_get_devices(struct bchfs_handle fs) n.durability = read_file_u64(fs.sysfs_fd, durability_attr); free(durability_attr); + struct bch_member m = bch2_sb_member_get(sb, n.idx); + n.state = BCH_MEMBER_STATE(&m); + darray_push(&devs, n); } + free(sb); closedir(dir); return devs; diff --git a/c_src/libbcachefs.h b/c_src/libbcachefs.h index 7a7a9e2c..e562d138 100644 --- a/c_src/libbcachefs.h +++ b/c_src/libbcachefs.h @@ -313,11 +313,12 @@ static inline void bchu_disk_resize_journal(struct bchfs_handle fs, int bchu_data(struct bchfs_handle, struct bch_ioctl_data); struct dev_name { - unsigned idx; - char *dev; - char *label; - uuid_t uuid; - unsigned durability; + unsigned idx; + char *dev; + char *label; + uuid_t uuid; + unsigned durability; + enum bch_member_state state; }; typedef DARRAY(struct dev_name) dev_names; |