bcachefs: Improve bch2_inode_opts_to_opts()
It turns out the *_defined entries of bch_io_opts are only used in one place - in the xattr get path - and there we immediately convert to a bch_opts struct, which also has the *_defined entries. This patch changes bch2_inode_opts_to_opts() to go directly from bch_inode_unpacked to bch_opts, which is a minor simplification and will also let us slim down struct bch_io_opts in another patch. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
98638ffa1d
commit
abb936fb9f
@ -763,3 +763,14 @@ void bch2_inode_nlink_dec(struct btree_trans *trans, struct bch_inode_unpacked *
|
||||
else
|
||||
bi->bi_flags |= BCH_INODE_UNLINKED;
|
||||
}
|
||||
|
||||
struct bch_opts bch2_inode_opts_to_opts(struct bch_inode_unpacked *inode)
|
||||
{
|
||||
struct bch_opts ret = { 0 };
|
||||
#define x(_name, _bits) \
|
||||
if (inode->bi_##_name) \
|
||||
opt_set(ret, _name, inode->bi_##_name - 1);
|
||||
BCH_INODE_OPTS()
|
||||
#undef x
|
||||
return ret;
|
||||
}
|
||||
|
@ -187,4 +187,6 @@ static inline void bch2_inode_nlink_set(struct bch_inode_unpacked *bi,
|
||||
int bch2_inode_nlink_inc(struct bch_inode_unpacked *);
|
||||
void bch2_inode_nlink_dec(struct btree_trans *, struct bch_inode_unpacked *);
|
||||
|
||||
struct bch_opts bch2_inode_opts_to_opts(struct bch_inode_unpacked *);
|
||||
|
||||
#endif /* _BCACHEFS_INODE_H */
|
||||
|
@ -540,17 +540,6 @@ struct bch_io_opts bch2_opts_to_inode_opts(struct bch_opts src)
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct bch_opts bch2_inode_opts_to_opts(struct bch_io_opts src)
|
||||
{
|
||||
struct bch_opts ret = { 0 };
|
||||
#define x(_name, _bits) \
|
||||
if (opt_defined(src, _name)) \
|
||||
opt_set(ret, _name, src._name);
|
||||
BCH_INODE_OPTS()
|
||||
#undef x
|
||||
return ret;
|
||||
}
|
||||
|
||||
void bch2_io_opts_apply(struct bch_io_opts *dst, struct bch_io_opts src)
|
||||
{
|
||||
#define x(_name, _bits) \
|
||||
|
@ -513,7 +513,6 @@ struct bch_io_opts {
|
||||
};
|
||||
|
||||
struct bch_io_opts bch2_opts_to_inode_opts(struct bch_opts);
|
||||
struct bch_opts bch2_inode_opts_to_opts(struct bch_io_opts);
|
||||
void bch2_io_opts_apply(struct bch_io_opts *, struct bch_io_opts);
|
||||
bool bch2_opt_is_inode_opt(enum bch_opt_id);
|
||||
|
||||
|
@ -444,7 +444,7 @@ static int __bch2_xattr_bcachefs_get(const struct xattr_handler *handler,
|
||||
struct bch_inode_info *inode = to_bch_ei(vinode);
|
||||
struct bch_fs *c = inode->v.i_sb->s_fs_info;
|
||||
struct bch_opts opts =
|
||||
bch2_inode_opts_to_opts(bch2_inode_opts_get(&inode->ei_inode));
|
||||
bch2_inode_opts_to_opts(&inode->ei_inode);
|
||||
const struct bch_option *opt;
|
||||
int id, inode_opt_id;
|
||||
struct printbuf out = PRINTBUF;
|
||||
|
Loading…
Reference in New Issue
Block a user