diff options
Diffstat (limited to 'fs/udf/partition.c')
-rw-r--r-- | fs/udf/partition.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/udf/partition.c b/fs/udf/partition.c index f3e472c67709..b526f25c04c9 100644 --- a/fs/udf/partition.c +++ b/fs/udf/partition.c | |||
@@ -321,8 +321,14 @@ uint32_t udf_get_pblock_meta25(struct super_block *sb, uint32_t block, | |||
321 | /* We shouldn't mount such media... */ | 321 | /* We shouldn't mount such media... */ |
322 | BUG_ON(!inode); | 322 | BUG_ON(!inode); |
323 | retblk = udf_try_read_meta(inode, block, partition, offset); | 323 | retblk = udf_try_read_meta(inode, block, partition, offset); |
324 | if (retblk == 0xFFFFFFFF) { | 324 | if (retblk == 0xFFFFFFFF && mdata->s_metadata_fe) { |
325 | udf_warn(sb, "error reading from METADATA, trying to read from MIRROR\n"); | 325 | udf_warn(sb, "error reading from METADATA, trying to read from MIRROR\n"); |
326 | if (!mdata->s_mirror_loaded_flag) { | ||
327 | mdata->s_mirror_fe = udf_find_metadata_inode_efe(sb, | ||
328 | mdata->s_mirror_file_loc, map->s_partition_num); | ||
329 | mdata->s_mirror_loaded_flag = 1; | ||
330 | } | ||
331 | |||
326 | inode = mdata->s_mirror_fe; | 332 | inode = mdata->s_mirror_fe; |
327 | if (!inode) | 333 | if (!inode) |
328 | return 0xFFFFFFFF; | 334 | return 0xFFFFFFFF; |