[PATCH 2/2] mpt fusion: port "4.00.43.00" to mainstream git kernel

From: crquan
Date: Fri Dec 05 2008 - 08:26:41 EST


From: Cheng Renquan <crquan@xxxxxxxxx>

this one just can build with mainstream git kernel, I did not even test it.

I just have tested it with kernel 2.6.26.2, that patch is very similar to
this, and it did work well with 2.6.26.2.

Signed-off-by: Cheng Renquan <crquan@xxxxxxxxx>
---
drivers/message/fusion/linux_compat.h | 3 +-
drivers/message/fusion/mptbase.c | 10 +-
drivers/message/fusion/mptbase.h | 6 +-
drivers/message/fusion/mptfc.c | 4 +-
drivers/message/fusion/mptsas.c | 14 +---
drivers/message/fusion/mptscsih.c | 169 +++++++++++++--------------------
drivers/message/fusion/mptscsih.h | 2 +-
7 files changed, 79 insertions(+), 129 deletions(-)

diff --git a/drivers/message/fusion/linux_compat.h b/drivers/message/fusion/linux_compat.h
index 24ad3f1..92e9797 100644
--- a/drivers/message/fusion/linux_compat.h
+++ b/drivers/message/fusion/linux_compat.h
@@ -31,7 +31,6 @@ static inline void *shost_private(struct Scsi_Host *shost)
#define spi_dv_pending(x) (((struct spi_transport_attrs *)&(x)->starget_data)->dv_pending)
#endif

-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,23))
/**
* mpt_scsilun_to_int: convert a scsi_lun to an int
* @scsilun: struct scsi_lun to be converted.
@@ -62,7 +61,7 @@ static inline int mpt_scsilun_to_int(struct scsi_lun *scsilun)
scsilun->scsi_lun[i + 1]) << (i * 8));
return lun;
}
-#endif
+
#if (defined(CONFIG_SUSE_KERNEL) && !defined(scsi_is_sas_phy_local))
#define SUSE_KERNEL_BASE 1
#endif
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c
index 2979b63..36dd62a 100644
--- a/drivers/message/fusion/mptbase.c
+++ b/drivers/message/fusion/mptbase.c
@@ -1618,7 +1618,7 @@ mpt_mapresources(MPT_ADAPTER *ioc)
}
#else
ioc->bars = pci_select_bars(pdev, IORESOURCE_MEM);
- if (pci_enable_device_bars(pdev, ioc->bars)) {
+ if (pci_enable_device(pdev)) {
printk(MYIOC_s_ERR_FMT "pci_enable_device_bars() with MEM "
"failed\n",ioc->name);
return r;
@@ -1826,7 +1826,8 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)
#endif

/* Initialize workqueue */
- snprintf(ioc->reset_work_q_name, KOBJ_NAME_LEN, "mpt_poll_%d", ioc->id);
+ snprintf(ioc->reset_work_q_name, sizeof(ioc->reset_work_q_name),
+ "mpt_poll_%d", ioc->id);
ioc->reset_work_q =
create_singlethread_workqueue(ioc->reset_work_q_name);
if (!ioc->reset_work_q) {
@@ -1949,7 +1950,8 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id)

INIT_LIST_HEAD(&ioc->fw_event_list);
spin_lock_init(&ioc->fw_event_lock);
- snprintf(ioc->fw_event_q_name, KOBJ_NAME_LEN, "mpt/%d", ioc->id);
+ snprintf(ioc->fw_event_q_name, sizeof(ioc->fw_event_q_name),
+ "mpt/%d", ioc->id);
ioc->fw_event_q = create_singlethread_workqueue(ioc->fw_event_q_name);

