summaryrefslogtreecommitdiff
path: root/fs/bcachefs/fs.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-12-17 05:31:49 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-10-22 17:08:13 -0400
commit96012e143e699db1a7644e4c5903b63bdde33772 (patch)
tree42d608d11785d609c5b24f9047726aec5571af9b /fs/bcachefs/fs.h
parent4d269918ed502cba80ddad998bdb087a633c63ab (diff)
downloadlwn-96012e143e699db1a7644e4c5903b63bdde33772.tar.gz
lwn-96012e143e699db1a7644e4c5903b63bdde33772.zip
bcachefs: rename keeps inheritable inode opts consistent
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/fs.h')
-rw-r--r--fs/bcachefs/fs.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/fs/bcachefs/fs.h b/fs/bcachefs/fs.h
index fbb31976bc55..18e41609c89d 100644
--- a/fs/bcachefs/fs.h
+++ b/fs/bcachefs/fs.h
@@ -66,6 +66,27 @@ static inline unsigned nlink_bias(umode_t mode)
return S_ISDIR(mode) ? 2 : 1;
}
+static inline bool inode_attr_changing(struct bch_inode_info *dir,
+ struct bch_inode_info *inode,
+ enum inode_opt_id id)
+{
+ return !(inode->ei_inode.bi_fields_set & (1 << id)) &&
+ bch2_inode_opt_get(&dir->ei_inode, id) !=
+ bch2_inode_opt_get(&inode->ei_inode, id);
+}
+
+static inline bool inode_attrs_changing(struct bch_inode_info *dir,
+ struct bch_inode_info *inode)
+{
+ unsigned id;
+
+ for (id = 0; id < Inode_opt_nr; id++)
+ if (inode_attr_changing(dir, inode, id))
+ return true;
+
+ return false;
+}
+
struct bch_inode_unpacked;
#ifndef NO_BCACHEFS_FS
@@ -91,6 +112,10 @@ int __must_check bch2_write_inode_trans(struct btree_trans *,
int __must_check bch2_write_inode(struct bch_fs *, struct bch_inode_info *,
inode_set_fn, void *, unsigned);
+int bch2_reinherit_attrs_fn(struct bch_inode_info *,
+ struct bch_inode_unpacked *,
+ void *);
+
void bch2_vfs_exit(void);
int bch2_vfs_init(void);