Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
vxfs_olt.h
Go to the documentation of this file.
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_OLT_H_
31 #define _VXFS_OLT_H_
32 
33 /*
34  * Veritas filesystem driver - Object Location Table data structures.
35  *
36  * This file contains definitions for the Object Location Table used
37  * by the Veritas Filesystem version 2 and newer.
38  */
39 
40 
41 /*
42  * OLT magic number (vxfs_olt->olt_magic).
43  */
44 #define VXFS_OLT_MAGIC 0xa504FCF5
45 
46 /*
47  * VxFS OLT entry types.
48  */
49 enum {
56 };
57 
58 /*
59  * VxFS OLT header.
60  *
61  * The Object Location Table header is placed at the beginning of each
62  * OLT extent. It is used to fing certain filesystem-wide metadata, e.g.
63  * the initial inode list, the fileset header or the device configuration.
64  */
65 struct vxfs_olt {
66  u_int32_t olt_magic; /* magic number */
67  u_int32_t olt_size; /* size of this entry */
68  u_int32_t olt_checksum; /* checksum of extent */
69  u_int32_t __unused1; /* ??? */
70  u_int32_t olt_mtime; /* time of last mod. (sec) */
71  u_int32_t olt_mutime; /* time of last mod. (usec) */
72  u_int32_t olt_totfree; /* free space in OLT extent */
73  vx_daddr_t olt_extents[2]; /* addr of this extent, replica */
74  u_int32_t olt_esize; /* size of this extent */
75  vx_daddr_t olt_next[2]; /* addr of next extent, replica */
76  u_int32_t olt_nsize; /* size of next extent */
77  u_int32_t __unused2; /* align to 8 byte boundary */
78 };
79 
80 /*
81  * VxFS common OLT entry (on disk).
82  */
84  u_int32_t olt_type; /* type of this record */
85  u_int32_t olt_size; /* size of this record */
86 };
87 
88 /*
89  * VxFS free OLT entry (on disk).
90  */
91 struct vxfs_oltfree {
92  u_int32_t olt_type; /* type of this record */
93  u_int32_t olt_fsize; /* size of this free record */
94 };
95 
96 /*
97  * VxFS initial-inode list (on disk).
98  */
99 struct vxfs_oltilist {
100  u_int32_t olt_type; /* type of this record */
101  u_int32_t olt_size; /* size of this record */
102  vx_ino_t olt_iext[2]; /* initial inode list, replica */
103 };
104 
105 /*
106  * Current Usage Table
107  */
108 struct vxfs_oltcut {
109  u_int32_t olt_type; /* type of this record */
110  u_int32_t olt_size; /* size of this record */
111  vx_ino_t olt_cutino; /* inode of current usage table */
112  u_int32_t __pad; /* unused, 8 byte align */
113 };
114 
115 /*
116  * Inodes containing Superblock, Intent log and OLTs
117  */
118 struct vxfs_oltsb {
119  u_int32_t olt_type; /* type of this record */
120  u_int32_t olt_size; /* size of this record */
121  vx_ino_t olt_sbino; /* inode of superblock file */
122  u_int32_t __unused1; /* ??? */
123  vx_ino_t olt_logino[2]; /* inode of log file,replica */
124  vx_ino_t olt_oltino[2]; /* inode of OLT, replica */
125 };
126 
127 /*
128  * Inode containing device configuration + it's replica
129  */
130 struct vxfs_oltdev {
131  u_int32_t olt_type; /* type of this record */
132  u_int32_t olt_size; /* size of this record */
133  vx_ino_t olt_devino[2]; /* inode of device config files */
134 };
135 
136 /*
137  * Fileset header
138  */
140  u_int32_t olt_type; /* type number */
141  u_int32_t olt_size; /* size of this record */
142  vx_ino_t olt_fsino[2]; /* inodes of fileset header */
143 };
144 
145 #endif /* _VXFS_OLT_H_ */