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 	time_t			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 */
119