~ubuntu-branches/ubuntu/lucid/loop-aes-utils/lucid-security

« back to all changes in this revision

Viewing changes to mount/linux_fs.h

  • Committer: Bazaar Package Importer
  • Author(s): Max Vozeler
  • Date: 2008-08-22 11:57:17 UTC
  • mfrom: (8.1.3 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080822115717-v8wfa8pxwlfvyje0
Tags: 2.13.1-4
* patches/losetup_add_option_f.dpatch: 
  - Added to support "find next free loop" in losetup.
    (closes: #495682)

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#endif
14
14
#endif
15
15
 
16
 
#define MINIX_SUPER_MAGIC   0x137F         /* minix v1, 14 char names */
17
 
#define MINIX_SUPER_MAGIC2  0x138F         /* minix v1, 30 char names */
18
 
#define MINIX2_SUPER_MAGIC  0x2468         /* minix v2, 14 char names */
19
 
#define MINIX2_SUPER_MAGIC2 0x2478         /* minix v2, 30 char names */
20
 
struct minix_super_block {
21
 
        u_char   s_dummy[16];
22
 
        u_char   s_magic[2];
23
 
};
24
 
#define minixmagic(s)   assemble2le(s.s_magic)
25
 
 
26
 
#define ISODCL(from, to) (to - from + 1)
27
 
#define ISO_STANDARD_ID "CD001"
28
 
struct iso_volume_descriptor {
29
 
        char type[ISODCL(1,1)]; /* 711 */
30
 
        char id[ISODCL(2,6)];
31
 
        char version[ISODCL(7,7)];
32
 
        char data[ISODCL(8,2048)];
33
 
};
34
 
 
35
 
#define HS_STANDARD_ID "CDROM"
36
 
struct  hs_volume_descriptor {
37
 
        char foo[ISODCL (  1,   8)]; /* 733 */
38
 
        char type[ISODCL (  9,   9)]; /* 711 */
39
 
        char id[ISODCL ( 10,  14)];
40
 
        char version[ISODCL ( 15,  15)]; /* 711 */
41
 
        char data[ISODCL(16,2048)];
42
 
};
43
 
 
44
 
#define EXT_SUPER_MAGIC 0x137D
45
 
struct ext_super_block {
46
 
        u_char   s_dummy[56];
47
 
        u_char   s_magic[2];
48
 
};
49
 
#define extmagic(s)     assemble2le(s.s_magic)
50
 
 
51
 
#define EXT2_PRE_02B_MAGIC  0xEF51
52
 
#define EXT2_SUPER_MAGIC    0xEF53
53
 
#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
54
 
struct ext2_super_block {
55
 
        u_char  s_dummy1[56];
56
 
        u_char  s_magic[2];
57
 
        u_char  s_dummy2[34];
58
 
        u_char  s_feature_compat[4];
59
 
        u_char  s_feature_incompat[4];
60
 
        u_char  s_feature_ro_compat[4];
61
 
        u_char  s_uuid[16];
62
 
        u_char  s_volume_name[16];
63
 
        u_char  s_dummy3[88];
64
 
        u_char  s_journal_inum[4];      /* ext3 only */
65
 
};
66
 
#define ext2magic(s)    assemble2le(s.s_magic)
67
 
 
68
 
struct reiserfs_super_block
69
 
{
70
 
        u_char          s_block_count[4];
71
 
        u_char          s_free_blocks[4];
72
 
        u_char          s_root_block[4];
73
 
        u_char          s_journal_block[4];
74
 
        u_char          s_journal_dev[4];
75
 
        u_char          s_orig_journal_size[4];
76
 
        u_char          s_journal_trans_max[4];
77
 
        u_char          s_journal_block_count[4];
78
 
        u_char          s_journal_max_batch[4];
79
 
        u_char          s_journal_max_commit_age[4];
80
 
        u_char          s_journal_max_trans_age[4];
81
 
        u_char          s_blocksize[2];
82
 
        u_char          s_oid_maxsize[2];
83
 
        u_char          s_oid_cursize[2];
84
 
        u_char          s_state[2];
85
 
        u_char          s_magic[10];
86
 
        u_char          s_dummy1[10];
87
 
        u_char          s_version[2]; /* only valid with relocated journal */
88
 
 
89
 
        /* only valid in 3.6.x format --mason@suse.com */
90
 
        u_char          s_dummy2[10];
91
 
        u_char          s_uuid[16];
92
 
        u_char          s_label[16];
93
 
};
94
 
#define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
95
 
#define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
96
 
/* also known as REISER2FS_JR_SUPER_MAGIC_STRING */
97
 
#define REISER3FS_SUPER_MAGIC_STRING "ReIsEr3Fs"
98
 
#define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024)
99
 
/* the spot for the super in versions 3.5 - 3.5.10 (inclusive) */
100
 
#define REISERFS_OLD_DISK_OFFSET_IN_BYTES (8 * 1024)
101
 
 
102
 
/* values of s_version when REISER3FS_SUPER_MAGIC_STRING is found */
103
 
#define REISERFS_VERSION_1 0 /* 3.5.x disk format */
104
 
#define REISERFS_VERSION_2 2 /* 3.6.x disk format */
105
 
 
106
 
extern int reiserfs_magic_version(const char *magic);
107
 
 
108
 
#define _XIAFS_SUPER_MAGIC 0x012FD16D
109
 
struct xiafs_super_block {
110
 
    u_char     s_boot_segment[512];     /*  1st sector reserved for boot */
111
 
    u_char     s_dummy[60];
112
 
    u_char     s_magic[4];
113
 
};
114
 
#define xiafsmagic(s)   assemble4le(s.s_magic)
115
 
 
116
 
/* From jj@sunsite.ms.mff.cuni.cz Mon Mar 23 15:19:05 1998 */
117
 
#define UFS_SUPER_MAGIC_LE 0x00011954
118
 
#define UFS_SUPER_MAGIC_BE 0x54190100
119
 
struct ufs_super_block {
120
 
    u_char     s_dummy[0x55c];
121
 
    u_char     s_magic[4];
122
 
};
123
 
#define ufsmagic(s)     assemble4le(s.s_magic)
124
 
 
125
 
/* From Richard.Russon@ait.co.uk Wed Feb 24 08:05:27 1999 */
126
 
#define NTFS_SUPER_MAGIC "NTFS"
127
 
struct ntfs_super_block {
128
 
    u_char    s_dummy[3];
129
 
    u_char    s_magic[4];
130
 
};
131
 
 
132
 
/* From inspection of a few FAT filesystems - aeb */
133
 
/* Unfortunately I find almost the same thing on an extended partition;
134
 
   it looks like a primary has some directory entries where the extended
135
 
   has a partition table: IO.SYS, MSDOS.SYS, WINBOOT.SYS */
136
 
struct fat_super_block {
137
 
    u_char    s_dummy[3];
138
 
    u_char    s_os[8];          /* "MSDOS5.0" or "MSWIN4.0" or "MSWIN4.1" */
139
 
                                /* mtools-3.9.4 writes "MTOOL394" */
140
 
    u_char    s_dummy2[32];
141
 
    u_char    s_label[11];      /* for DOS? */
142
 
    u_char    s_fs[8];          /* "FAT12   " or "FAT16   " or all zero   */
143
 
                                /* OS/2 BM has "FAT     " here. */
144
 
    u_char    s_dummy3[9];
145
 
    u_char    s_label2[11];     /* for Windows? */
146
 
    u_char    s_fs2[8];         /* garbage or "FAT32   " */
147
 
};
148
 
 
149
 
#define XFS_SUPER_MAGIC "XFSB"
150
 
struct xfs_super_block {
151
 
    u_char    s_magic[4];
152
 
    u_char    s_dummy[28];
153
 
    u_char    s_uuid[16];
154
 
    u_char    s_dummy2[60];
155
 
    u_char    s_fname[12];
156
 
};
157
 
 
158
 
#define CRAMFS_SUPER_MAGIC 0x28cd3d45
159
 
#define CRAMFS_SUPER_MAGIC_BE 0x453dcd28
160
 
struct cramfs_super_block {
161
 
        u_char    s_magic[4];
162
 
        u_char    s_dummy[12];
163
 
        u_char    s_id[16];
164
 
};
165
 
#define cramfsmagic(s)  assemble4le(s.s_magic)
166
 
 
167
 
#define HFS_SUPER_MAGIC 0x4244
168
 
struct hfs_super_block {
169
 
        u_char    s_magic[2];           /* drSigWord */
170
 
        u_char    s_dummy[18];
171
 
        u_char    s_blksize[4];         /* drAlBlkSiz */
172
 
};
173
 
#define hfsmagic(s)     assemble2be(s.s_magic)
174
 
#define hfsblksize(s)   assemble4be(s.s_blksize)
175
 
 
176
 
#define HPFS_SUPER_MAGIC 0xf995e849
177
 
struct hpfs_super_block {
178
 
        u_char    s_magic[4];
179
 
        u_char    s_magic2[4];
180
 
};
181
 
#define hpfsmagic(s)    assemble4le(s.s_magic)
182
 
 
183
 
struct adfs_super_block {
184
 
        u_char    s_dummy[448];
185
 
        u_char    s_blksize[1];
186
 
        u_char    s_dummy2[62];
187
 
        u_char    s_checksum[1];
188
 
};
189
 
#define adfsblksize(s)  ((uint) s.s_blksize[0])
190
 
 
191
 
/* found in first 4 bytes of block 1 */
192
 
struct vxfs_super_block {
193
 
        u_char  s_magic[4];
194
 
};
195
 
#define vxfsmagic(s)    assemble4le(s.s_magic)
196
 
#define VXFS_SUPER_MAGIC 0xa501FCF5
197
 
 
198
 
struct jfs_super_block {
199
 
        char    s_magic[4];
200
 
        u_char  s_version[4];
201
 
        u_char  s_dummy1[93];
202
 
        char    s_fpack[11];
203
 
        u_char  s_dummy2[24];
204
 
        u_char  s_uuid[16];
205
 
        char    s_label[16];
206
 
};
207
 
#define JFS_SUPER1_OFF 0x8000
208
 
#define JFS_MAGIC "JFS1"
209
 
 
210
 
struct sysv_super_block {
211
 
        u_char  s_dummy1[504];
212
 
        u_char  s_magic[4];
213
 
        u_char  type[4];
214
 
};
215
 
#define sysvmagic(s)            assemble4le(s.s_magic)
216
 
#define SYSV_SUPER_MAGIC        0xfd187e20
217
 
 
218
 
struct mdp_super_block {
219
 
        u_char  md_magic[4];
220
 
};
221
 
#define MD_SB_MAGIC     0xa92b4efc
222
 
#define mdsbmagic(s)    assemble4le(s.md_magic)
223
 
 
224
 
struct ocfs_volume_header {
225
 
        u_char  minor_version[4];
226
 
        u_char  major_version[4];
227
 
        u_char  signature[128];
228
 
};
229
 
 
230
 
struct ocfs_volume_label {
231
 
        u_char  disk_lock[48];
232
 
        u_char  label[64];
233
 
        u_char  label_len[2];
234
 
};
235
 
 
236
 
#define ocfslabellen(o) assemble2le(o.label_len)
237
 
#define OCFS_MAGIC      "OracleCFS"
238
 
 
239
 
struct ocfs2_super_block {
240
 
        u_char  signature[8];
241
 
        u_char  s_dummy1[184];
242
 
        u_char  s_dummy2[80];
243
 
        u_char  s_label[64];
244
 
        u_char  s_uuid[16];
245
 
};
246
 
 
247
 
#define OCFS2_MIN_BLOCKSIZE             512
248
 
#define OCFS2_MAX_BLOCKSIZE             4096
249
 
#define OCFS2_SUPER_BLOCK_BLKNO         2
250
 
#define OCFS2_SUPER_BLOCK_SIGNATURE     "OCFSV2"
251
 
 
252
 
 
253
 
struct efs_volume_directory {   /* size 16 */
254
 
        char    vd_name[8];
255
 
        char    vd_lbn[4];
256
 
        char    vd_nbytes[4];
257
 
};
258
 
 
259
 
struct efs_partition_table {    /* size 12 */
260
 
        char    pt_nblks[4];
261
 
        char    pt_firstlbn[4];
262
 
        char    pt_type[4];
263
 
};
264
 
 
265
 
struct efs_volume_header {      /* size 512 */
266
 
        char    vh_magic[4];
267
 
        short   vh_rootpt;
268
 
        short   vh_swappt;
269
 
        char    vh_bootfile[16];
270
 
        char    pad[48];
271
 
        struct efs_volume_directory vh_vd[15];
272
 
        struct efs_partition_table  vh_pt[16];
273
 
        int     vh_csum;
274
 
        int     vh_fill;
275
 
};
276
 
 
277
 
struct efs_super {
278
 
        char     fs_stuff[512+28];
279
 
        char     fs_magic[4];
280
 
        char     fs_fname[6];
281
 
        char     fs_fpack[6];
282
 
        /* ... */
283
 
};
284
 
 
285
 
#define EFS_VHMAGIC     0x0be5a941      /* big endian */
286
 
#define EFS_SBMAGIC     0x00072959      /* idem */
287
 
#define EFS_SBMAGIC2    0x0007295a      /* idem */
288
 
 
289
 
static inline int
290
 
assemble2le(unsigned char *p) {
291
 
        return (p[0] | (p[1] << 8));
292
 
}
293
 
 
294
 
static inline int
295
 
assemble2be(unsigned char *p) {
296
 
        return (p[1] | (p[0] << 8));
297
 
}
298
 
 
299
 
static inline int
300
 
assemble4le(unsigned char *p) {
301
 
        return (p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24));
302
 
}
303
 
 
304
 
static inline int
305
 
assemble4be(unsigned char *p) {
306
 
        return (p[3] | (p[2] << 8) | (p[1] << 16) | (p[0] << 24));
307
 
}