1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Copyright (c) 2000-2001 Christoph Hellwig. |
4 | */ |
5 | #ifndef _VXFS_OLT_H_ |
6 | #define _VXFS_OLT_H_ |
7 | |
8 | /* |
9 | * Veritas filesystem driver - Object Location Table data structures. |
10 | * |
11 | * This file contains definitions for the Object Location Table used |
12 | * by the Veritas Filesystem version 2 and newer. |
13 | */ |
14 | |
15 | |
16 | /* |
17 | * OLT magic number (vxfs_olt->olt_magic). |
18 | */ |
19 | #define VXFS_OLT_MAGIC 0xa504FCF5 |
20 | |
21 | /* |
22 | * VxFS OLT entry types. |
23 | */ |
24 | enum { |
25 | VXFS_OLT_FREE = 1, |
26 | VXFS_OLT_FSHEAD = 2, |
27 | VXFS_OLT_CUT = 3, |
28 | VXFS_OLT_ILIST = 4, |
29 | VXFS_OLT_DEV = 5, |
30 | VXFS_OLT_SB = 6 |
31 | }; |
32 | |
33 | /* |
34 | * VxFS OLT header. |
35 | * |
36 | * The Object Location Table header is placed at the beginning of each |
37 | * OLT extent. It is used to fing certain filesystem-wide metadata, e.g. |
38 | * the initial inode list, the fileset header or the device configuration. |
39 | */ |
40 | struct vxfs_olt { |
41 | __fs32 olt_magic; /* magic number */ |
42 | __fs32 olt_size; /* size of this entry */ |
43 | __fs32 olt_checksum; /* checksum of extent */ |
44 | __u32 __unused1; /* ??? */ |
45 | __fs32 olt_mtime; /* time of last mod. (sec) */ |
46 | __fs32 olt_mutime; /* time of last mod. (usec) */ |
47 | __fs32 olt_totfree; /* free space in OLT extent */ |
48 | __fs32 olt_extents[2]; /* addr of this extent, replica */ |
49 | __fs32 olt_esize; /* size of this extent */ |
50 | __fs32 olt_next[2]; /* addr of next extent, replica */ |
51 | __fs32 olt_nsize; /* size of next extent */ |
52 | __u32 __unused2; /* align to 8 byte boundary */ |
53 | }; |
54 | |
55 | /* |
56 | * VxFS common OLT entry (on disk). |
57 | */ |
58 | struct vxfs_oltcommon { |
59 | __fs32 olt_type; /* type of this record */ |
60 | __fs32 olt_size; /* size of this record */ |
61 | }; |
62 | |
63 | /* |
64 | * VxFS free OLT entry (on disk). |
65 | */ |
66 | struct vxfs_oltfree { |
67 | __fs32 olt_type; /* type of this record */ |
68 | __fs32 olt_fsize; /* size of this free record */ |
69 | }; |
70 | |
71 | /* |
72 | * VxFS initial-inode list (on disk). |
73 | */ |
74 | struct vxfs_oltilist { |
75 | __fs32 olt_type; /* type of this record */ |
76 | __fs32 olt_size; /* size of this record */ |
77 | __fs32 olt_iext[2]; /* initial inode list, replica */ |
78 | }; |
79 | |
80 | /* |
81 | * Current Usage Table |
82 | */ |
83 | struct vxfs_oltcut { |
84 | __fs32 olt_type; /* type of this record */ |
85 | __fs32 olt_size; /* size of this record */ |
86 | __fs32 olt_cutino; /* inode of current usage table */ |
87 | __u8 __pad; /* unused, 8 byte align */ |
88 | }; |
89 | |
90 | /* |
91 | * Inodes containing Superblock, Intent log and OLTs |
92 | */ |
93 | struct vxfs_oltsb { |
94 | __fs32 olt_type; /* type of this record */ |
95 | __fs32 olt_size; /* size of this record */ |
96 | __fs32 olt_sbino; /* inode of superblock file */ |
97 | __u32 __unused1; /* ??? */ |
98 | __fs32 olt_logino[2]; /* inode of log file,replica */ |
99 | __fs32 olt_oltino[2]; /* inode of OLT, replica */ |
100 | }; |
101 | |
102 | /* |
103 | * Inode containing device configuration + it's replica |
104 | */ |
105 | struct vxfs_oltdev { |
106 | __fs32 olt_type; /* type of this record */ |
107 | __fs32 olt_size; /* size of this record */ |
108 | __fs32 olt_devino[2]; /* inode of device config files */ |
109 | }; |
110 | |
111 | /* |
112 | * Fileset header |
113 | */ |
114 | struct vxfs_oltfshead { |
115 | __fs32 olt_type; /* type number */ |
116 | __fs32 olt_size; /* size of this record */ |
117 | __fs32 olt_fsino[2]; /* inodes of fileset header */ |
118 | }; |
119 | |
120 | #endif /* _VXFS_OLT_H_ */ |
121 | |