diff options
Diffstat (limited to 'fs/udf/osta_udf.h')
-rw-r--r-- | fs/udf/osta_udf.h | 239 |
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 | ||
68 | struct UDFIdentSuffix | 68 | struct 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 | ||
76 | struct impIdentSuffix | 75 | struct 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 | ||
83 | struct appIdentSuffix | 81 | struct 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) */ |
90 | struct logicalVolIntegrityDescImpUse | 87 | struct 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) */ |
103 | struct impUseVolDescImpUse | 99 | struct 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 | ||
114 | struct udfPartitionMap2 | 109 | struct 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) */ |
125 | struct virtualPartitionMap | 119 | struct 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) */ |
137 | struct sparablePartitionMap | 130 | struct 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) */ |
153 | struct metadataPartitionMap | 145 | struct 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) */ |
171 | struct virtualAllocationTable15 | 162 | struct 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) */ |
181 | struct virtualAllocationTable20 | 171 | struct 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) */ |
200 | struct sparingEntry | 189 | struct sparingEntry { |
201 | { | 190 | __le32 origLocation; |
202 | __le32 origLocation; | 191 | __le32 mappedLocation; |
203 | __le32 mappedLocation; | ||
204 | } __attribute__ ((packed)); | 192 | } __attribute__ ((packed)); |
205 | 193 | ||
206 | struct sparingTable | 194 | struct 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) */ |
223 | struct allocDescImpUse | 210 | struct 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) */ |
236 | struct freeEaSpace | 222 | struct 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) */ |
243 | struct DVDCopyrightImpUse | 228 | struct 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) */ |
253 | struct freeAppEASpace | 237 | struct 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 */ |