1/*
2 * efs_vh.h
3 *
4 * Copyright (c) 1999 Al Smith
5 *
6 * Portions derived from IRIX header files (c) 1985 MIPS Computer Systems, Inc.
7 */
8
9#ifndef __EFS_VH_H__
10#define __EFS_VH_H__
11
12#define VHMAGIC		0xbe5a941	/* volume header magic number */
13#define NPARTAB		16		/* 16 unix partitions */
14#define NVDIR		15		/* max of 15 directory entries */
15#define BFNAMESIZE	16		/* max 16 chars in boot file name */
16#define VDNAMESIZE	8
17
18struct volume_directory {
19	char	vd_name[VDNAMESIZE];	/* name */
20	__be32	vd_lbn;			/* logical block number */
21	__be32	vd_nbytes;		/* file length in bytes */
22};
23
24struct partition_table {	/* one per logical partition */
25	__be32	pt_nblks;	/* # of logical blks in partition */
26	__be32	pt_firstlbn;	/* first lbn of partition */
27	__be32	pt_type;	/* use of partition */
28};
29
30struct volume_header {
31	__be32	vh_magic;			/* identifies volume header */
32	__be16	vh_rootpt;			/* root partition number */
33	__be16	vh_swappt;			/* swap partition number */
34	char	vh_bootfile[BFNAMESIZE];	/* name of file to boot */
35	char	pad[48];			/* device param space */
36	struct volume_directory vh_vd[NVDIR];	/* other vol hdr contents */
37	struct partition_table  vh_pt[NPARTAB];	/* device partition layout */
38	__be32	vh_csum;			/* volume header checksum */
39	__be32	vh_fill;			/* fill out to 512 bytes */
40};
41
42/* partition type sysv is used for EFS format CD-ROM partitions */
43#define SGI_SYSV	0x05
44#define SGI_EFS		0x07
45#define IS_EFS(x)	(((x) == SGI_EFS) || ((x) == SGI_SYSV))
46
47struct pt_types {
48	int	pt_type;
49	char	*pt_name;
50};
51
52#endif /* __EFS_VH_H__ */
53