Home | History | Annotate | Line # | Download | only in efs
      1  1.1  rumble /*	$NetBSD: efs_sb.h,v 1.1 2007/06/29 23:30:29 rumble Exp $	*/
      2  1.1  rumble 
      3  1.1  rumble /*
      4  1.1  rumble  * Copyright (c) 2006 Stephen M. Rumble <rumble (at) ephemeral.org>
      5  1.1  rumble  *
      6  1.1  rumble  * Permission to use, copy, modify, and distribute this software for any
      7  1.1  rumble  * purpose with or without fee is hereby granted, provided that the above
      8  1.1  rumble  * copyright notice and this permission notice appear in all copies.
      9  1.1  rumble  *
     10  1.1  rumble  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     11  1.1  rumble  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     12  1.1  rumble  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     13  1.1  rumble  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     14  1.1  rumble  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     15  1.1  rumble  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     16  1.1  rumble  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     17  1.1  rumble  */
     18  1.1  rumble 
     19  1.1  rumble /*
     20  1.1  rumble  * See IRIX efs(4)
     21  1.1  rumble  */
     22  1.1  rumble 
     23  1.1  rumble #ifndef _FS_EFS_EFS_SB_H_
     24  1.1  rumble #define _FS_EFS_EFS_SB_H_
     25  1.1  rumble 
     26  1.1  rumble /*
     27  1.1  rumble  * EFS superblock (92 bytes)
     28  1.1  rumble  *
     29  1.1  rumble  * Notes:
     30  1.1  rumble  *   [0] - Values can either be EFS_SB_MAGIC, or EFS_SB_NEWMAGIC (IRIX 3.3+).
     31  1.1  rumble  *   [1] - Only used in a grown filesystem. Original bitmap is unused.
     32  1.1  rumble  *   [2] - Only exists in IRIX3.3+. (XXX - IRIX man pages say 3.3+ fsck
     33  1.1  rumble  *         creates a replicated superblock if space free. Does it update magic?)
     34  1.1  rumble  *   [3] - According to IRIX kernel elf headers, two checksum routines exist.
     35  1.1  rumble  *   [4] - New at some point (in IRIX 5, but apparently not in IRIX 4).
     36  1.1  rumble  */
     37  1.1  rumble struct efs_sb {
     38  1.1  rumble 	int32_t		sb_size;	/* 0:   fs size incl. bb 0 (in bb) */
     39  1.1  rumble 	int32_t		sb_firstcg;	/* 4:   first cg offset (in bb) */
     40  1.1  rumble 	int32_t		sb_cgfsize;	/* 8:   cg size (in bb) */
     41  1.1  rumble 	int16_t		sb_cgisize;	/* 12:  inodes/cg (in bb) */
     42  1.1  rumble 	int16_t		sb_sectors;	/* 14:  geom: sectors/track */
     43  1.1  rumble 	int16_t		sb_heads;	/* 16:  geom: heads/cylinder (unused) */
     44  1.1  rumble 	int16_t		sb_ncg;		/* 18:  num of cg's in the filesystem */
     45  1.1  rumble 	int16_t		sb_dirty;	/* 20:  non-0 indicates fsck required */
     46  1.1  rumble 	int16_t		sb_pad0;	/* 22:  */
     47  1.1  rumble 	int32_t		sb_time;	/* 24:  superblock ctime */
     48  1.1  rumble 	int32_t		sb_magic;	/* 28:  magic [0] */
     49  1.1  rumble 	char		sb_fname[6];	/* 32:  name of filesystem */
     50  1.1  rumble 	char		sb_fpack[6];	/* 38:  name of filesystem pack */
     51  1.1  rumble 	int32_t		sb_bmsize;	/* 44:  bitmap size (in bytes) */
     52  1.1  rumble 	int32_t		sb_tfree;	/* 48:  total free data blocks */
     53  1.1  rumble 	int32_t		sb_tinode;	/* 52:  total free inodes */
     54  1.1  rumble 	int32_t		sb_bmblock;	/* 56:  bitmap offset (grown fs) [1] */
     55  1.1  rumble 	int32_t		sb_replsb;	/* 62:  repl. superblock offset [2] */
     56  1.1  rumble 	int32_t		sb_lastinode;	/* 64:  last allocated inode [4] */
     57  1.1  rumble 	int8_t		sb_spare[20];	/* 68:  unused */
     58  1.1  rumble 	int32_t		sb_checksum;	/* 88:  checksum (all above) [3] */
     59  1.1  rumble } __packed;
     60  1.1  rumble 
     61  1.1  rumble #define EFS_SB_SIZE		(sizeof(struct efs_sb))
     62  1.1  rumble #define EFS_SB_CHECKSUM_SIZE	(EFS_SB_SIZE - 4)
     63  1.1  rumble 
     64  1.1  rumble #define EFS_SB_MAGIC		0x00072959	/* original, ungrown layout */
     65  1.1  rumble #define EFS_SB_NEWMAGIC		0x0007295A	/* grown fs (IRIX >= 3.3) */
     66  1.1  rumble 
     67  1.1  rumble /* sb_dirty values */
     68  1.1  rumble #define EFS_SB_CLEAN		0		/* filesystem is clean */
     69  1.1  rumble 
     70  1.1  rumble #endif /* !_FS_EFS_EFS_SB_H_ */
     71