~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/bcachefs/inode_format.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 #ifndef _BCACHEFS_INODE_FORMAT_H
  3 #define _BCACHEFS_INODE_FORMAT_H
  4 
  5 #define BLOCKDEV_INODE_MAX      4096
  6 #define BCACHEFS_ROOT_INO       4096
  7 
  8 struct 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 
 17 struct 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 
 27 struct 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    6
 40 #define INODEv3_FIELDS_START_CUR        (offsetof(struct bch_inode_v3, fields) / sizeof(__u64))
 41 
 42 struct 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 
119 enum inode_opt_id {
120 #define x(name, ...)                            \
121         Inode_opt_##name,
122         BCH_INODE_OPTS()
123 #undef  x
124         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 
138 /* bits 20+ reserved for packed fields below: */
139 
140 enum bch_inode_flags {
141 #define x(t, n) BCH_INODE_##t = 1U << n,
142         BCH_INODE_FLAGS()
143 #undef x
144 };
145 
146 enum __bch_inode_flags {
147 #define x(t, n) __BCH_INODE_##t = n,
148         BCH_INODE_FLAGS()
149 #undef x
150 };
151 
152 LE32_BITMASK(INODE_STR_HASH,    struct bch_inode, bi_flags, 20, 24);
153 LE32_BITMASK(INODE_NR_FIELDS,   struct bch_inode, bi_flags, 24, 31);
154 LE32_BITMASK(INODE_NEW_VARINT,  struct bch_inode, bi_flags, 31, 32);
155 
156 LE64_BITMASK(INODEv2_STR_HASH,  struct bch_inode_v2, bi_flags, 20, 24);
157 LE64_BITMASK(INODEv2_NR_FIELDS, struct bch_inode_v2, bi_flags, 24, 31);
158 
159 LE64_BITMASK(INODEv3_STR_HASH,  struct bch_inode_v3, bi_flags, 20, 24);
160 LE64_BITMASK(INODEv3_NR_FIELDS, struct bch_inode_v3, bi_flags, 24, 31);
161 
162 LE64_BITMASK(INODEv3_FIELDS_START,
163                                 struct bch_inode_v3, bi_flags, 31, 36);
164 LE64_BITMASK(INODEv3_MODE,      struct bch_inode_v3, bi_flags, 36, 52);
165 
166 #endif /* _BCACHEFS_INODE_FORMAT_H */
167 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php