[SCSI] megaraid_sas: add bios_param in scsi_host_template
Signed-off-by: Sumant Patro <sumant.patro@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
af37acfb63
commit
cf62a0a543
|
@ -35,6 +35,7 @@
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
|
#include <linux/blkdev.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
|
|
||||||
#include <scsi/scsi.h>
|
#include <scsi/scsi.h>
|
||||||
|
@ -1014,6 +1015,49 @@ static int megasas_reset_bus_host(struct scsi_cmnd *scmd)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* megasas_bios_param - Returns disk geometry for a disk
|
||||||
|
* @sdev: device handle
|
||||||
|
* @bdev: block device
|
||||||
|
* @capacity: drive capacity
|
||||||
|
* @geom: geometry parameters
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
megasas_bios_param(struct scsi_device *sdev, struct block_device *bdev,
|
||||||
|
sector_t capacity, int geom[])
|
||||||
|
{
|
||||||
|
int heads;
|
||||||
|
int sectors;
|
||||||
|
sector_t cylinders;
|
||||||
|
unsigned long tmp;
|
||||||
|
/* Default heads (64) & sectors (32) */
|
||||||
|
heads = 64;
|
||||||
|
sectors = 32;
|
||||||
|
|
||||||
|
tmp = heads * sectors;
|
||||||
|
cylinders = capacity;
|
||||||
|
|
||||||
|
sector_div(cylinders, tmp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle extended translation size for logical drives > 1Gb
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (capacity >= 0x200000) {
|
||||||
|
heads = 255;
|
||||||
|
sectors = 63;
|
||||||
|
tmp = heads*sectors;
|
||||||
|
cylinders = capacity;
|
||||||
|
sector_div(cylinders, tmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
geom[0] = heads;
|
||||||
|
geom[1] = sectors;
|
||||||
|
geom[2] = cylinders;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* megasas_service_aen - Processes an event notification
|
* megasas_service_aen - Processes an event notification
|
||||||
* @instance: Adapter soft state
|
* @instance: Adapter soft state
|
||||||
|
@ -1054,6 +1098,7 @@ static struct scsi_host_template megasas_template = {
|
||||||
.eh_device_reset_handler = megasas_reset_device,
|
.eh_device_reset_handler = megasas_reset_device,
|
||||||
.eh_bus_reset_handler = megasas_reset_bus_host,
|
.eh_bus_reset_handler = megasas_reset_bus_host,
|
||||||
.eh_host_reset_handler = megasas_reset_bus_host,
|
.eh_host_reset_handler = megasas_reset_bus_host,
|
||||||
|
.bios_param = megasas_bios_param,
|
||||||
.use_clustering = ENABLE_CLUSTERING,
|
.use_clustering = ENABLE_CLUSTERING,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue