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
30struct udf_sparing_data
31{
32	__u16	s_packet_len;
33	struct buffer_head *s_spar_map[4];
34};
35
36struct udf_virtual_data
37{
38	__u32	s_num_entries;
39	__u16	s_start_offset;
40};
41
42struct 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
50struct 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
78struct 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