1966a6dbb4b6f70301470e381d845d7efe4b824e
[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 #include <asm/semaphore.h>
22
23 #pragma pack(1)
24
25 #define UDF_MAX_BLOCK_LOADED    8
26
27 #define UDF_TYPE1_MAP15                 0x1511U
28 #define UDF_VIRTUAL_MAP15               0x1512U
29 #define UDF_VIRTUAL_MAP20               0x2012U
30 #define UDF_SPARABLE_MAP15              0x1522U
31
32 struct udf_sparing_data
33 {
34         __u16   s_packet_len;
35         struct buffer_head *s_spar_map[4];
36 };
37
38 struct udf_virtual_data
39 {
40         __u32   s_num_entries;
41         __u16   s_start_offset;
42 };
43
44 struct udf_bitmap
45 {
46         __u32                   s_extLength;
47         __u32                   s_extPosition;
48         __u16                   s_nr_groups;
49         struct buffer_head      **s_block_bitmap;
50 };
51
52 struct udf_part_map
53 {
54         union
55         {
56                 struct udf_bitmap       *s_bitmap;
57                 struct inode            *s_table;
58         } s_uspace;
59         union
60         {
61                 struct udf_bitmap       *s_bitmap;
62                 struct inode            *s_table;
63         } s_fspace;
64         __u32   s_partition_root;
65         __u32   s_partition_len;
66         __u16   s_partition_type;
67         __u16   s_partition_num;
68         union
69         {
70                 struct udf_sparing_data s_sparing;
71                 struct udf_virtual_data s_virtual;
72         } s_type_specific;
73         __u32   (*s_partition_func)(struct super_block *, __u32, __u16, __u32);
74         __u16   s_volumeseqnum;
75         __u16   s_partition_flags;
76 };
77
78 #pragma pack()
79
80 struct udf_sb_info
81 {
82         struct udf_part_map     *s_partmaps;
83         __u8                    s_volident[32];
84
85         /* Overall info */
86         __u16                   s_partitions;
87         __u16                   s_partition;
88
89         /* Sector headers */
90         __s32                   s_session;
91         __u32                   s_anchor[4];
92         __u32                   s_lastblock;
93
94         struct buffer_head      *s_lvidbh;
95
96         /* Default permissions */
97         mode_t                  s_umask;
98         gid_t                   s_gid;
99         uid_t                   s_uid;
100
101         /* Root Info */
102         struct timespec         s_recordtime;
103
104         /* Fileset Info */
105         __u16                   s_serialnum;
106
107         /* highest UDF revision we have recorded to this media */
108         __u16                   s_udfrev;
109
110         /* Miscellaneous flags */
111         __u32                   s_flags;
112
113         /* Encoding info */
114         struct nls_table        *s_nls_map;
115
116         /* VAT inode */
117         struct inode            *s_vat;
118
119         struct semaphore        s_alloc_sem;
120 };
121
122 #endif /* _UDF_FS_SB_H */