diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /fs/freevxfs/vxfs_inode.h |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'fs/freevxfs/vxfs_inode.h')
-rw-r--r-- | fs/freevxfs/vxfs_inode.h | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/fs/freevxfs/vxfs_inode.h b/fs/freevxfs/vxfs_inode.h new file mode 100644 index 000000000000..240aeb11263f --- /dev/null +++ b/fs/freevxfs/vxfs_inode.h | |||
@@ -0,0 +1,180 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000-2001 Christoph Hellwig. | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions | ||
7 | * are met: | ||
8 | * 1. Redistributions of source code must retain the above copyright | ||
9 | * notice, this list of conditions, and the following disclaimer, | ||
10 | * without modification. | ||
11 | * 2. The name of the author may not be used to endorse or promote products | ||
12 | * derived from this software without specific prior written permission. | ||
13 | * | ||
14 | * Alternatively, this software may be distributed under the terms of the | ||
15 | * GNU General Public License ("GPL"). | ||
16 | * | ||
17 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | ||
18 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
19 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
20 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR | ||
21 | * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
22 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
23 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
24 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
25 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
26 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
27 | * SUCH DAMAGE. | ||
28 | * | ||
29 | */ | ||
30 | #ifndef _VXFS_INODE_H_ | ||
31 | #define _VXFS_INODE_H_ | ||
32 | |||
33 | /* | ||
34 | * Veritas filesystem driver - inode structure. | ||
35 | * | ||
36 | * This file contains the definition of the disk and core | ||
37 | * inodes of the Veritas Filesystem. | ||
38 | */ | ||
39 | |||
40 | |||
41 | #define VXFS_ISIZE 0x100 /* Inode size */ | ||
42 | |||
43 | #define VXFS_NDADDR 10 /* Number of direct addrs in inode */ | ||
44 | #define VXFS_NIADDR 2 /* Number of indirect addrs in inode */ | ||
45 | #define VXFS_NIMMED 96 /* Size of immediate data in inode */ | ||
46 | #define VXFS_NTYPED 6 /* Num of typed extents */ | ||
47 | |||
48 | #define VXFS_TYPED_OFFSETMASK (0x00FFFFFFFFFFFFFFULL) | ||
49 | #define VXFS_TYPED_TYPEMASK (0xFF00000000000000ULL) | ||
50 | #define VXFS_TYPED_TYPESHIFT 56 | ||
51 | |||
52 | #define VXFS_TYPED_PER_BLOCK(sbp) \ | ||
53 | ((sbp)->s_blocksize / sizeof(struct vxfs_typed)) | ||
54 | |||
55 | /* | ||
56 | * Possible extent descriptor types for %VXFS_ORG_TYPED extents. | ||
57 | */ | ||
58 | enum { | ||
59 | VXFS_TYPED_INDIRECT = 1, | ||
60 | VXFS_TYPED_DATA = 2, | ||
61 | VXFS_TYPED_INDIRECT_DEV4 = 3, | ||
62 | VXFS_TYPED_DATA_DEV4 = 4, | ||
63 | }; | ||
64 | |||
65 | /* | ||
66 | * Data stored immediately in the inode. | ||
67 | */ | ||
68 | struct vxfs_immed { | ||
69 | u_int8_t vi_immed[VXFS_NIMMED]; | ||
70 | }; | ||
71 | |||
72 | struct vxfs_ext4 { | ||
73 | u_int32_t ve4_spare; /* ?? */ | ||
74 | u_int32_t ve4_indsize; /* Indirect extent size */ | ||
75 | vx_daddr_t ve4_indir[VXFS_NIADDR]; /* Indirect extents */ | ||
76 | struct direct { /* Direct extents */ | ||
77 | vx_daddr_t extent; /* Extent number */ | ||
78 | int32_t size; /* Size of extent */ | ||
79 | } ve4_direct[VXFS_NDADDR]; | ||
80 | }; | ||
81 | |||
82 | struct vxfs_typed { | ||
83 | u_int64_t vt_hdr; /* Header, 0xTTOOOOOOOOOOOOOO; T=type,O=offs */ | ||
84 | vx_daddr_t vt_block; /* Extent block */ | ||
85 | int32_t vt_size; /* Size in blocks */ | ||
86 | }; | ||
87 | |||
88 | struct vxfs_typed_dev4 { | ||
89 | u_int64_t vd4_hdr; /* Header, 0xTTOOOOOOOOOOOOOO; T=type,O=offs */ | ||
90 | u_int64_t vd4_block; /* Extent block */ | ||
91 | u_int64_t vd4_size; /* Size in blocks */ | ||
92 | int32_t vd4_dev; /* Device ID */ | ||
93 | u_int32_t __pad1; | ||
94 | }; | ||
95 | |||
96 | /* | ||
97 | * The inode as contained on the physical device. | ||
98 | */ | ||
99 | struct vxfs_dinode { | ||
100 | int32_t vdi_mode; | ||
101 | u_int32_t vdi_nlink; /* Link count */ | ||
102 | u_int32_t vdi_uid; /* UID */ | ||
103 | u_int32_t vdi_gid; /* GID */ | ||
104 | u_int64_t vdi_size; /* Inode size in bytes */ | ||
105 | u_int32_t vdi_atime; /* Last time accessed - sec */ | ||
106 | u_int32_t vdi_autime; /* Last time accessed - usec */ | ||
107 | u_int32_t vdi_mtime; /* Last modify time - sec */ | ||
108 | u_int32_t vdi_mutime; /* Last modify time - usec */ | ||
109 | u_int32_t vdi_ctime; /* Create time - sec */ | ||
110 | u_int32_t vdi_cutime; /* Create time - usec */ | ||
111 | u_int8_t vdi_aflags; /* Allocation flags */ | ||
112 | u_int8_t vdi_orgtype; /* Organisation type */ | ||
113 | u_int16_t vdi_eopflags; | ||
114 | u_int32_t vdi_eopdata; | ||
115 | union { | ||
116 | u_int32_t rdev; | ||
117 | u_int32_t dotdot; | ||
118 | struct { | ||
119 | u_int32_t reserved; | ||
120 | u_int32_t fixextsize; | ||
121 | } i_regular; | ||
122 | struct { | ||
123 | u_int32_t matchino; | ||
124 | u_int32_t fsetindex; | ||
125 | } i_vxspec; | ||
126 | u_int64_t align; | ||
127 | } vdi_ftarea; | ||
128 | u_int32_t vdi_blocks; /* How much blocks does inode occupy */ | ||
129 | u_int32_t vdi_gen; /* Inode generation */ | ||
130 | u_int64_t vdi_version; /* Version */ | ||
131 | union { | ||
132 | struct vxfs_immed immed; | ||
133 | struct vxfs_ext4 ext4; | ||
134 | struct vxfs_typed typed[VXFS_NTYPED]; | ||
135 | } vdi_org; | ||
136 | u_int32_t vdi_iattrino; | ||
137 | }; | ||
138 | |||
139 | #define vdi_rdev vdi_ftarea.rdev | ||
140 | #define vdi_dotdot vdi_ftarea.dotdot | ||
141 | #define vdi_fixextsize vdi_ftarea.regular.fixextsize | ||
142 | #define vdi_matchino vdi_ftarea.vxspec.matchino | ||
143 | #define vdi_fsetindex vdi_ftarea.vxspec.fsetindex | ||
144 | |||
145 | #define vdi_immed vdi_org.immed | ||
146 | #define vdi_ext4 vdi_org.ext4 | ||
147 | #define vdi_typed vdi_org.typed | ||
148 | |||
149 | |||
150 | /* | ||
151 | * The inode as represented in the main memory. | ||
152 | * | ||
153 | * TBD: This should become a separate structure... | ||
154 | */ | ||
155 | #define vxfs_inode_info vxfs_dinode | ||
156 | |||
157 | #define vii_mode vdi_mode | ||
158 | #define vii_uid vdi_uid | ||
159 | #define vii_gid vdi_gid | ||
160 | #define vii_nlink vdi_nlink | ||
161 | #define vii_size vdi_size | ||
162 | #define vii_atime vdi_atime | ||
163 | #define vii_ctime vdi_ctime | ||
164 | #define vii_mtime vdi_mtime | ||
165 | #define vii_blocks vdi_blocks | ||
166 | #define vii_org vdi_org | ||
167 | #define vii_orgtype vdi_orgtype | ||
168 | #define vii_gen vdi_gen | ||
169 | |||
170 | #define vii_rdev vdi_ftarea.rdev | ||
171 | #define vii_dotdot vdi_ftarea.dotdot | ||
172 | #define vii_fixextsize vdi_ftarea.regular.fixextsize | ||
173 | #define vii_matchino vdi_ftarea.vxspec.matchino | ||
174 | #define vii_fsetindex vdi_ftarea.vxspec.fsetindex | ||
175 | |||
176 | #define vii_immed vdi_org.immed | ||
177 | #define vii_ext4 vdi_org.ext4 | ||
178 | #define vii_typed vdi_org.typed | ||
179 | |||
180 | #endif /* _VXFS_INODE_H_ */ | ||