38
38
#define MINIX2_SUPER_MAGIC 0x2468 /* minix v2, 14 char names */
39
39
#define MINIX2_SUPER_MAGIC2 0x2478 /* minix v2, 30 char names */
40
40
struct minix_super_block {
44
44
#define minixmagic(s) assemble2le(s.s_magic)
72
72
#define EXT2_SUPER_MAGIC 0xEF53
73
73
#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
74
74
struct ext2_super_block {
78
u_char s_feature_compat[4];
79
u_char s_feature_incompat[4];
80
u_char s_feature_ro_compat[4];
82
u_char s_volume_name[16];
84
u_char s_journal_inum[4]; /* ext3 only */
78
char s_feature_compat[4];
79
char s_feature_incompat[4];
80
char s_feature_ro_compat[4];
82
char s_volume_name[16];
84
char s_journal_inum[4]; /* ext3 only */
86
86
#define ext2magic(s) assemble2le(s.s_magic)
88
88
struct reiserfs_super_block
90
u_char s_block_count[4];
91
u_char s_free_blocks[4];
92
u_char s_root_block[4];
93
u_char s_journal_block[4];
94
u_char s_journal_dev[4];
95
u_char s_orig_journal_size[4];
96
u_char s_journal_trans_max[4];
97
u_char s_journal_block_count[4];
98
u_char s_journal_max_batch[4];
99
u_char s_journal_max_commit_age[4];
100
u_char s_journal_max_trans_age[4];
101
u_char s_blocksize[2];
102
u_char s_oid_maxsize[2];
103
u_char s_oid_cursize[2];
90
char s_block_count[4];
91
char s_free_blocks[4];
93
char s_journal_block[4];
94
char s_journal_dev[4];
95
char s_orig_journal_size[4];
96
char s_journal_trans_max[4];
97
char s_journal_block_count[4];
98
char s_journal_max_batch[4];
99
char s_journal_max_commit_age[4];
100
char s_journal_max_trans_age[4];
102
char s_oid_maxsize[2];
103
char s_oid_cursize[2];
107
107
#define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
108
108
#define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
113
113
#define _XIAFS_SUPER_MAGIC 0x012FD16D
114
114
struct xiafs_super_block {
115
u_char s_boot_segment[512]; /* 1st sector reserved for boot */
115
char s_boot_segment[512]; /* 1st sector reserved for boot */
119
119
#define xiafsmagic(s) assemble4le(s.s_magic)
122
122
#define UFS_SUPER_MAGIC_LE 0x00011954
123
123
#define UFS_SUPER_MAGIC_BE 0x54190100
124
124
struct ufs_super_block {
125
u_char s_dummy[0x55c];
128
128
#define ufsmagic(s) assemble4le(s.s_magic)
130
130
/* From Richard.Russon@ait.co.uk Wed Feb 24 08:05:27 1999 */
131
131
#define NTFS_SUPER_MAGIC "NTFS"
132
132
struct ntfs_super_block {
137
137
/* From inspection of a few FAT filesystems - aeb */
139
139
it looks like a primary has some directory entries where the extended
140
140
has a partition table: IO.SYS, MSDOS.SYS, WINBOOT.SYS */
141
141
struct fat_super_block {
143
u_char s_os[8]; /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */
143
char s_os[8]; /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */
144
144
/* mtools-3.9.4 writes "MTOOL394" */
146
u_char s_label[11]; /* for DOS? */
147
u_char s_fs[8]; /* "FAT12 " or "FAT16 " or all zero */
146
char s_label[11]; /* for DOS? */
147
char s_fs[8]; /* "FAT12 " or "FAT16 " or all zero */
148
148
/* OS/2 BM has "FAT " here. */
150
u_char s_label2[11]; /* for Windows? */
151
u_char s_fs2[8]; /* garbage or "FAT32 " */
150
char s_label2[11]; /* for Windows? */
151
char s_fs2[8]; /* garbage or "FAT32 " */
154
154
#define XFS_SUPER_MAGIC "XFSB"
155
155
struct xfs_super_block {
163
163
#define CRAMFS_SUPER_MAGIC 0x28cd3d45
164
164
#define CRAMFS_SUPER_MAGIC_BE 0x453dcd28
165
165
struct cramfs_super_block {
170
170
#define cramfsmagic(s) assemble4le(s.s_magic)
173
173
#define HFSPLUS_SUPER_MAGIC 0x482B
174
174
#define HFSPLUS_SUPER_VERSION 0x004
175
175
struct hfs_super_block {
179
179
#define hfsmagic(s) assemble2le(s.s_magic)
180
180
#define hfsversion(s) assemble2le(s.s_version)
182
182
#define HPFS_SUPER_MAGIC 0xf995e849
183
183
struct hpfs_super_block {
187
187
#define hpfsmagic(s) assemble4le(s.s_magic)
189
189
struct adfs_super_block {
193
u_char s_checksum[1];
195
195
#define adfsblksize(s) ((uint) s.s_blksize[0])
197
197
/* found in first 4 bytes of block 1 */
198
198
struct vxfs_super_block {
201
201
#define vxfsmagic(s) assemble4le(s.s_magic)
202
202
#define VXFS_SUPER_MAGIC 0xa501FCF5
204
204
struct jfs_super_block {
208
208
char s_fpack[11];
211
211
char s_label[16];
213
213
#define JFS_SUPER1_OFF 0x8000
214
214
#define JFS_MAGIC "JFS1"
216
216
struct sysv_super_block {
217
u_char s_dummy1[504];
221
221
#define sysvmagic(s) assemble4le(s.s_magic)
222
222
#define SYSV_SUPER_MAGIC 0xfd187e20
224
224
struct mdp_super_block {
227
227
#define MD_SB_MAGIC 0xa92b4efc
228
228
#define mdsbmagic(s) assemble4le(s.md_magic)
230
230
struct ocfs_volume_header {
231
u_char minor_version[4];
232
u_char major_version[4];
233
u_char signature[128];
231
char minor_version[4];
232
char major_version[4];
236
236
struct ocfs_volume_label {
237
u_char disk_lock[48];
242
242
#define ocfslabellen(o) assemble2le(o.label_len)
243
243
#define OCFS_MAGIC "OracleCFS"
245
245
static inline int
246
assemble2le(unsigned char *p) {
246
assemble2le(char *p) {
247
247
return (p[0] | (p[1] << 8));
250
250
static inline int
251
assemble4le(unsigned char *p) {
251
assemble4le(char *p) {
252
252
return (p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24));