if ((r = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_BRINGUP,
@@ -2303,7 +2305,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag)
pci_release_selected_regions(ioc->pcidev, ioc->bars);
ioc->bars = pci_select_bars(ioc->pcidev, IORESOURCE_MEM |
IORESOURCE_IO);
- if (pci_enable_device_bars(ioc->pcidev, ioc->bars))
+ if (pci_enable_device(ioc->pcidev))
return -5;
if (pci_request_selected_regions(ioc->pcidev, ioc->bars,
"mpt"))
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h
index 73b326d..63f74be 100644
--- a/drivers/message/fusion/mptbase.h
+++ b/drivers/message/fusion/mptbase.h
@@ -711,7 +711,7 @@ typedef struct _MPT_ADAPTER
struct list_head fw_event_list;
spinlock_t fw_event_lock;
u8 fw_events_off; /* if '1', then ignore events */
- char fw_event_q_name[KOBJ_NAME_LEN];
+ char fw_event_q_name[20];

struct mptsas_portinfo *hba_port_info; /* port_info object for the host */
u64 hba_port_sas_addr;
@@ -734,7 +734,7 @@ typedef struct _MPT_ADAPTER
u8 num_ports;
#endif

- char reset_work_q_name[KOBJ_NAME_LEN];
+ char reset_work_q_name[20];
struct workqueue_struct *reset_work_q;
#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
struct delayed_work fault_reset_work;
@@ -747,7 +747,7 @@ typedef struct _MPT_ADAPTER
u8 fc_link_speed[2];
spinlock_t fc_rescan_work_lock;
struct work_struct fc_rescan_work;
- char fc_rescan_work_q_name[KOBJ_NAME_LEN];
+ char fc_rescan_work_q_name[20];
struct workqueue_struct *fc_rescan_work_q;
unsigned long hard_resets; /* driver forced bus resets count */
unsigned long soft_resets; /* fw/external bus resets count */
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c
index 0e943ba..bfb18c8 100644
--- a/drivers/message/fusion/mptfc.c
+++ b/drivers/message/fusion/mptfc.c
@@ -1398,8 +1398,8 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id)

/* initialize workqueue */

