blob: 9bc47352b6b445e74a73d69f3a4172aecf5158a7 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * udf_fs_sb.h
3 *
4 * This include file is for the Linux kernel/module.
5 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07006 * 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
Ingo Molnar1e7933d2006-03-23 03:00:44 -080016#include <linux/mutex.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070017
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;
Marcin Slusarz6c79e982008-02-08 04:20:30 -080078 __u8 s_volume_ident[32];
Linus Torvalds1da177e2005-04-16 15:20:36 -070079
80 /* Overall info */
81 __u16 s_partitions;
82 __u16 s_partition;
83
84 /* Sector headers */
85 __s32 s_session;
86 __u32 s_anchor[4];
Marcin Slusarz6c79e982008-02-08 04:20:30 -080087 __u32 s_last_block;
Linus Torvalds1da177e2005-04-16 15:20:36 -070088
Marcin Slusarz6c79e982008-02-08 04:20:30 -080089 struct buffer_head *s_lvid_bh;
Linus Torvalds1da177e2005-04-16 15:20:36 -070090
91 /* Default permissions */
92 mode_t s_umask;
93 gid_t s_gid;
94 uid_t s_uid;
95
96 /* Root Info */
Marcin Slusarz6c79e982008-02-08 04:20:30 -080097 struct timespec s_record_time;
Linus Torvalds1da177e2005-04-16 15:20:36 -070098
99 /* Fileset Info */
Marcin Slusarz6c79e982008-02-08 04:20:30 -0800100 __u16 s_serial_number;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700101
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 */
Marcin Slusarz6c79e982008-02-08 04:20:30 -0800112 struct inode *s_vat_inode;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700113
Ingo Molnar1e7933d2006-03-23 03:00:44 -0800114 struct mutex s_alloc_mutex;
Linus Torvalds1da177e2005-04-16 15:20:36 -0700115};
116
117#endif /* _UDF_FS_SB_H */