This source file includes following definitions.
- VXFS_INO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #ifndef _VXFS_INODE_H_
32 #define _VXFS_INODE_H_
33
34
35
36
37
38
39
40
41
42 #define VXFS_ISIZE 0x100
43
44 #define VXFS_NDADDR 10
45 #define VXFS_NIADDR 2
46 #define VXFS_NIMMED 96
47 #define VXFS_NTYPED 6
48
49 #define VXFS_TYPED_OFFSETMASK (0x00FFFFFFFFFFFFFFULL)
50 #define VXFS_TYPED_TYPEMASK (0xFF00000000000000ULL)
51 #define VXFS_TYPED_TYPESHIFT 56
52
53 #define VXFS_TYPED_PER_BLOCK(sbp) \
54 ((sbp)->s_blocksize / sizeof(struct vxfs_typed))
55
56
57
58
59 enum {
60 VXFS_TYPED_INDIRECT = 1,
61 VXFS_TYPED_DATA = 2,
62 VXFS_TYPED_INDIRECT_DEV4 = 3,
63 VXFS_TYPED_DATA_DEV4 = 4,
64 };
65
66
67
68
69 struct vxfs_immed {
70 __u8 vi_immed[VXFS_NIMMED];
71 };
72
73 struct vxfs_ext4 {
74 __fs32 ve4_spare;
75 __fs32 ve4_indsize;
76 __fs32 ve4_indir[VXFS_NIADDR];
77 struct direct {
78 __fs32 extent;
79 __fs32 size;
80 } ve4_direct[VXFS_NDADDR];
81 };
82
83 struct vxfs_typed {
84 __fs64 vt_hdr;
85 __fs32 vt_block;
86 __fs32 vt_size;
87 };
88
89 struct vxfs_typed_dev4 {
90 __fs64 vd4_hdr;
91 __fs64 vd4_block;
92 __fs64 vd4_size;
93 __fs32 vd4_dev;
94 __u8 __pad1;
95 };
96
97
98
99
100 struct vxfs_dinode {
101 __fs32 vdi_mode;
102 __fs32 vdi_nlink;
103 __fs32 vdi_uid;
104 __fs32 vdi_gid;
105 __fs64 vdi_size;
106 __fs32 vdi_atime;
107 __fs32 vdi_autime;
108 __fs32 vdi_mtime;
109 __fs32 vdi_mutime;
110 __fs32 vdi_ctime;
111 __fs32 vdi_cutime;
112 __u8 vdi_aflags;
113 __u8 vdi_orgtype;
114 __fs16 vdi_eopflags;
115 __fs32 vdi_eopdata;
116 union {
117 __fs32 rdev;
118 __fs32 dotdot;
119 struct {
120 __u32 reserved;
121 __fs32 fixextsize;
122 } i_regular;
123 struct {
124 __fs32 matchino;
125 __fs32 fsetindex;
126 } i_vxspec;
127 __u64 align;
128 } vdi_ftarea;
129 __fs32 vdi_blocks;
130 __fs32 vdi_gen;
131 __fs64 vdi_version;
132 union {
133 struct vxfs_immed immed;
134 struct vxfs_ext4 ext4;
135 struct vxfs_typed typed[VXFS_NTYPED];
136 } vdi_org;
137 __fs32 vdi_iattrino;
138 };
139
140 #define vdi_rdev vdi_ftarea.rdev
141 #define vdi_dotdot vdi_ftarea.dotdot
142 #define vdi_fixextsize vdi_ftarea.regular.fixextsize
143 #define vdi_matchino vdi_ftarea.vxspec.matchino
144 #define vdi_fsetindex vdi_ftarea.vxspec.fsetindex
145
146 #define vdi_immed vdi_org.immed
147 #define vdi_ext4 vdi_org.ext4
148 #define vdi_typed vdi_org.typed
149
150
151
152
153
154 struct vxfs_inode_info {
155 struct inode vfs_inode;
156
157 __u32 vii_mode;
158 __u32 vii_nlink;
159 __u32 vii_uid;
160 __u32 vii_gid;
161 __u64 vii_size;
162 __u32 vii_atime;
163 __u32 vii_autime;
164 __u32 vii_mtime;
165 __u32 vii_mutime;
166 __u32 vii_ctime;
167 __u32 vii_cutime;
168 __u8 vii_orgtype;
169 union {
170 __u32 rdev;
171 __u32 dotdot;
172 } vii_ftarea;
173 __u32 vii_blocks;
174 __u32 vii_gen;
175 union {
176 struct vxfs_immed immed;
177 struct vxfs_ext4 ext4;
178 struct vxfs_typed typed[VXFS_NTYPED];
179 } vii_org;
180 };
181
182 #define vii_rdev vii_ftarea.rdev
183 #define vii_dotdot vii_ftarea.dotdot
184
185 #define vii_immed vii_org.immed
186 #define vii_ext4 vii_org.ext4
187 #define vii_typed vii_org.typed
188
189 static inline struct vxfs_inode_info *VXFS_INO(struct inode *inode)
190 {
191 return container_of(inode, struct vxfs_inode_info, vfs_inode);
192 }
193
194 #endif