udf: Use device size when drive reported bogus number of written blocks
Some drives report 0 as the number of written blocks when there are some blocks recorded. Use device size in such case so that we can automagically mount such media. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
1d89b30cc9
commit
24a5d59f34
1 changed files with 6 additions and 1 deletions
|
@ -56,7 +56,12 @@ unsigned long udf_get_last_block(struct super_block *sb)
|
|||
struct block_device *bdev = sb->s_bdev;
|
||||
unsigned long lblock = 0;
|
||||
|
||||
if (ioctl_by_bdev(bdev, CDROM_LAST_WRITTEN, (unsigned long) &lblock))
|
||||
/*
|
||||
* ioctl failed or returned obviously bogus value?
|
||||
* Try using the device size...
|
||||
*/
|
||||
if (ioctl_by_bdev(bdev, CDROM_LAST_WRITTEN, (unsigned long) &lblock) ||
|
||||
lblock == 0)
|
||||
lblock = bdev->bd_inode->i_size >> sb->s_blocksize_bits;
|
||||
|
||||
if (lblock)
|
||||
|
|
Loading…
Reference in a new issue