Loading fs/bcachefs/bcachefs_format.h +24 −28 Original line number Diff line number Diff line Loading @@ -824,34 +824,30 @@ enum inode_opt_id { Inode_opt_nr, }; enum { /* * User flags (get/settable with FS_IOC_*FLAGS, correspond to FS_*_FL * flags) */ __BCH_INODE_SYNC = 0, __BCH_INODE_IMMUTABLE = 1, __BCH_INODE_APPEND = 2, __BCH_INODE_NODUMP = 3, __BCH_INODE_NOATIME = 4, __BCH_INODE_I_SIZE_DIRTY = 5, /* obsolete */ __BCH_INODE_I_SECTORS_DIRTY = 6, /* obsolete */ __BCH_INODE_UNLINKED = 7, __BCH_INODE_BACKPTR_UNTRUSTED = 8, #define BCH_INODE_FLAGS() \ x(sync, 0) \ x(immutable, 1) \ x(append, 2) \ x(nodump, 3) \ x(noatime, 4) \ x(i_size_dirty, 5) \ x(i_sectors_dirty, 6) \ x(unlinked, 7) \ x(backptr_untrusted, 8) /* bits 20+ reserved for packed fields below: */ enum bch_inode_flags { #define x(t, n) BCH_INODE_##t = 1U << n, BCH_INODE_FLAGS() #undef x }; #define BCH_INODE_SYNC (1 << __BCH_INODE_SYNC) #define BCH_INODE_IMMUTABLE (1 << __BCH_INODE_IMMUTABLE) #define BCH_INODE_APPEND (1 << __BCH_INODE_APPEND) #define BCH_INODE_NODUMP (1 << __BCH_INODE_NODUMP) #define BCH_INODE_NOATIME (1 << __BCH_INODE_NOATIME) #define BCH_INODE_I_SIZE_DIRTY (1 << __BCH_INODE_I_SIZE_DIRTY) #define BCH_INODE_I_SECTORS_DIRTY (1 << __BCH_INODE_I_SECTORS_DIRTY) #define BCH_INODE_UNLINKED (1 << __BCH_INODE_UNLINKED) #define BCH_INODE_BACKPTR_UNTRUSTED (1 << __BCH_INODE_BACKPTR_UNTRUSTED) enum __bch_inode_flags { #define x(t, n) __BCH_INODE_##t = n, BCH_INODE_FLAGS() #undef x }; LE32_BITMASK(INODE_STR_HASH, struct bch_inode, bi_flags, 20, 24); LE32_BITMASK(INODE_NR_FIELDS, struct bch_inode, bi_flags, 24, 31); Loading fs/bcachefs/fs-common.c +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ int bch2_create_trans(struct btree_trans *trans, bch2_inode_init_late(new_inode, now, uid, gid, mode, rdev, dir_u); if (flags & BCH_CREATE_TMPFILE) new_inode->bi_flags |= BCH_INODE_UNLINKED; new_inode->bi_flags |= BCH_INODE_unlinked; ret = bch2_inode_create(trans, &inode_iter, new_inode, snapshot, cpu); if (ret) Loading fs/bcachefs/fs-ioctl.c +2 −2 Original line number Diff line number Diff line Loading @@ -45,13 +45,13 @@ static int bch2_inode_flags_set(struct btree_trans *trans, unsigned newflags = s->flags; unsigned oldflags = bi->bi_flags & s->mask; if (((newflags ^ oldflags) & (BCH_INODE_APPEND|BCH_INODE_IMMUTABLE)) && if (((newflags ^ oldflags) & (BCH_INODE_append|BCH_INODE_immutable)) && !capable(CAP_LINUX_IMMUTABLE)) return -EPERM; if (!S_ISREG(bi->bi_mode) && !S_ISDIR(bi->bi_mode) && (newflags & (BCH_INODE_NODUMP|BCH_INODE_NOATIME)) != newflags) (newflags & (BCH_INODE_nodump|BCH_INODE_noatime)) != newflags) return -EINVAL; if (s->set_projinherit) { Loading fs/bcachefs/fs-ioctl.h +14 −14 Original line number Diff line number Diff line Loading @@ -6,28 +6,28 @@ /* bcachefs inode flags -> vfs inode flags: */ static const __maybe_unused unsigned bch_flags_to_vfs[] = { [__BCH_INODE_SYNC] = S_SYNC, [__BCH_INODE_IMMUTABLE] = S_IMMUTABLE, [__BCH_INODE_APPEND] = S_APPEND, [__BCH_INODE_NOATIME] = S_NOATIME, [__BCH_INODE_sync] = S_SYNC, [__BCH_INODE_immutable] = S_IMMUTABLE, [__BCH_INODE_append] = S_APPEND, [__BCH_INODE_noatime] = S_NOATIME, }; /* bcachefs inode flags -> FS_IOC_GETFLAGS: */ static const __maybe_unused unsigned bch_flags_to_uflags[] = { [__BCH_INODE_SYNC] = FS_SYNC_FL, [__BCH_INODE_IMMUTABLE] = FS_IMMUTABLE_FL, [__BCH_INODE_APPEND] = FS_APPEND_FL, [__BCH_INODE_NODUMP] = FS_NODUMP_FL, [__BCH_INODE_NOATIME] = FS_NOATIME_FL, [__BCH_INODE_sync] = FS_SYNC_FL, [__BCH_INODE_immutable] = FS_IMMUTABLE_FL, [__BCH_INODE_append] = FS_APPEND_FL, [__BCH_INODE_nodump] = FS_NODUMP_FL, [__BCH_INODE_noatime] = FS_NOATIME_FL, }; /* bcachefs inode flags -> FS_IOC_FSGETXATTR: */ static const __maybe_unused unsigned bch_flags_to_xflags[] = { [__BCH_INODE_SYNC] = FS_XFLAG_SYNC, [__BCH_INODE_IMMUTABLE] = FS_XFLAG_IMMUTABLE, [__BCH_INODE_APPEND] = FS_XFLAG_APPEND, [__BCH_INODE_NODUMP] = FS_XFLAG_NODUMP, [__BCH_INODE_NOATIME] = FS_XFLAG_NOATIME, [__BCH_INODE_sync] = FS_XFLAG_SYNC, [__BCH_INODE_immutable] = FS_XFLAG_IMMUTABLE, [__BCH_INODE_append] = FS_XFLAG_APPEND, [__BCH_INODE_nodump] = FS_XFLAG_NODUMP, [__BCH_INODE_noatime] = FS_XFLAG_NOATIME, //[__BCH_INODE_PROJINHERIT] = FS_XFLAG_PROJINHERIT; }; Loading fs/bcachefs/fs.c +3 −3 Original line number Diff line number Diff line Loading @@ -764,15 +764,15 @@ static int bch2_getattr(struct mnt_idmap *idmap, stat->btime = bch2_time_to_timespec(c, inode->ei_inode.bi_otime); } if (inode->ei_inode.bi_flags & BCH_INODE_IMMUTABLE) if (inode->ei_inode.bi_flags & BCH_INODE_immutable) stat->attributes |= STATX_ATTR_IMMUTABLE; stat->attributes_mask |= STATX_ATTR_IMMUTABLE; if (inode->ei_inode.bi_flags & BCH_INODE_APPEND) if (inode->ei_inode.bi_flags & BCH_INODE_append) stat->attributes |= STATX_ATTR_APPEND; stat->attributes_mask |= STATX_ATTR_APPEND; if (inode->ei_inode.bi_flags & BCH_INODE_NODUMP) if (inode->ei_inode.bi_flags & BCH_INODE_nodump) stat->attributes |= STATX_ATTR_NODUMP; stat->attributes_mask |= STATX_ATTR_NODUMP; Loading Loading
fs/bcachefs/bcachefs_format.h +24 −28 Original line number Diff line number Diff line Loading @@ -824,34 +824,30 @@ enum inode_opt_id { Inode_opt_nr, }; enum { /* * User flags (get/settable with FS_IOC_*FLAGS, correspond to FS_*_FL * flags) */ __BCH_INODE_SYNC = 0, __BCH_INODE_IMMUTABLE = 1, __BCH_INODE_APPEND = 2, __BCH_INODE_NODUMP = 3, __BCH_INODE_NOATIME = 4, __BCH_INODE_I_SIZE_DIRTY = 5, /* obsolete */ __BCH_INODE_I_SECTORS_DIRTY = 6, /* obsolete */ __BCH_INODE_UNLINKED = 7, __BCH_INODE_BACKPTR_UNTRUSTED = 8, #define BCH_INODE_FLAGS() \ x(sync, 0) \ x(immutable, 1) \ x(append, 2) \ x(nodump, 3) \ x(noatime, 4) \ x(i_size_dirty, 5) \ x(i_sectors_dirty, 6) \ x(unlinked, 7) \ x(backptr_untrusted, 8) /* bits 20+ reserved for packed fields below: */ enum bch_inode_flags { #define x(t, n) BCH_INODE_##t = 1U << n, BCH_INODE_FLAGS() #undef x }; #define BCH_INODE_SYNC (1 << __BCH_INODE_SYNC) #define BCH_INODE_IMMUTABLE (1 << __BCH_INODE_IMMUTABLE) #define BCH_INODE_APPEND (1 << __BCH_INODE_APPEND) #define BCH_INODE_NODUMP (1 << __BCH_INODE_NODUMP) #define BCH_INODE_NOATIME (1 << __BCH_INODE_NOATIME) #define BCH_INODE_I_SIZE_DIRTY (1 << __BCH_INODE_I_SIZE_DIRTY) #define BCH_INODE_I_SECTORS_DIRTY (1 << __BCH_INODE_I_SECTORS_DIRTY) #define BCH_INODE_UNLINKED (1 << __BCH_INODE_UNLINKED) #define BCH_INODE_BACKPTR_UNTRUSTED (1 << __BCH_INODE_BACKPTR_UNTRUSTED) enum __bch_inode_flags { #define x(t, n) __BCH_INODE_##t = n, BCH_INODE_FLAGS() #undef x }; LE32_BITMASK(INODE_STR_HASH, struct bch_inode, bi_flags, 20, 24); LE32_BITMASK(INODE_NR_FIELDS, struct bch_inode, bi_flags, 24, 31); Loading
fs/bcachefs/fs-common.c +1 −1 Original line number Diff line number Diff line Loading @@ -51,7 +51,7 @@ int bch2_create_trans(struct btree_trans *trans, bch2_inode_init_late(new_inode, now, uid, gid, mode, rdev, dir_u); if (flags & BCH_CREATE_TMPFILE) new_inode->bi_flags |= BCH_INODE_UNLINKED; new_inode->bi_flags |= BCH_INODE_unlinked; ret = bch2_inode_create(trans, &inode_iter, new_inode, snapshot, cpu); if (ret) Loading
fs/bcachefs/fs-ioctl.c +2 −2 Original line number Diff line number Diff line Loading @@ -45,13 +45,13 @@ static int bch2_inode_flags_set(struct btree_trans *trans, unsigned newflags = s->flags; unsigned oldflags = bi->bi_flags & s->mask; if (((newflags ^ oldflags) & (BCH_INODE_APPEND|BCH_INODE_IMMUTABLE)) && if (((newflags ^ oldflags) & (BCH_INODE_append|BCH_INODE_immutable)) && !capable(CAP_LINUX_IMMUTABLE)) return -EPERM; if (!S_ISREG(bi->bi_mode) && !S_ISDIR(bi->bi_mode) && (newflags & (BCH_INODE_NODUMP|BCH_INODE_NOATIME)) != newflags) (newflags & (BCH_INODE_nodump|BCH_INODE_noatime)) != newflags) return -EINVAL; if (s->set_projinherit) { Loading
fs/bcachefs/fs-ioctl.h +14 −14 Original line number Diff line number Diff line Loading @@ -6,28 +6,28 @@ /* bcachefs inode flags -> vfs inode flags: */ static const __maybe_unused unsigned bch_flags_to_vfs[] = { [__BCH_INODE_SYNC] = S_SYNC, [__BCH_INODE_IMMUTABLE] = S_IMMUTABLE, [__BCH_INODE_APPEND] = S_APPEND, [__BCH_INODE_NOATIME] = S_NOATIME, [__BCH_INODE_sync] = S_SYNC, [__BCH_INODE_immutable] = S_IMMUTABLE, [__BCH_INODE_append] = S_APPEND, [__BCH_INODE_noatime] = S_NOATIME, }; /* bcachefs inode flags -> FS_IOC_GETFLAGS: */ static const __maybe_unused unsigned bch_flags_to_uflags[] = { [__BCH_INODE_SYNC] = FS_SYNC_FL, [__BCH_INODE_IMMUTABLE] = FS_IMMUTABLE_FL, [__BCH_INODE_APPEND] = FS_APPEND_FL, [__BCH_INODE_NODUMP] = FS_NODUMP_FL, [__BCH_INODE_NOATIME] = FS_NOATIME_FL, [__BCH_INODE_sync] = FS_SYNC_FL, [__BCH_INODE_immutable] = FS_IMMUTABLE_FL, [__BCH_INODE_append] = FS_APPEND_FL, [__BCH_INODE_nodump] = FS_NODUMP_FL, [__BCH_INODE_noatime] = FS_NOATIME_FL, }; /* bcachefs inode flags -> FS_IOC_FSGETXATTR: */ static const __maybe_unused unsigned bch_flags_to_xflags[] = { [__BCH_INODE_SYNC] = FS_XFLAG_SYNC, [__BCH_INODE_IMMUTABLE] = FS_XFLAG_IMMUTABLE, [__BCH_INODE_APPEND] = FS_XFLAG_APPEND, [__BCH_INODE_NODUMP] = FS_XFLAG_NODUMP, [__BCH_INODE_NOATIME] = FS_XFLAG_NOATIME, [__BCH_INODE_sync] = FS_XFLAG_SYNC, [__BCH_INODE_immutable] = FS_XFLAG_IMMUTABLE, [__BCH_INODE_append] = FS_XFLAG_APPEND, [__BCH_INODE_nodump] = FS_XFLAG_NODUMP, [__BCH_INODE_noatime] = FS_XFLAG_NOATIME, //[__BCH_INODE_PROJINHERIT] = FS_XFLAG_PROJINHERIT; }; Loading
fs/bcachefs/fs.c +3 −3 Original line number Diff line number Diff line Loading @@ -764,15 +764,15 @@ static int bch2_getattr(struct mnt_idmap *idmap, stat->btime = bch2_time_to_timespec(c, inode->ei_inode.bi_otime); } if (inode->ei_inode.bi_flags & BCH_INODE_IMMUTABLE) if (inode->ei_inode.bi_flags & BCH_INODE_immutable) stat->attributes |= STATX_ATTR_IMMUTABLE; stat->attributes_mask |= STATX_ATTR_IMMUTABLE; if (inode->ei_inode.bi_flags & BCH_INODE_APPEND) if (inode->ei_inode.bi_flags & BCH_INODE_append) stat->attributes |= STATX_ATTR_APPEND; stat->attributes_mask |= STATX_ATTR_APPEND; if (inode->ei_inode.bi_flags & BCH_INODE_NODUMP) if (inode->ei_inode.bi_flags & BCH_INODE_nodump) stat->attributes |= STATX_ATTR_NODUMP; stat->attributes_mask |= STATX_ATTR_NODUMP; Loading