- snprintf(ioc->fc_rescan_work_q_name, KOBJ_NAME_LEN, "mptfc_wq_%d",
- sh->host_no);
+ snprintf(ioc->fc_rescan_work_q_name, sizeof(ioc->fc_rescan_work_q_name),
+ "mptfc_wq_%d", sh->host_no);
ioc->fc_rescan_work_q =
create_singlethread_workqueue(ioc->fc_rescan_work_q_name);
if (!ioc->fc_rescan_work_q)
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index ee1edaf..4218686 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -147,11 +147,7 @@ static int mptsas_sas_expander_pg0(MPT_ADAPTER *ioc, struct mptsas_portinfo *por
static void mptsas_scan_sas_topology(MPT_ADAPTER *ioc);
static void mptsas_not_responding_devices(MPT_ADAPTER *ioc);

-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
static void mptsas_firmware_event_work(struct work_struct *work);
-#else
-static void mptsas_firmware_event_work(void *arg);
-#endif

/**
* mptsas_set_sdev_queue_depth - global setting of the mpt_sdev_queue_depth
@@ -4847,16 +4843,10 @@ mptsas_handle_queue_full_event(struct fw_event_work *fw_event)
*
*/
static void
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,19))
mptsas_firmware_event_work(struct work_struct *work)
{
- struct mptsas_hotplug_event *ev =
- container_of(work, struct fw_event_work, fw_event.work);
-#else
-mptsas_firmware_event_work(void *arg)
-{
- struct fw_event_work *fw_event = (struct fw_event_work *)arg;
-#endif
+ struct fw_event_work *fw_event =
+ container_of(work, struct fw_event_work, work.work);
MPT_ADAPTER *ioc = fw_event->ioc;

/* special rescan topology handling */
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c
index 9f0106e..e358f72 100644
--- a/drivers/message/fusion/mptscsih.c
+++ b/drivers/message/fusion/mptscsih.c
@@ -199,30 +199,13 @@ mptscsih_AddSGE(MPT_ADAPTER *ioc, struct scsi_cmnd *SCpnt,
/* Map the data portion, if any.
* sges_left = 0 if no data transfer.
*/
- if ( (sges_left = SCpnt->use_sg) ) {
- sges_left = pci_map_sg(ioc->pcidev,
- (struct scatterlist *) SCpnt->request_buffer,
- SCpnt->use_sg,
- SCpnt->sc_data_direction);
- if (sges_left == 0)
- return FAILED;
- } else if (SCpnt->request_bufflen) {
- SCpnt->SCp.dma_handle = pci_map_single(ioc->pcidev,
- SCpnt->request_buffer,
- SCpnt->request_bufflen,
- SCpnt->sc_data_direction);
- dsgprintk(ioc, printk(MYIOC_s_DEBUG_FMT "SG: non-SG for %p, len=%d\n",
- ioc->name, SCpnt, SCpnt->request_bufflen));
- ioc->add_sge((char *) &pReq->SGL,
- 0xD1000000|sgdir|SCpnt->request_bufflen,
- SCpnt->SCp.dma_handle);
-
- return SUCCESS;
- }
+ sges_left = scsi_dma_map(SCpnt);
+ if (sges_left < 0)
+ return FAILED;

/* Handle the SG case.
*/
- sg = (struct scatterlist *) SCpnt->request_buffer;
+ sg = scsi_sglist(SCpnt);
sg_done = 0;
sgeOffset = sizeof(SCSIIORequest_t) - sizeof(SGE_IO_UNION);
chainSge = NULL;
@@ -246,7 +229,7 @@ nextSGEset:
for (ii=0; ii < (numSgeThisFrame-1); ii++) {
thisxfer = sg_dma_len(sg);
if (thisxfer == 0) {
- sg ++; /* Get next SG element from the OS */
+ sg = sg_next(sg); /* Get next SG element from the OS */
sg_done++;
continue;
}
@@ -254,7 +237,7 @@ nextSGEset:
v2 = sg_dma_address(sg);
ioc->add_sge(psge, sgflags | thisxfer, v2);

- sg++; /* Get next SG element from the OS */
+ sg = sg_next(sg); /* Get next SG element from the OS */
psge += ioc->SGE_size;
sgeOffset += ioc->SGE_size;
sg_done++;
@@ -544,7 +527,7 @@ mptscsih_info_scsiio(MPT_ADAPTER *ioc, struct scsi_cmnd *sc, SCSIIOReply_t * pSc
printk(MYIOC_s_DEBUG_FMT "\tfw_channel = %d, fw_id = %d, lun = %d\n",
ioc->name, pScsiReply->Bus, pScsiReply->TargetID, sc->device->lun);
printk(MYIOC_s_DEBUG_FMT "\trequest_len = %d, underflow = %d, resid = %d\n",
- ioc->name, sc->request_bufflen, sc->underflow, sc->resid);
+ ioc->name, scsi_bufflen(sc), sc->underflow, scsi_get_resid(sc));
printk(MYIOC_s_DEBUG_FMT "\ttag = %d, transfer_count = %d, sc->result = %08X\n",
ioc->name, le16_to_cpu(pScsiReply->TaskTag),
le32_to_cpu(pScsiReply->TransferCount), sc->result);
@@ -665,7 +648,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
scsi_state = pScsiReply->SCSIState;
scsi_status = pScsiReply->SCSIStatus;
xfer_cnt = le32_to_cpu(pScsiReply->TransferCount);
- sc->resid = sc->request_bufflen - xfer_cnt;
+ scsi_set_resid(sc, scsi_bufflen(sc) - xfer_cnt);
log_info = le32_to_cpu(pScsiReply->IOCLogInfo);
vdevice = sc->device->hostdata;

@@ -760,7 +743,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
break;

case MPI_IOCSTATUS_SCSI_RESIDUAL_MISMATCH: /* 0x0049 */
- sc->resid = sc->request_bufflen - xfer_cnt;
+ scsi_set_resid(sc, scsi_bufflen(sc) - xfer_cnt);
if((xfer_cnt==0)||(sc->underflow > xfer_cnt))
sc->result=DID_SOFT_ERROR << 16;
else /* Sufficient data transfer occurred */
@@ -791,12 +774,12 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
pScsiReq->CDB[0] == READ_16 ||
pScsiReq->CDB[0] == VERIFY ||
pScsiReq->CDB[0] == VERIFY_16) {
- if (sc->request_bufflen !=
+ if (scsi_bufflen(sc) !=
xfer_cnt) {
sc->result = DID_SOFT_ERROR << 16;
printk(MYIOC_s_WARN_FMT "Errata"
"on LSI53C1030 occurred. sc->request_bufflen=0x%02x, "
- "xfer_cnt=0x%02x\n", ioc->name, sc->request_bufflen, xfer_cnt);
+ "xfer_cnt=0x%02x\n", ioc->name, scsi_bufflen(sc), xfer_cnt);
}
}
}
@@ -826,7 +809,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
break;

case MPI_IOCSTATUS_SCSI_DATA_OVERRUN: /* 0x0044 */
- sc->resid=0;
+ scsi_set_resid(sc, 0);
case MPI_IOCSTATUS_SCSI_RECOVERED_ERROR: /* 0x0040 */
case MPI_IOCSTATUS_SUCCESS: /* 0x0000 */
sc->result = (DID_OK << 16) | scsi_status;
@@ -849,23 +832,23 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
sc->sense_buffer[5] << 8 |
sc->sense_buffer[6];
if ((sc->sense_buffer[3] & 0x80) == 0x80) {
- if (sc->request_bufflen != xfer_cnt) {
+ if (scsi_bufflen(sc) != xfer_cnt) {
sc->sense_buffer[2] = MEDIUM_ERROR;
sc->sense_buffer[12] = 0xff;
sc->sense_buffer[13] = 0xff;
printk(MYIOC_s_WARN_FMT "Errata on "
"LSI53C1030 occurred. sc->request_bufflen=0x%02x,"
- "xfer_cnt=0x%02x\n", ioc->name, sc->request_bufflen, xfer_cnt);
+ "xfer_cnt=0x%02x\n", ioc->name, scsi_bufflen(sc), xfer_cnt);
}
} else {
- if (sc->request_bufflen != xfer_cnt + difftransfer) {
+ if (scsi_bufflen(sc) != xfer_cnt + difftransfer) {
sc->sense_buffer[2] = MEDIUM_ERROR;
sc->sense_buffer[12] = 0xff;
sc->sense_buffer[13] = 0xff;
printk(MYIOC_s_WARN_FMT "Errata on "
"LSI53C1030 occurred. sc->request_bufflen=0x%02x,"
" xfer_cnt=0x%02x, difftransfer=0x%02x\n",
- ioc->name, sc->request_bufflen , xfer_cnt, difftransfer);
+ ioc->name, scsi_bufflen(sc) , xfer_cnt, difftransfer);
}
}
}
@@ -939,13 +922,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
} /* end of address reply case */

