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