Changes in uspace/srv/fs/udf/udf_volume.c [5c702a8:48e3190] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/udf/udf_volume.c
r5c702a8 r48e3190 151 151 * 152 152 */ 153 staticvoid udf_prepare_tag(udf_descriptor_tag_t *tag)153 void udf_prepare_tag(udf_descriptor_tag_t *tag) 154 154 { 155 155 GET_LE16(tag->id); … … 159 159 GET_LE16(tag->descriptor_crc_length); 160 160 GET_LE32(tag->location); 161 }162 163 /** Read AVD by using one of default sector size from array164 *165 * @param service_id166 * @param avd Returned value - Anchor Volume Descriptor167 * @param sector_size Expected sector size168 *169 * @return EOK on success or a negative error code.170 *171 */172 static int udf_get_anchor_volume_descriptor_by_ssize(service_id_t service_id,173 udf_anchor_volume_descriptor_t *avd, uint32_t sector_size)174 {175 int rc = block_read_bytes_direct(service_id,176 UDF_AVDP_SECTOR * sector_size,177 sizeof(udf_anchor_volume_descriptor_t), avd);178 if (rc != EOK)179 return rc;180 181 if (avd->tag.checksum != udf_tag_checksum((uint8_t *) &avd->tag))182 return EINVAL;183 184 // TODO: Should be tested in big-endian mode185 udf_prepare_tag(&avd->tag);186 187 if (avd->tag.id != UDF_TAG_AVDP)188 return EINVAL;189 190 GET_LE32(avd->main_extent.length);191 GET_LE32(avd->main_extent.location);192 GET_LE32(avd->reserve_extent.length);193 GET_LE32(avd->reserve_extent.location);194 195 return EOK;196 161 } 197 162 … … 235 200 236 201 return EINVAL; 202 } 203 204 /** Read AVD by using one of default sector size from array 205 * 206 * @param service_id 207 * @param avd Returned value - Anchor Volume Descriptor 208 * @param sector_size Expected sector size 209 * 210 * @return EOK on success or a negative error code. 211 * 212 */ 213 int udf_get_anchor_volume_descriptor_by_ssize(service_id_t service_id, 214 udf_anchor_volume_descriptor_t *avd, uint32_t sector_size) 215 { 216 int rc = block_read_bytes_direct(service_id, 217 UDF_AVDP_SECTOR * sector_size, 218 sizeof(udf_anchor_volume_descriptor_t), avd); 219 if (rc != EOK) 220 return rc; 221 222 if (avd->tag.checksum != udf_tag_checksum((uint8_t *) &avd->tag)) 223 return EINVAL; 224 225 // TODO: Should be tested in BegEndian mode 226 udf_prepare_tag(&avd->tag); 227 228 if (avd->tag.id != UDF_TAG_AVDP) 229 return EINVAL; 230 231 GET_LE32(avd->main_extent.length); 232 GET_LE32(avd->main_extent.location); 233 GET_LE32(avd->reserve_extent.length); 234 GET_LE32(avd->reserve_extent.location); 235 236 return EOK; 237 237 } 238 238
Note:
See TracChangeset
for help on using the changeset viewer.