brintos

brintos / linux-shallow public Read only

0
0
Text · 3.8 KiB · 7928d0c Raw
168 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef _BCACHEFS_INODE_FORMAT_H3#define _BCACHEFS_INODE_FORMAT_H4 5#define BLOCKDEV_INODE_MAX	40966#define BCACHEFS_ROOT_INO	40967 8struct bch_inode {9	struct bch_val		v;10 11	__le64			bi_hash_seed;12	__le32			bi_flags;13	__le16			bi_mode;14	__u8			fields[];15} __packed __aligned(8);16 17struct bch_inode_v2 {18	struct bch_val		v;19 20	__le64			bi_journal_seq;21	__le64			bi_hash_seed;22	__le64			bi_flags;23	__le16			bi_mode;24	__u8			fields[];25} __packed __aligned(8);26 27struct bch_inode_v3 {28	struct bch_val		v;29 30	__le64			bi_journal_seq;31	__le64			bi_hash_seed;32	__le64			bi_flags;33	__le64			bi_sectors;34	__le64			bi_size;35	__le64			bi_version;36	__u8			fields[];37} __packed __aligned(8);38 39#define INODEv3_FIELDS_START_INITIAL	640#define INODEv3_FIELDS_START_CUR	(offsetof(struct bch_inode_v3, fields) / sizeof(__u64))41 42struct bch_inode_generation {43	struct bch_val		v;44 45	__le32			bi_generation;46	__le32			pad;47} __packed __aligned(8);48 49/*50 * bi_subvol and bi_parent_subvol are only set for subvolume roots:51 */52 53#define BCH_INODE_FIELDS_v2()			\54	x(bi_atime,			96)	\55	x(bi_ctime,			96)	\56	x(bi_mtime,			96)	\57	x(bi_otime,			96)	\58	x(bi_size,			64)	\59	x(bi_sectors,			64)	\60	x(bi_uid,			32)	\61	x(bi_gid,			32)	\62	x(bi_nlink,			32)	\63	x(bi_generation,		32)	\64	x(bi_dev,			32)	\65	x(bi_data_checksum,		8)	\66	x(bi_compression,		8)	\67	x(bi_project,			32)	\68	x(bi_background_compression,	8)	\69	x(bi_data_replicas,		8)	\70	x(bi_promote_target,		16)	\71	x(bi_foreground_target,		16)	\72	x(bi_background_target,		16)	\73	x(bi_erasure_code,		16)	\74	x(bi_fields_set,		16)	\75	x(bi_dir,			64)	\76	x(bi_dir_offset,		64)	\77	x(bi_subvol,			32)	\78	x(bi_parent_subvol,		32)79 80#define BCH_INODE_FIELDS_v3()			\81	x(bi_atime,			96)	\82	x(bi_ctime,			96)	\83	x(bi_mtime,			96)	\84	x(bi_otime,			96)	\85	x(bi_uid,			32)	\86	x(bi_gid,			32)	\87	x(bi_nlink,			32)	\88	x(bi_generation,		32)	\89	x(bi_dev,			32)	\90	x(bi_data_checksum,		8)	\91	x(bi_compression,		8)	\92	x(bi_project,			32)	\93	x(bi_background_compression,	8)	\94	x(bi_data_replicas,		8)	\95	x(bi_promote_target,		16)	\96	x(bi_foreground_target,		16)	\97	x(bi_background_target,		16)	\98	x(bi_erasure_code,		16)	\99	x(bi_fields_set,		16)	\100	x(bi_dir,			64)	\101	x(bi_dir_offset,		64)	\102	x(bi_subvol,			32)	\103	x(bi_parent_subvol,		32)	\104	x(bi_nocow,			8)105 106/* subset of BCH_INODE_FIELDS */107#define BCH_INODE_OPTS()			\108	x(data_checksum,		8)	\109	x(compression,			8)	\110	x(project,			32)	\111	x(background_compression,	8)	\112	x(data_replicas,		8)	\113	x(promote_target,		16)	\114	x(foreground_target,		16)	\115	x(background_target,		16)	\116	x(erasure_code,			16)	\117	x(nocow,			8)118 119enum inode_opt_id {120#define x(name, ...)				\121	Inode_opt_##name,122	BCH_INODE_OPTS()123#undef  x124	Inode_opt_nr,125};126 127#define BCH_INODE_FLAGS()			\128	x(sync,				0)	\129	x(immutable,			1)	\130	x(append,			2)	\131	x(nodump,			3)	\132	x(noatime,			4)	\133	x(i_size_dirty,			5)	\134	x(i_sectors_dirty,		6)	\135	x(unlinked,			7)	\136	x(backptr_untrusted,		8)	\137	x(has_child_snapshot,		9)138 139/* bits 20+ reserved for packed fields below: */140 141enum bch_inode_flags {142#define x(t, n)	BCH_INODE_##t = 1U << n,143	BCH_INODE_FLAGS()144#undef x145};146 147enum __bch_inode_flags {148#define x(t, n)	__BCH_INODE_##t = n,149	BCH_INODE_FLAGS()150#undef x151};152 153LE32_BITMASK(INODEv1_STR_HASH,	struct bch_inode, bi_flags, 20, 24);154LE32_BITMASK(INODEv1_NR_FIELDS,	struct bch_inode, bi_flags, 24, 31);155LE32_BITMASK(INODEv1_NEW_VARINT,struct bch_inode, bi_flags, 31, 32);156 157LE64_BITMASK(INODEv2_STR_HASH,	struct bch_inode_v2, bi_flags, 20, 24);158LE64_BITMASK(INODEv2_NR_FIELDS,	struct bch_inode_v2, bi_flags, 24, 31);159 160LE64_BITMASK(INODEv3_STR_HASH,	struct bch_inode_v3, bi_flags, 20, 24);161LE64_BITMASK(INODEv3_NR_FIELDS,	struct bch_inode_v3, bi_flags, 24, 31);162 163LE64_BITMASK(INODEv3_FIELDS_START,164				struct bch_inode_v3, bi_flags, 31, 36);165LE64_BITMASK(INODEv3_MODE,	struct bch_inode_v3, bi_flags, 36, 52);166 167#endif /* _BCACHEFS_INODE_FORMAT_H */168