diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-11-01 15:13:19 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2018-11-13 15:21:15 -0500 |
commit | f98cc8dcd58a11a759bb0ee6b17d16e89d8a446e (patch) | |
tree | d31adffffdf5928cb304dc7214ee0802637b3586 /fs/bcachefs/disk_groups.h | |
parent | a9f14c773fb122a4b283fc7b79d9f98703a18890 (diff) |
bcachefs: Erasure codingbcachefs-v4.18
Diffstat (limited to 'fs/bcachefs/disk_groups.h')
-rw-r--r-- | fs/bcachefs/disk_groups.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/fs/bcachefs/disk_groups.h b/fs/bcachefs/disk_groups.h index d6047283ddea..b90b0ef5c85f 100644 --- a/fs/bcachefs/disk_groups.h +++ b/fs/bcachefs/disk_groups.h @@ -54,6 +54,19 @@ static inline struct target target_decode(unsigned target) } const struct bch_devs_mask *bch2_target_to_mask(struct bch_fs *, unsigned); + +static inline struct bch_devs_mask target_rw_devs(struct bch_fs *c, + enum bch_data_type data_type, + u16 target) +{ + struct bch_devs_mask devs = c->rw_devs[data_type]; + const struct bch_devs_mask *t = bch2_target_to_mask(c, target); + + if (t) + bitmap_and(devs.d, devs.d, t->d, BCH_SB_MEMBERS_MAX); + return devs; +} + bool bch2_dev_in_target(struct bch_fs *, unsigned, unsigned); int bch2_disk_path_find(struct bch_sb_handle *, const char *); |