Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6

* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-udf-2.6:
udf: Fix loading of VAT inode when drive wrongly reports number of recorded blocks

+12
+12
fs/udf/super.c
··· 1087 1087 struct udf_inode_info *vati; 1088 1088 uint32_t pos; 1089 1089 struct virtualAllocationTable20 *vat20; 1090 + sector_t blocks = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits; 1090 1091 1091 1092 /* VAT file entry is in the last recorded block */ 1092 1093 ino.partitionReferenceNum = type1_index; 1093 1094 ino.logicalBlockNum = sbi->s_last_block - map->s_partition_root; 1094 1095 sbi->s_vat_inode = udf_iget(sb, &ino); 1096 + if (!sbi->s_vat_inode && 1097 + sbi->s_last_block != blocks - 1) { 1098 + printk(KERN_NOTICE "UDF-fs: Failed to read VAT inode from the" 1099 + " last recorded block (%lu), retrying with the last " 1100 + "block of the device (%lu).\n", 1101 + (unsigned long)sbi->s_last_block, 1102 + (unsigned long)blocks - 1); 1103 + ino.partitionReferenceNum = type1_index; 1104 + ino.logicalBlockNum = blocks - 1 - map->s_partition_root; 1105 + sbi->s_vat_inode = udf_iget(sb, &ino); 1106 + } 1095 1107 if (!sbi->s_vat_inode) 1096 1108 return 1; 1097 1109