/* Unmap the DMA buffers, if any. */
- if (sc->use_sg) {
- pci_unmap_sg(ioc->pcidev, (struct scatterlist *) sc->request_buffer,
- sc->use_sg, sc->sc_data_direction);
- } else if (sc->request_bufflen) {
- pci_unmap_single(ioc->pcidev, sc->SCp.dma_handle,
- sc->request_bufflen, sc->sc_data_direction);
- }
+ scsi_dma_unmap(sc);

sc->scsi_done(sc); /* Issue the command callback */

@@ -986,15 +963,7 @@ mptscsih_flush_running_cmds(MPT_SCSI_HOST *hd)
mpt_free_msg_frame(ioc, (MPT_FRAME_HDR *)mf);
if ((unsigned char *)mf != sc->host_scribble)
continue;
- if (sc->use_sg) {
- pci_unmap_sg(ioc->pcidev,
- (struct scatterlist *) sc->request_buffer,
- sc->use_sg, sc->sc_data_direction);
- } else if (sc->request_bufflen) {
- pci_unmap_single(ioc->pcidev,
- sc->SCp.dma_handle, sc->request_bufflen,
- sc->sc_data_direction);
- }
+ scsi_dma_unmap(sc);
sc->result = DID_RESET << 16;
sc->host_scribble = NULL;
dtmprintk(ioc, sdev_printk(KERN_INFO, sc->device, MYIOC_s_FMT
@@ -1058,17 +1027,7 @@ mptscsih_search_running_cmds(MPT_SCSI_HOST *hd, VirtDevice *vdevice)
spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags);
mptscsih_freeChainBuffers(ioc, ii);
mpt_free_msg_frame(ioc, (MPT_FRAME_HDR *)mf);
- if (sc->use_sg) {
- pci_unmap_sg(ioc->pcidev,
- (struct scatterlist *) sc->request_buffer,
- sc->use_sg,
- sc->sc_data_direction);
- } else if (sc->request_bufflen) {
- pci_unmap_single(ioc->pcidev,
- sc->SCp.dma_handle,
- sc->request_bufflen,
- sc->sc_data_direction);
- }
+ scsi_dma_unmap(sc);
sc->host_scribble = NULL;
sc->result = DID_NO_CONNECT << 16;
dtmprintk(ioc, sdev_printk(KERN_INFO, sc->device,
@@ -1404,10 +1363,10 @@ mptscsih_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
* will be no data transfer! GRRRRR...
*/
if (SCpnt->sc_data_direction == DMA_FROM_DEVICE) {
- datalen = SCpnt->request_bufflen;
+ datalen = scsi_bufflen(SCpnt);
scsidir = MPI_SCSIIO_CONTROL_READ; /* DATA IN (host<--ioc<--dev) */
} else if (SCpnt->sc_data_direction == DMA_TO_DEVICE) {
- datalen = SCpnt->request_bufflen;
+ datalen = scsi_bufflen(SCpnt);
scsidir = MPI_SCSIIO_CONTROL_WRITE; /* DATA OUT (host-->ioc-->dev) */
} else {
datalen = 0;
@@ -1851,7 +1810,7 @@ mptscsih_taskmgmt_complete(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *m
int
mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, int lun, int ctx2abort, ulong timeout)
{
- MPT_FRAME_HDR *mf;
+ MPT_FRAME_HDR *uninitialized_var(mf);
SCSITaskMgmt_t *pScsiTm;
int ii;
int retval;
@@ -3270,7 +3229,7 @@ mptscsih_synchronize_cache(struct scsi_device *sdev, MPT_SCSI_HOST *hd, VirtDevi
* shost attributes
*/
static ssize_t
-mptscsih_version_fw_show(struct class_device *cdev, char *buf)
+mptscsih_version_fw_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3282,10 +3241,10 @@ mptscsih_version_fw_show(struct class_device *cdev, char *buf)
(ioc->facts.FWVersion.Word & 0x0000FF00) >> 8,
ioc->facts.FWVersion.Word & 0x000000FF);
}
-static CLASS_DEVICE_ATTR(version_fw, S_IRUGO, mptscsih_version_fw_show, NULL);
+static DEVICE_ATTR(version_fw, S_IRUGO, mptscsih_version_fw_show, NULL);

static ssize_t
-mptscsih_version_bios_show(struct class_device *cdev, char *buf)
+mptscsih_version_bios_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3297,10 +3256,10 @@ mptscsih_version_bios_show(struct class_device *cdev, char *buf)
(ioc->biosVersion & 0x0000FF00) >> 8,
ioc->biosVersion & 0x000000FF);
}
-static CLASS_DEVICE_ATTR(version_bios, S_IRUGO, mptscsih_version_bios_show, NULL);
+static DEVICE_ATTR(version_bios, S_IRUGO, mptscsih_version_bios_show, NULL);

static ssize_t
-mptscsih_version_mpi_show(struct class_device *cdev, char *buf)
+mptscsih_version_mpi_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3313,10 +3272,10 @@ mptscsih_version_mpi_show(struct class_device *cdev, char *buf)
return snprintf(buf, PAGE_SIZE, "%03x\n",
ioc->facts.MsgVersion);
}
-static CLASS_DEVICE_ATTR(version_mpi, S_IRUGO, mptscsih_version_mpi_show, NULL);
+static DEVICE_ATTR(version_mpi, S_IRUGO, mptscsih_version_mpi_show, NULL);

static ssize_t
-mptscsih_version_product_show(struct class_device *cdev, char *buf)
+mptscsih_version_product_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3324,11 +3283,11 @@ mptscsih_version_product_show(struct class_device *cdev, char *buf)

return snprintf(buf, PAGE_SIZE, "%s\n", ioc->prod_name);
}
-static CLASS_DEVICE_ATTR(version_product, S_IRUGO,
+static DEVICE_ATTR(version_product, S_IRUGO,
mptscsih_version_product_show, NULL);

static ssize_t
-mptscsih_version_nvdata_persistent_show(struct class_device *cdev, char *buf)
+mptscsih_version_nvdata_persistent_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3337,11 +3296,11 @@ mptscsih_version_nvdata_persistent_show(struct class_device *cdev, char *buf)
return snprintf(buf, PAGE_SIZE, "%02xh\n",
ioc->nvdata_version_persistent);
}
-static CLASS_DEVICE_ATTR(version_nvdata_persistent, S_IRUGO,
+static DEVICE_ATTR(version_nvdata_persistent, S_IRUGO,
mptscsih_version_nvdata_persistent_show, NULL);

static ssize_t
-mptscsih_version_nvdata_default_show(struct class_device *cdev, char *buf)
+mptscsih_version_nvdata_default_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3349,11 +3308,11 @@ mptscsih_version_nvdata_default_show(struct class_device *cdev, char *buf)

return snprintf(buf, PAGE_SIZE, "%02xh\n",ioc->nvdata_version_default);
}
-static CLASS_DEVICE_ATTR(version_nvdata_default, S_IRUGO,
+static DEVICE_ATTR(version_nvdata_default, S_IRUGO,
mptscsih_version_nvdata_default_show, NULL);

static ssize_t
-mptscsih_board_name_show(struct class_device *cdev, char *buf)
+mptscsih_board_name_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3361,10 +3320,10 @@ mptscsih_board_name_show(struct class_device *cdev, char *buf)

return snprintf(buf, PAGE_SIZE, "%s\n", ioc->board_name);
}
-static CLASS_DEVICE_ATTR(board_name, S_IRUGO, mptscsih_board_name_show, NULL);
+static DEVICE_ATTR(board_name, S_IRUGO, mptscsih_board_name_show, NULL);

