mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-06 05:13:18 +00:00
[SCSI] Bogus disk geometry on large disks
We currently stuff a truncated size into the geometry logic and return the result which can produce bizarre reports for a 4Tb array. Since that mapping logic isn't useful for disks that big don't try and map this way at all. Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
3e7196cf60
commit
8d55a786fe
@ -57,6 +57,7 @@ EXPORT_SYMBOL(scsi_bios_ptable);
|
||||
int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip)
|
||||
{
|
||||
unsigned char *p;
|
||||
u64 capacity64 = capacity; /* Suppress gcc warning */
|
||||
int ret;
|
||||
|
||||
p = scsi_bios_ptable(bdev);
|
||||
@ -68,7 +69,7 @@ int scsicam_bios_param(struct block_device *bdev, sector_t capacity, int *ip)
|
||||
(unsigned int *)ip + 0, (unsigned int *)ip + 1);
|
||||
kfree(p);
|
||||
|
||||
if (ret == -1) {
|
||||
if (ret == -1 && capacity64 < (1ULL << 32)) {
|
||||
/* pick some standard mapping with at most 1024 cylinders,
|
||||
and at most 62 sectors per track - this works up to
|
||||
7905 MB */
|
||||
|
Loading…
Reference in New Issue
Block a user