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
27struct udf_sparing_data
28{
29	__u16	s_packet_len;
30	struct buffer_head *s_spar_map[4];
31};
32
33struct udf_virtual_data
34{
35	__u32	s_num_entries;
36	__u16	s_start_offset;
37};
38
39struct 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
47struct 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
75struct 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 */
118