udf: Cleanup anchor block detection.

UDF anchor block detection is complicated by several things - there are several
places where the anchor point can be, some of them relative to the last
recorded block which some devices report wrongly. Moreover some devices on some
media seem to have 7 spare blocks sectors for every 32 blocks (at least as far
as I understand the old code) so we have to count also with that possibility.

This patch splits anchor block detection into several functions so that it is
clearer what we actually try to do. We fix several bugs of the type "for such
and such media, we fail to check block blah" as a result of the cleanup.

Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
Jan Kara
2008-04-07 15:59:23 +02:00
parent 38b74a53e5
commit 423cf6dc04
2 changed files with 102 additions and 145 deletions

View File

@@ -100,7 +100,7 @@ struct udf_sb_info {
/* Sector headers */
__s32 s_session;
__u32 s_anchor[4];
__u32 s_anchor[3];
__u32 s_last_block;
struct buffer_head *s_lvid_bh;