Blame view

fs/udf/udf_sb.h 4.29 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
  #ifndef __LINUX_UDF_SB_H
  #define __LINUX_UDF_SB_H
15aebd286   Christoph Hellwig   udf: move headers...
3
  #include <linux/mutex.h>
f2a6cc1f1   Jan Kara   udf: Convert UDF_...
4
  #include <linux/bitops.h>
15aebd286   Christoph Hellwig   udf: move headers...
5

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
6
7
  /* Since UDF 2.01 is ISO 13346 based... */
  #define UDF_SUPER_MAGIC			0x15013346
bfb257a59   Jan Kara   udf: Add read-onl...
8
  #define UDF_MAX_READ_VERSION		0x0250
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  #define UDF_MAX_WRITE_VERSION		0x0201
  
  #define UDF_FLAG_USE_EXTENDED_FE	0
  #define UDF_VERS_USE_EXTENDED_FE	0x0200
  #define UDF_FLAG_USE_STREAMS		1
  #define UDF_VERS_USE_STREAMS		0x0200
  #define UDF_FLAG_USE_SHORT_AD		2
  #define UDF_FLAG_USE_AD_IN_ICB		3
  #define UDF_FLAG_USE_FILE_CTIME_EA	4
  #define UDF_FLAG_STRICT			5
  #define UDF_FLAG_UNDELETE		6
  #define UDF_FLAG_UNHIDE			7
  #define UDF_FLAG_VARCONV		8
  #define UDF_FLAG_NLS_MAP		9
  #define UDF_FLAG_UTF8			10
28de7948a   Cyrill Gorcunov   UDF: coding style...
24
25
  #define UDF_FLAG_UID_FORGET     11    /* save -1 for uid to disk */
  #define UDF_FLAG_UID_IGNORE     12    /* use sb uid instead of on disk uid */
4d6660eb3   Phillip Susi   [PATCH] udf: fix ...
26
27
  #define UDF_FLAG_GID_FORGET     13
  #define UDF_FLAG_GID_IGNORE     14
ca76d2d80   Cyrill Gorcunov   UDF: fix UID and ...
28
29
  #define UDF_FLAG_UID_SET	15
  #define UDF_FLAG_GID_SET	16
6da80894c   Miklos Szeredi   mount options: fi...
30
31
  #define UDF_FLAG_SESSION_SET	17
  #define UDF_FLAG_LASTBLOCK_SET	18
1197e4dfc   Clemens Ladisch   udf: use hardware...
32
  #define UDF_FLAG_BLOCKSIZE_SET	19
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
35
36
37
38
39
40
41
  
  #define UDF_PART_FLAG_UNALLOC_BITMAP	0x0001
  #define UDF_PART_FLAG_UNALLOC_TABLE	0x0002
  #define UDF_PART_FLAG_FREED_BITMAP	0x0004
  #define UDF_PART_FLAG_FREED_TABLE	0x0008
  #define UDF_PART_FLAG_READ_ONLY		0x0010
  #define UDF_PART_FLAG_WRITE_ONCE	0x0020
  #define UDF_PART_FLAG_REWRITABLE	0x0040
  #define UDF_PART_FLAG_OVERWRITABLE	0x0080
15aebd286   Christoph Hellwig   udf: move headers...
42
43
44
45
46
47
  #define UDF_MAX_BLOCK_LOADED	8
  
  #define UDF_TYPE1_MAP15			0x1511U
  #define UDF_VIRTUAL_MAP15		0x1512U
  #define UDF_VIRTUAL_MAP20		0x2012U
  #define UDF_SPARABLE_MAP15		0x1522U
bfb257a59   Jan Kara   udf: Add read-onl...
48
  #define UDF_METADATA_MAP25		0x2511U
15aebd286   Christoph Hellwig   udf: move headers...
49

faa17292f   Al Viro   udf: propagate um...
50
  #define UDF_INVALID_MODE		((umode_t)-1)
87bc730c0   Marcin Slusarz   udf: fix default ...
51

15aebd286   Christoph Hellwig   udf: move headers...
52
  #pragma pack(1) /* XXX(hch): Why?  This file just defines in-core structures */
ed47a7d00   Jan Kara   udf: Cleanup meta...
53
54
  #define MF_DUPLICATE_MD		0x01
  #define MF_MIRROR_FE_LOADED	0x02
bfb257a59   Jan Kara   udf: Add read-onl...
55
56
57
58
59
60
  struct udf_meta_data {
  	__u32	s_meta_file_loc;
  	__u32	s_mirror_file_loc;
  	__u32	s_bitmap_file_loc;
  	__u32	s_alloc_unit_size;
  	__u16	s_align_unit_size;
ed47a7d00   Jan Kara   udf: Cleanup meta...
61
  	int	s_flags;
bfb257a59   Jan Kara   udf: Add read-onl...
62
63
64
65
  	struct inode *s_metadata_fe;
  	struct inode *s_mirror_fe;
  	struct inode *s_bitmap_fe;
  };
