Commit 103ffe9a authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: x-macro-ify inode flags enum



This lets us use bch2_prt_bitflags to print them out.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent d4c8bb69
Loading
Loading
Loading
Loading
+24 −28
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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)
+2 −2
Original line number Diff line number Diff line
@@ -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) {
+14 −14
Original line number Diff line number Diff line
@@ -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;
};

+3 −3
Original line number Diff line number Diff line
@@ -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