ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / linux / udf_fs_sb.h
1 /*
2  * udf_fs_sb.h
3  * 
4  * This include file is for the Linux kernel/module.
5  *
6  * CONTACTS
7  *      E-mail regarding any portion of the Linux UDF file system should be
8  *      directed to the development team mailing list (run by majordomo):
9  *              linux_udf@hpesjro.fc.hp.com
10  *
11  * COPYRIGHT
12  *      This file is distributed under the terms of the GNU General Public
13  *      License (GPL). Copies of the GPL can be obtained from:
14  *              ftp://prep.ai.mit.edu/pub/gnu/GPL
15  *      Each contributing author retains all rights to their own work.
16  */
17
18 #ifndef _UDF_FS_SB_H
19 #define _UDF_FS_SB_H 1
20
21 #pragma pack(1)
22
23 #define UDF_MAX_BLOCK_LOADED    8
24
25 #define UDF_TYPE1_MAP15                 0x1511U
26 #define UDF_VIRTUAL_MAP15               0x1512U
27 #define UDF_VIRTUAL_MAP20               0x2012U
28 #define UDF_SPARABLE_MAP15              0x1522U
29
30 struct udf_sparing_data
31 {
32         __u16   s_packet_len;
33         struct buffer_head *s_spar_map[4];
34 };
35
36 struct udf_virtual_data
37 {
38         __u32   s_num_entries;
39         __u16   s_start_offset;
40 };
41
42 struct udf_bitmap
43 {
44         __u32                   s_extLength;
45         __u32                   s_extPosition;
46         __u16                   s_nr_groups;
47         struct buffer_head      **s_block_bitmap;
48 };
49
50 struct udf_part_map
51 {
52         union
53         {
54                 struct udf_bitmap       *s_bitmap;
55                 struct inode            *s_table;
56         } s_uspace;
57         union
58         {
59                 struct udf_bitmap       *s_bitmap;
60                 struct inode            *s_table;
61         } s_fspace;
62         __u32   s_partition_root;
63         __u32   s_partition_len;
64         __u16   s_partition_type;
65         __u16   s_partition_num;
66         union
67         {
68                 struct udf_sparing_data s_sparing;
69                 struct udf_virtual_data s_virtual;
70         } s_type_specific;
71         __u32   (*s_partition_func)(struct super_block *, __u32, __u16, __u32);
72         __u16   s_volumeseqnum;
73         __u16   s_partition_flags;
74 };
75
76 #pragma pack()
77
78 struct udf_sb_info
79 {
80         struct udf_part_map     *s_partmaps;
81         __u8                    s_volident[32];
82
83         /* Overall info */
84         __u16                   s_partitions;
85         __u16                   s_partition;
86
87         /* Sector headers */
88         __s32                   s_session;
89         __u32                   s_anchor[4];
90         __u32                   s_lastblock;
91
92         struct buffer_head      *s_lvidbh;
93
94         /* Default permissions */
95         mode_t                  s_umask;
96         gid_t                   s_gid;
97         uid_t                   s_uid;
98
99         /* Root Info */
100         struct timespec         s_recordtime;
101
102         /* Fileset Info */
103         __u16                   s_serialnum;
104
105         /* highest UDF revision we have recorded to this media */
106         __u16                   s_udfrev;
107
108         /* Miscellaneous flags */
109         __u32                   s_flags;
110
111         /* Encoding info */
112         struct nls_table        *s_nls_map;
113
114         /* VAT inode */
115         struct inode            *s_vat;
116 };
117
118 #endif /* _UDF_FS_SB_H */