summaryrefslogtreecommitdiff
path: root/c_src
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-08-17 18:27:02 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-08-17 18:27:05 -0400
commitf968aa040b78bb0e6070845050b39644c24a9770 (patch)
tree2ff0c4c1038e0b550cd11f51d7d4b2ff9412653d /c_src
parent4226cd1854ed724c4c45d43a25ba4ff3dfe3c17a (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.c6
-rw-r--r--c_src/libbcachefs.h11
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;