static ssize_t
-mptscsih_board_assembly_show(struct class_device *cdev, char *buf)
+mptscsih_board_assembly_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3372,11 +3331,11 @@ mptscsih_board_assembly_show(struct class_device *cdev, char *buf)

return snprintf(buf, PAGE_SIZE, "%s\n", ioc->board_assembly);
}
-static CLASS_DEVICE_ATTR(board_assembly, S_IRUGO,
+static DEVICE_ATTR(board_assembly, S_IRUGO,
mptscsih_board_assembly_show, NULL);

static ssize_t
-mptscsih_board_tracer_show(struct class_device *cdev, char *buf)
+mptscsih_board_tracer_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3384,11 +3343,11 @@ mptscsih_board_tracer_show(struct class_device *cdev, char *buf)

return snprintf(buf, PAGE_SIZE, "%s\n", ioc->board_tracer);
}
-static CLASS_DEVICE_ATTR(board_tracer, S_IRUGO,
+static DEVICE_ATTR(board_tracer, S_IRUGO,
mptscsih_board_tracer_show, NULL);

static ssize_t
-mptscsih_io_delay_show(struct class_device *cdev, char *buf)
+mptscsih_io_delay_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3396,11 +3355,11 @@ mptscsih_io_delay_show(struct class_device *cdev, char *buf)

return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->io_missing_delay);
}
-static CLASS_DEVICE_ATTR(io_delay, S_IRUGO,
+static DEVICE_ATTR(io_delay, S_IRUGO,
mptscsih_io_delay_show, NULL);

static ssize_t
-mptscsih_device_delay_show(struct class_device *cdev, char *buf)
+mptscsih_device_delay_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3408,11 +3367,11 @@ mptscsih_device_delay_show(struct class_device *cdev, char *buf)

return snprintf(buf, PAGE_SIZE, "%02d\n", ioc->device_missing_delay);
}
-static CLASS_DEVICE_ATTR(device_delay, S_IRUGO,
+static DEVICE_ATTR(device_delay, S_IRUGO,
mptscsih_device_delay_show, NULL);

static ssize_t
-mptscsih_debug_level_show(struct class_device *cdev, char *buf)
+mptscsih_debug_level_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3421,7 +3380,7 @@ mptscsih_debug_level_show(struct class_device *cdev, char *buf)
return snprintf(buf, PAGE_SIZE, "%08xh\n", ioc->debug_level);
}
static ssize_t
-mptscsih_debug_level_store(struct class_device *cdev, const char *buf, size_t count)
+mptscsih_debug_level_store(struct device *cdev, struct device_attribute *attr, const char *buf, size_t count)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3436,11 +3395,11 @@ mptscsih_debug_level_store(struct class_device *cdev, const char *buf, size_t co
ioc->debug_level);
return strlen(buf);
}
-static CLASS_DEVICE_ATTR(debug_level, S_IRUGO | S_IWUSR,
+static DEVICE_ATTR(debug_level, S_IRUGO | S_IWUSR,
mptscsih_debug_level_show, mptscsih_debug_level_store);

static ssize_t
-mptscsih_disable_hotplug_remove_show(struct class_device *cdev, char *buf)
+mptscsih_disable_hotplug_remove_show(struct device *cdev, struct device_attribute *attr, char *buf)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3449,7 +3408,7 @@ mptscsih_disable_hotplug_remove_show(struct class_device *cdev, char *buf)
return snprintf(buf, PAGE_SIZE, "%02xh\n", ioc->disable_hotplug_remove);
}
static ssize_t
-mptscsih_disable_hotplug_remove_store(struct class_device *cdev, const char *buf, size_t count)
+mptscsih_disable_hotplug_remove_store(struct device *cdev, struct device_attribute *attr, const char *buf, size_t count)
{
struct Scsi_Host *host = class_to_shost(cdev);
MPT_SCSI_HOST *hd = shost_private(host);
@@ -3467,23 +3426,23 @@ mptscsih_disable_hotplug_remove_store(struct class_device *cdev, const char *buf
printk(MYIOC_s_INFO_FMT "eanbling hotplug remove\n", ioc->name);
return strlen(buf);
}
-static CLASS_DEVICE_ATTR(disable_hotplug_remove, S_IRUGO | S_IWUSR,
+static DEVICE_ATTR(disable_hotplug_remove, S_IRUGO | S_IWUSR,
mptscsih_disable_hotplug_remove_show, mptscsih_disable_hotplug_remove_store);

-struct class_device_attribute *mptscsih_host_attrs[] = {
- &class_device_attr_version_fw,
- &class_device_attr_version_bios,
- &class_device_attr_version_mpi,
- &class_device_attr_version_product,
- &class_device_attr_version_nvdata_persistent,
- &class_device_attr_version_nvdata_default,
- &class_device_attr_board_name,
- &class_device_attr_board_assembly,
- &class_device_attr_board_tracer,
- &class_device_attr_io_delay,
- &class_device_attr_device_delay,
- &class_device_attr_debug_level,
- &class_device_attr_disable_hotplug_remove,
+struct device_attribute *mptscsih_host_attrs[] = {
+ &dev_attr_version_fw,
+ &dev_attr_version_bios,
+ &dev_attr_version_mpi,
+ &dev_attr_version_product,
+ &dev_attr_version_nvdata_persistent,
+ &dev_attr_version_nvdata_default,
+ &dev_attr_board_name,
+ &dev_attr_board_assembly,
+ &dev_attr_board_tracer,
+ &dev_attr_io_delay,
+ &dev_attr_device_delay,
+ &dev_attr_debug_level,
+ &dev_attr_disable_hotplug_remove,
NULL,
};
EXPORT_SYMBOL(mptscsih_host_attrs);
diff --git a/drivers/message/fusion/mptscsih.h b/drivers/message/fusion/mptscsih.h
index 9b0b0b0..c199843 100644
--- a/drivers/message/fusion/mptscsih.h
+++ b/drivers/message/fusion/mptscsih.h
@@ -133,7 +133,7 @@ extern int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id,
extern u8 mptscsih_raid_id_to_num(MPT_ADAPTER *ioc, u8 channel, u8 id);
extern int mptscsih_is_phys_disk(MPT_ADAPTER *ioc, u8 channel, u8 id);
extern int mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *iocmd);
-extern struct class_device_attribute *mptscsih_host_attrs[];
+extern struct device_attribute *mptscsih_host_attrs[];
extern int mptscsih_quiesce_raid(MPT_SCSI_HOST *hd, int quiesce, u8 channel, u8 id);
extern struct scsi_cmnd * mptscsih_get_scsi_lookup(MPT_ADAPTER *ioc, int i);
extern void mptscsih_taskmgmt_response_code(MPT_ADAPTER *ioc, u8 response_code);
--
1.6.0.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/