aboutsummaryrefslogtreecommitdiffstats
path: root/fs/udf/osta_udf.h
diff options
context:
space:
mode:
Diffstat (limited to 'fs/udf/osta_udf.h')
-rw-r--r--fs/udf/osta_udf.h239
1 files changed, 111 insertions, 128 deletions
diff --git a/fs/udf/osta_udf.h b/fs/udf/osta_udf.h
index e82aae652697..bec5d340d8c5 100644
--- a/fs/udf/osta_udf.h
+++ b/fs/udf/osta_udf.h
@@ -65,153 +65,140 @@
65#define IS_DF_HARD_WRITE_PROTECT 0x01 65#define IS_DF_HARD_WRITE_PROTECT 0x01
66#define IS_DF_SOFT_WRITE_PROTECT 0x02 66#define IS_DF_SOFT_WRITE_PROTECT 0x02
67 67
68struct UDFIdentSuffix 68struct UDFIdentSuffix {
69{ 69 __le16 UDFRevision;
70 __le16 UDFRevision; 70 uint8_t OSClass;
71 uint8_t OSClass; 71 uint8_t OSIdentifier;
72 uint8_t OSIdentifier; 72 uint8_t reserved[4];
73 uint8_t reserved[4];
74} __attribute__ ((packed)); 73} __attribute__ ((packed));
75 74
76struct impIdentSuffix 75struct impIdentSuffix {
77{ 76 uint8_t OSClass;
78 uint8_t OSClass; 77 uint8_t OSIdentifier;
79 uint8_t OSIdentifier; 78 uint8_t reserved[6];
80 uint8_t reserved[6];
81} __attribute__ ((packed)); 79} __attribute__ ((packed));
82 80
83struct appIdentSuffix 81struct appIdentSuffix {
84{ 82 uint8_t impUse[8];
85 uint8_t impUse[8];
86} __attribute__ ((packed)); 83} __attribute__ ((packed));
87 84
88/* Logical Volume Integrity Descriptor (UDF 2.50 2.2.6) */ 85/* Logical Volume Integrity Descriptor (UDF 2.50 2.2.6) */
89/* Implementation Use (UDF 2.50 2.2.6.4) */ 86/* Implementation Use (UDF 2.50 2.2.6.4) */
90struct logicalVolIntegrityDescImpUse 87struct logicalVolIntegrityDescImpUse {
91{ 88 regid impIdent;
92 regid impIdent; 89 __le32 numFiles;
93 __le32 numFiles; 90 __le32 numDirs;
94 __le32 numDirs; 91 __le16 minUDFReadRev;
95 __le16 minUDFReadRev; 92 __le16 minUDFWriteRev;
96 __le16 minUDFWriteRev; 93 __le16 maxUDFWriteRev;
97 __le16 maxUDFWriteRev; 94 uint8_t impUse[0];
98 uint8_t impUse[0];
99} __attribute__ ((packed)); 95} __attribute__ ((packed));
100 96
101/* Implementation Use Volume Descriptor (UDF 2.50 2.2.7) */ 97/* Implementation Use Volume Descriptor (UDF 2.50 2.2.7) */
102/* Implementation Use (UDF 2.50 2.2.7.2) */ 98/* Implementation Use (UDF 2.50 2.2.7.2) */
103struct impUseVolDescImpUse 99struct impUseVolDescImpUse {
104{ 100 charspec LVICharset;
105 charspec LVICharset; 101 dstring logicalVolIdent[128];
106 dstring logicalVolIdent[128]; 102 dstring LVInfo1[36];
107 dstring LVInfo1[36]; 103 dstring LVInfo2[36];
108 dstring LVInfo2[36]; 104 dstring LVInfo3[36];
109 dstring LVInfo3[36]; 105 regid impIdent;
110 regid impIdent; 106 uint8_t impUse[128];
111 uint8_t impUse[128];
112} __attribute__ ((packed)); 107} __attribute__ ((packed));
113 108
114struct udfPartitionMap2 109struct udfPartitionMap2 {
115{ 110 uint8_t partitionMapType;
116 uint8_t partitionMapType; 111 uint8_t partitionMapLength;
117 uint8_t partitionMapLength; 112 uint8_t reserved1[2];
118 uint8_t reserved1[2]; 113 regid partIdent;
119 regid partIdent; 114 __le16 volSeqNum;
120 __le16 volSeqNum; 115 __le16 partitionNum;
121 __le16 partitionNum;
122} __attribute__ ((packed)); 116} __attribute__ ((packed));
123 117
124/* Virtual Partition Map (UDF 2.50 2.2.8) */ 118/* Virtual Partition Map (UDF 2.50 2.2.8) */
125struct virtualPartitionMap 119struct virtualPartitionMap {
126{ 120 uint8_t partitionMapType;
127 uint8_t partitionMapType; 121 uint8_t partitionMapLength;
128 uint8_t partitionMapLength; 122 uint8_t reserved1[2];
129 uint8_t reserved1[2]; 123 regid partIdent;
130 regid partIdent; 124 __le16 volSeqNum;
131 __le16 volSeqNum; 125 __le16 partitionNum;
132 __le16 partitionNum; 126 uint8_t reserved2[24];
133 uint8_t reserved2[24];
134} __attribute__ ((packed)); 127} __attribute__ ((packed));
135 128
136/* Sparable Partition Map (UDF 2.50 2.2.9) */ 129/* Sparable Partition Map (UDF 2.50 2.2.9) */
137struct sparablePartitionMap 130struct sparablePartitionMap {
138{ 131 uint8_t partitionMapType;
139 uint8_t partitionMapType; 132 uint8_t partitionMapLength;
140 uint8_t partitionMapLength; 133 uint8_t reserved1[2];
141 uint8_t reserved1[2]; 134 regid partIdent;
142 regid partIdent; 135 __le16 volSeqNum;
143 __le16 volSeqNum; 136 __le16 partitionNum;
144 __le16 partitionNum; 137 __le16 packetLength;
145 __le16 packetLength; 138 uint8_t numSparingTables;
146 uint8_t numSparingTables; 139 uint8_t reserved2[1];
147 uint8_t reserved2[1]; 140 __le32 sizeSparingTable;
148 __le32 sizeSparingTable; 141 __le32 locSparingTable[4];
149 __le32 locSparingTable[4];
150} __attribute__ ((packed)); 142} __attribute__ ((packed));
151 143
152/* Metadata Partition Map (UDF 2.4.0 2.2.10) */ 144/* Metadata Partition Map (UDF 2.4.0 2.2.10) */
153struct metadataPartitionMap 145struct metadataPartitionMap {
154{ 146 uint8_t partitionMapType;
155 uint8_t partitionMapType; 147 uint8_t partitionMapLength;
156 uint8_t partitionMapLength; 148 uint8_t reserved1[2];
157 uint8_t reserved1[2]; 149 regid partIdent;
158 regid partIdent; 150 __le16 volSeqNum;
159 __le16 volSeqNum; 151 __le16 partitionNum;
160 __le16 partitionNum; 152 __le32 metadataFileLoc;
161 __le32 metadataFileLoc; 153 __le32 metadataMirrorFileLoc;
162 __le32 metadataMirrorFileLoc; 154 __le32 metadataBitmapFileLoc;
163 __le32 metadataBitmapFileLoc; 155 __le32 allocUnitSize;
164 __le32 allocUnitSize; 156 __le16 alignUnitSize;
165 __le16 alignUnitSize; 157 uint8_t flags;
166 uint8_t flags; 158 uint8_t reserved2[5];
167 uint8_t reserved2[5];
168} __attribute__ ((packed)); 159} __attribute__ ((packed));
169 160
170/* Virtual Allocation Table (UDF 1.5 2.2.10) */ 161/* Virtual Allocation Table (UDF 1.5 2.2.10) */
171struct virtualAllocationTable15 162struct virtualAllocationTable15 {
172{ 163 __le32 VirtualSector[0];
173 __le32 VirtualSector[0]; 164 regid vatIdent;
174 regid vatIdent; 165 __le32 previousVATICBLoc;
175 __le32 previousVATICBLoc; 166} __attribute__ ((packed));
176} __attribute__ ((packed));
177 167
178#define ICBTAG_FILE_TYPE_VAT15 0x00U 168#define ICBTAG_FILE_TYPE_VAT15 0x00U
179 169
180/* Virtual Allocation Table (UDF 2.50 2.2.11) */ 170/* Virtual Allocation Table (UDF 2.50 2.2.11) */
181struct virtualAllocationTable20 171struct virtualAllocationTable20 {
182{ 172 __le16 lengthHeader;
183 __le16 lengthHeader; 173 __le16 lengthImpUse;
184 __le16 lengthImpUse; 174 dstring logicalVolIdent[128];
185 dstring logicalVolIdent[128]; 175 __le32 previousVATICBLoc;
186 __le32 previousVATICBLoc; 176 __le32 numFiles;
187 __le32 numFiles; 177 __le32 numDirs;
188 __le32 numDirs; 178 __le16 minReadRevision;
189 __le16 minReadRevision; 179 __le16 minWriteRevision;
190 __le16 minWriteRevision; 180 __le16 maxWriteRevision;
191 __le16 maxWriteRevision; 181 __le16 reserved;
192 __le16 reserved; 182 uint8_t impUse[0];
193 uint8_t impUse[0]; 183 __le32 vatEntry[0];
194 __le32 vatEntry[0];
195} __attribute__ ((packed)); 184} __attribute__ ((packed));
196 185
197#define ICBTAG_FILE_TYPE_VAT20 0xF8U 186#define ICBTAG_FILE_TYPE_VAT20 0xF8U
198 187
199/* Sparing Table (UDF 2.50 2.2.12) */ 188/* Sparing Table (UDF 2.50 2.2.12) */
200struct sparingEntry 189struct sparingEntry {
201{ 190 __le32 origLocation;
202 __le32 origLocation; 191 __le32 mappedLocation;
203 __le32 mappedLocation;
204} __attribute__ ((packed)); 192} __attribute__ ((packed));
205 193
206struct sparingTable 194struct sparingTable {
207{ 195 tag descTag;
208 tag descTag; 196 regid sparingIdent;
209 regid sparingIdent; 197 __le16 reallocationTableLen;
210 __le16 reallocationTableLen; 198 __le16 reserved;
211 __le16 reserved; 199 __le32 sequenceNum;
212 __le32 sequenceNum;
213 struct sparingEntry 200 struct sparingEntry
214 mapEntry[0]; 201 mapEntry[0];
215} __attribute__ ((packed)); 202} __attribute__ ((packed));
216 203
217/* Metadata File (and Metadata Mirror File) (UDF 2.50 2.2.13.1) */ 204/* Metadata File (and Metadata Mirror File) (UDF 2.50 2.2.13.1) */
@@ -220,10 +207,9 @@ struct sparingTable
220#define ICBTAG_FILE_TYPE_BITMAP 0xFC 207#define ICBTAG_FILE_TYPE_BITMAP 0xFC
221 208
222/* struct long_ad ICB - ADImpUse (UDF 2.50 2.2.4.3) */ 209/* struct long_ad ICB - ADImpUse (UDF 2.50 2.2.4.3) */
223struct allocDescImpUse 210struct allocDescImpUse {
224{ 211 __le16 flags;
225 __le16 flags; 212 uint8_t impUse[4];
226 uint8_t impUse[4];
227} __attribute__ ((packed)); 213} __attribute__ ((packed));
228 214
229#define AD_IU_EXT_ERASED 0x0001 215#define AD_IU_EXT_ERASED 0x0001
@@ -233,27 +219,24 @@ struct allocDescImpUse
233 219
234/* Implementation Use Extended Attribute (UDF 2.50 3.3.4.5) */ 220/* Implementation Use Extended Attribute (UDF 2.50 3.3.4.5) */
235/* FreeEASpace (UDF 2.50 3.3.4.5.1.1) */ 221/* FreeEASpace (UDF 2.50 3.3.4.5.1.1) */
236struct freeEaSpace 222struct freeEaSpace {
237{ 223 __le16 headerChecksum;
238 __le16 headerChecksum; 224 uint8_t freeEASpace[0];
239 uint8_t freeEASpace[0];
240} __attribute__ ((packed)); 225} __attribute__ ((packed));
241 226
242/* DVD Copyright Management Information (UDF 2.50 3.3.4.5.1.2) */ 227/* DVD Copyright Management Information (UDF 2.50 3.3.4.5.1.2) */
243struct DVDCopyrightImpUse 228struct DVDCopyrightImpUse {
244{ 229 __le16 headerChecksum;
245 __le16 headerChecksum; 230 uint8_t CGMSInfo;
246 uint8_t CGMSInfo; 231 uint8_t dataType;
247 uint8_t dataType; 232 uint8_t protectionSystemInfo[4];
248 uint8_t protectionSystemInfo[4];
249} __attribute__ ((packed)); 233} __attribute__ ((packed));
250 234
251/* Application Use Extended Attribute (UDF 2.50 3.3.4.6) */ 235/* Application Use Extended Attribute (UDF 2.50 3.3.4.6) */
252/* FreeAppEASpace (UDF 2.50 3.3.4.6.1) */ 236/* FreeAppEASpace (UDF 2.50 3.3.4.6.1) */
253struct freeAppEASpace 237struct freeAppEASpace {
254{ 238 __le16 headerChecksum;
255 __le16 headerChecksum; 239 uint8_t freeEASpace[0];
256 uint8_t freeEASpace[0];
257} __attribute__ ((packed)); 240} __attribute__ ((packed));
258 241
259/* UDF Defined System Stream (UDF 2.50 3.3.7) */ 242/* UDF Defined System Stream (UDF 2.50 3.3.7) */
@@ -293,4 +276,4 @@ struct freeAppEASpace
293#define UDF_OS_ID_BEOS 0x00U 276#define UDF_OS_ID_BEOS 0x00U
294#define UDF_OS_ID_WINCE 0x00U 277#define UDF_OS_ID_WINCE 0x00U
295 278
296#endif /* _OSTA_UDF_H */ 279#endif /* _OSTA_UDF_H */