15aebd286   Christoph Hellwig   udf: move headers...
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  struct udf_sparing_data {
  	__u16	s_packet_len;
  	struct buffer_head *s_spar_map[4];
  };
  
  struct udf_virtual_data {
  	__u32	s_num_entries;
  	__u16	s_start_offset;
  };
  
  struct udf_bitmap {
  	__u32			s_extLength;
  	__u32			s_extPosition;
  	__u16			s_nr_groups;
  	struct buffer_head 	**s_block_bitmap;
  };
  
  struct udf_part_map {
  	union {
  		struct udf_bitmap	*s_bitmap;
  		struct inode		*s_table;
  	} s_uspace;
  	union {
  		struct udf_bitmap	*s_bitmap;
  		struct inode		*s_table;
  	} s_fspace;
  	__u32	s_partition_root;
  	__u32	s_partition_len;
  	__u16	s_partition_type;
  	__u16	s_partition_num;
  	union {
  		struct udf_sparing_data s_sparing;
  		struct udf_virtual_data s_virtual;
bfb257a59   Jan Kara   udf: Add read-onl...
99
  		struct udf_meta_data s_metadata;
15aebd286   Christoph Hellwig   udf: move headers...
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
  	} s_type_specific;
  	__u32	(*s_partition_func)(struct super_block *, __u32, __u16, __u32);
  	__u16	s_volumeseqnum;
  	__u16	s_partition_flags;
  };
  
  #pragma pack()
  
  struct udf_sb_info {
  	struct udf_part_map	*s_partmaps;
  	__u8			s_volume_ident[32];
  
  	/* Overall info */
  	__u16			s_partitions;
  	__u16			s_partition;
  
  	/* Sector headers */
  	__s32			s_session;
403460051   Jan Kara   udf: Try anchor i...
118
  	__u32			s_anchor;
15aebd286   Christoph Hellwig   udf: move headers...
119
120
121
122
123
  	__u32			s_last_block;
  
  	struct buffer_head	*s_lvid_bh;
  
  	/* Default permissions */
faa17292f   Al Viro   udf: propagate um...
124
  	umode_t			s_umask;
15aebd286   Christoph Hellwig   udf: move headers...
125
126
  	gid_t			s_gid;
  	uid_t			s_uid;
faa17292f   Al Viro   udf: propagate um...
127
128
  	umode_t			s_fmode;
  	umode_t			s_dmode;
c03cad241   Jan Kara   udf: Protect defa...
129
130
  	/* Lock protecting consistency of above permission settings */
  	rwlock_t		s_cred_lock;
15aebd286   Christoph Hellwig   udf: move headers...
131
132
133
134
135
136
137
138
139
140
141
  
  	/* Root Info */
  	struct timespec		s_record_time;
  
  	/* Fileset Info */
  	__u16			s_serial_number;
  
  	/* highest UDF revision we have recorded to this media */
  	__u16			s_udfrev;
  
  	/* Miscellaneous flags */
f2a6cc1f1   Jan Kara   udf: Convert UDF_...
142
  	unsigned long		s_flags;
15aebd286   Christoph Hellwig   udf: move headers...
143
144
145
146
147
148
149
150
  
  	/* Encoding info */
  	struct nls_table	*s_nls_map;
  
  	/* VAT inode */
  	struct inode		*s_vat_inode;
  
  	struct mutex		s_alloc_mutex;
146bca72c   Jan Kara   udf: Don't write ...
151
152
  	/* Protected by s_alloc_mutex */
  	unsigned int		s_lvid_dirty;
15aebd286   Christoph Hellwig   udf: move headers...
153
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
154
155
156
157
  static inline struct udf_sb_info *UDF_SB(struct super_block *sb)
  {
  	return sb->s_fs_info;
  }
6c79e987d   Marcin Slusarz   udf: remove some ...
158
  struct logicalVolIntegrityDescImpUse *udf_sb_lvidiu(struct udf_sb_info *sbi);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
159

883cb9d18   Marcin Slusarz   udf: move calcula...
160
  int udf_compute_nr_groups(struct super_block *sb, u32 partition);
f2a6cc1f1   Jan Kara   udf: Convert UDF_...
161
162
163
164
165
166
167
168
169
170
171
172
173
174
  static inline int UDF_QUERY_FLAG(struct super_block *sb, int flag)
  {
  	return test_bit(flag, &UDF_SB(sb)->s_flags);
  }
  
  static inline void UDF_SET_FLAG(struct super_block *sb, int flag)
  {
  	set_bit(flag, &UDF_SB(sb)->s_flags);
  }
  
  static inline void UDF_CLEAR_FLAG(struct super_block *sb, int flag)
  {
  	clear_bit(flag, &UDF_SB(sb)->s_flags);
  }
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
175

28de7948a   Cyrill Gorcunov   UDF: coding style...
176
  #endif /* __LINUX_UDF_SB_H */