1*0b1e987cSChristoph Hellwig /* SPDX-License-Identifier: GPL-2.0-only */ 21da177e4SLinus Torvalds /* 31da177e4SLinus Torvalds * Copyright (c) 2000-2001 Christoph Hellwig. 41da177e4SLinus Torvalds */ 51da177e4SLinus Torvalds #ifndef _VXFS_OLT_H_ 61da177e4SLinus Torvalds #define _VXFS_OLT_H_ 71da177e4SLinus Torvalds 81da177e4SLinus Torvalds /* 91da177e4SLinus Torvalds * Veritas filesystem driver - Object Location Table data structures. 101da177e4SLinus Torvalds * 111da177e4SLinus Torvalds * This file contains definitions for the Object Location Table used 121da177e4SLinus Torvalds * by the Veritas Filesystem version 2 and newer. 131da177e4SLinus Torvalds */ 141da177e4SLinus Torvalds 151da177e4SLinus Torvalds 161da177e4SLinus Torvalds /* 171da177e4SLinus Torvalds * OLT magic number (vxfs_olt->olt_magic). 181da177e4SLinus Torvalds */ 191da177e4SLinus Torvalds #define VXFS_OLT_MAGIC 0xa504FCF5 201da177e4SLinus Torvalds 211da177e4SLinus Torvalds /* 221da177e4SLinus Torvalds * VxFS OLT entry types. 231da177e4SLinus Torvalds */ 241da177e4SLinus Torvalds enum { 251da177e4SLinus Torvalds VXFS_OLT_FREE = 1, 261da177e4SLinus Torvalds VXFS_OLT_FSHEAD = 2, 271da177e4SLinus Torvalds VXFS_OLT_CUT = 3, 281da177e4SLinus Torvalds VXFS_OLT_ILIST = 4, 291da177e4SLinus Torvalds VXFS_OLT_DEV = 5, 301da177e4SLinus Torvalds VXFS_OLT_SB = 6 311da177e4SLinus Torvalds }; 321da177e4SLinus Torvalds 331da177e4SLinus Torvalds /* 341da177e4SLinus Torvalds * VxFS OLT header. 351da177e4SLinus Torvalds * 361da177e4SLinus Torvalds * The Object Location Table header is placed at the beginning of each 371da177e4SLinus Torvalds * OLT extent. It is used to fing certain filesystem-wide metadata, e.g. 3825985edcSLucas De Marchi * the initial inode list, the fileset header or the device configuration. 391da177e4SLinus Torvalds */ 401da177e4SLinus Torvalds struct vxfs_olt { 410d83f7fcSKrzysztof Błaszkowski __fs32 olt_magic; /* magic number */ 420d83f7fcSKrzysztof Błaszkowski __fs32 olt_size; /* size of this entry */ 430d83f7fcSKrzysztof Błaszkowski __fs32 olt_checksum; /* checksum of extent */ 440d83f7fcSKrzysztof Błaszkowski __u32 __unused1; /* ??? */ 450d83f7fcSKrzysztof Błaszkowski __fs32 olt_mtime; /* time of last mod. (sec) */ 460d83f7fcSKrzysztof Błaszkowski __fs32 olt_mutime; /* time of last mod. (usec) */ 470d83f7fcSKrzysztof Błaszkowski __fs32 olt_totfree; /* free space in OLT extent */ 480d83f7fcSKrzysztof Błaszkowski __fs32 olt_extents[2]; /* addr of this extent, replica */ 490d83f7fcSKrzysztof Błaszkowski __fs32 olt_esize; /* size of this extent */ 500d83f7fcSKrzysztof Błaszkowski __fs32 olt_next[2]; /* addr of next extent, replica */ 510d83f7fcSKrzysztof Błaszkowski __fs32 olt_nsize; /* size of next extent */ 520d83f7fcSKrzysztof Błaszkowski __u32 __unused2; /* align to 8 byte boundary */ 531da177e4SLinus Torvalds }; 541da177e4SLinus Torvalds 551da177e4SLinus Torvalds /* 561da177e4SLinus Torvalds * VxFS common OLT entry (on disk). 571da177e4SLinus Torvalds */ 581da177e4SLinus Torvalds struct vxfs_oltcommon { 590d83f7fcSKrzysztof Błaszkowski __fs32 olt_type; /* type of this record */ 600d83f7fcSKrzysztof Błaszkowski __fs32 olt_size; /* size of this record */ 611da177e4SLinus Torvalds }; 621da177e4SLinus Torvalds 631da177e4SLinus Torvalds /* 641da177e4SLinus Torvalds * VxFS free OLT entry (on disk). 651da177e4SLinus Torvalds */ 661da177e4SLinus Torvalds struct vxfs_oltfree { 670d83f7fcSKrzysztof Błaszkowski __fs32 olt_type; /* type of this record */ 680d83f7fcSKrzysztof Błaszkowski __fs32 olt_fsize; /* size of this free record */ 691da177e4SLinus Torvalds }; 701da177e4SLinus Torvalds 711da177e4SLinus Torvalds /* 721da177e4SLinus Torvalds * VxFS initial-inode list (on disk). 731da177e4SLinus Torvalds */ 741da177e4SLinus Torvalds struct vxfs_oltilist { 750d83f7fcSKrzysztof Błaszkowski __fs32 olt_type; /* type of this record */ 760d83f7fcSKrzysztof Błaszkowski __fs32 olt_size; /* size of this record */ 770d83f7fcSKrzysztof Błaszkowski __fs32 olt_iext[2]; /* initial inode list, replica */ 781da177e4SLinus Torvalds }; 791da177e4SLinus Torvalds 801da177e4SLinus Torvalds /* 811da177e4SLinus Torvalds * Current Usage Table 821da177e4SLinus Torvalds */ 831da177e4SLinus Torvalds struct vxfs_oltcut { 840d83f7fcSKrzysztof Błaszkowski __fs32 olt_type; /* type of this record */ 850d83f7fcSKrzysztof Błaszkowski __fs32 olt_size; /* size of this record */ 860d83f7fcSKrzysztof Błaszkowski __fs32 olt_cutino; /* inode of current usage table */ 870d83f7fcSKrzysztof Błaszkowski __u8 __pad; /* unused, 8 byte align */ 881da177e4SLinus Torvalds }; 891da177e4SLinus Torvalds 901da177e4SLinus Torvalds /* 911da177e4SLinus Torvalds * Inodes containing Superblock, Intent log and OLTs 921da177e4SLinus Torvalds */ 931da177e4SLinus Torvalds struct vxfs_oltsb { 940d83f7fcSKrzysztof Błaszkowski __fs32 olt_type; /* type of this record */ 950d83f7fcSKrzysztof Błaszkowski __fs32 olt_size; /* size of this record */ 960d83f7fcSKrzysztof Błaszkowski __fs32 olt_sbino; /* inode of superblock file */ 970d83f7fcSKrzysztof Błaszkowski __u32 __unused1; /* ??? */ 980d83f7fcSKrzysztof Błaszkowski __fs32 olt_logino[2]; /* inode of log file,replica */ 990d83f7fcSKrzysztof Błaszkowski __fs32 olt_oltino[2]; /* inode of OLT, replica */ 1001da177e4SLinus Torvalds }; 1011da177e4SLinus Torvalds 1021da177e4SLinus Torvalds /* 1031da177e4SLinus Torvalds * Inode containing device configuration + it's replica 1041da177e4SLinus Torvalds */ 1051da177e4SLinus Torvalds struct vxfs_oltdev { 1060d83f7fcSKrzysztof Błaszkowski __fs32 olt_type; /* type of this record */ 1070d83f7fcSKrzysztof Błaszkowski __fs32 olt_size; /* size of this record */ 1080d83f7fcSKrzysztof Błaszkowski __fs32 olt_devino[2]; /* inode of device config files */ 1091da177e4SLinus Torvalds }; 1101da177e4SLinus Torvalds 1111da177e4SLinus Torvalds /* 1121da177e4SLinus Torvalds * Fileset header 1131da177e4SLinus Torvalds */ 1141da177e4SLinus Torvalds struct vxfs_oltfshead { 1150d83f7fcSKrzysztof Błaszkowski __fs32 olt_type; /* type number */ 1160d83f7fcSKrzysztof Błaszkowski __fs32 olt_size; /* size of this record */ 1170d83f7fcSKrzysztof Błaszkowski __fs32 olt_fsino[2]; /* inodes of fileset header */ 1181da177e4SLinus Torvalds }; 1191da177e4SLinus Torvalds 1201da177e4SLinus Torvalds #endif /* _VXFS_OLT_H_ */ 121