diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-08-24 12:25:44 +0200 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-08-24 12:25:54 +0200 | 
| commit | 5f9ece02401116b29eb04396b99ea092acb75dd8 (patch) | |
| tree | e10386e2dc63c275646b4eb0bed857da7bf86c6a /fs/udf/super.c | |
| parent | 9f51e24ee8b5a1595b6a5ac0c2be278a16488e75 (diff) | |
| parent | 422bef879e84104fee6dc68ded0e371dbeb5f88e (diff) | |
| download | olio-linux-3.10-5f9ece02401116b29eb04396b99ea092acb75dd8.tar.xz olio-linux-3.10-5f9ece02401116b29eb04396b99ea092acb75dd8.zip  | |
Merge commit 'v2.6.31-rc7' into x86/cleanups
Merge reason: we were on -rc1 before - go up to -rc7
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs/udf/super.c')
| -rw-r--r-- | fs/udf/super.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/udf/super.c b/fs/udf/super.c index 6832135159b..9d1b8c2e6c4 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -1087,11 +1087,23 @@ static int udf_load_vat(struct super_block *sb, int p_index, int type1_index)  	struct udf_inode_info *vati;  	uint32_t pos;  	struct virtualAllocationTable20 *vat20; +	sector_t blocks = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits;  	/* VAT file entry is in the last recorded block */  	ino.partitionReferenceNum = type1_index;  	ino.logicalBlockNum = sbi->s_last_block - map->s_partition_root;  	sbi->s_vat_inode = udf_iget(sb, &ino); +	if (!sbi->s_vat_inode && +	    sbi->s_last_block != blocks - 1) { +		printk(KERN_NOTICE "UDF-fs: Failed to read VAT inode from the" +		       " last recorded block (%lu), retrying with the last " +		       "block of the device (%lu).\n", +		       (unsigned long)sbi->s_last_block, +		       (unsigned long)blocks - 1); +		ino.partitionReferenceNum = type1_index; +		ino.logicalBlockNum = blocks - 1 - map->s_partition_root; +		sbi->s_vat_inode = udf_iget(sb, &ino); +	}  	if (!sbi->s_vat_inode)  		return 1;  |