diff options
Diffstat (limited to 'fs/udf/lowlevel.c')
| -rw-r--r-- | fs/udf/lowlevel.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/udf/lowlevel.c b/fs/udf/lowlevel.c index 703843f30ffd..1b88fd5df05d 100644 --- a/fs/udf/lowlevel.c +++ b/fs/udf/lowlevel.c | |||
| @@ -56,7 +56,12 @@ unsigned long udf_get_last_block(struct super_block *sb) | |||
| 56 | struct block_device *bdev = sb->s_bdev; | 56 | struct block_device *bdev = sb->s_bdev; |
| 57 | unsigned long lblock = 0; | 57 | unsigned long lblock = 0; |
| 58 | 58 | ||
| 59 | if (ioctl_by_bdev(bdev, CDROM_LAST_WRITTEN, (unsigned long) &lblock)) | 59 | /* |
| 60 | * ioctl failed or returned obviously bogus value? | ||
| 61 | * Try using the device size... | ||
| 62 | */ | ||
| 63 | if (ioctl_by_bdev(bdev, CDROM_LAST_WRITTEN, (unsigned long) &lblock) || | ||
| 64 | lblock == 0) | ||
| 60 | lblock = bdev->bd_inode->i_size >> sb->s_blocksize_bits; | 65 | lblock = bdev->bd_inode->i_size >> sb->s_blocksize_bits; |
| 61 | 66 | ||
| 62 | if (lblock) | 67 | if (lblock) |
