diff options
author | Prakash, Sathya <sathya.prakash@lsi.com> | 2007-07-24 06:17:41 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.localdomain> | 2007-07-28 11:31:54 -0400 |
commit | d6ecdd638aa840604b87195f2097cabbd095092c (patch) | |
tree | 1c3d84dc2219164f4cb99324362226a287029e2b /drivers/message/fusion/mptfc.c | |
parent | 6757d6b4c0701866bbf2ac02c397f78879b75e58 (diff) |
[SCSI] mpt fusion: Changes in mptfc.c mptlan.c mptsas.c and mptspi.c for logging support
This patch contains changes in mptfc.c, mptlan.c, mptsas.c and mptspi.c to
support logging in MPT fusion drivers.
The changes are majorly in debug printks, the existing debugprintk are
modified accroding to new debug macros defined in the file mptbdebug.h
signed-off-by: Sathya Prakash <sathya.prakash@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/message/fusion/mptfc.c')
-rw-r--r-- | drivers/message/fusion/mptfc.c | 108 |
1 files changed, 47 insertions, 61 deletions
diff --git a/drivers/message/fusion/mptfc.c b/drivers/message/fusion/mptfc.c index f2ebaa9992fe..8422c25e4a3e 100644 --- a/drivers/message/fusion/mptfc.c +++ b/drivers/message/fusion/mptfc.c | |||
@@ -188,16 +188,18 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt, | |||
188 | int (*func)(struct scsi_cmnd *SCpnt), | 188 | int (*func)(struct scsi_cmnd *SCpnt), |
189 | const char *caller) | 189 | const char *caller) |
190 | { | 190 | { |
191 | MPT_SCSI_HOST *hd; | ||
191 | struct scsi_device *sdev = SCpnt->device; | 192 | struct scsi_device *sdev = SCpnt->device; |
192 | struct Scsi_Host *shost = sdev->host; | 193 | struct Scsi_Host *shost = sdev->host; |
193 | struct fc_rport *rport = starget_to_rport(scsi_target(sdev)); | 194 | struct fc_rport *rport = starget_to_rport(scsi_target(sdev)); |
194 | unsigned long flags; | 195 | unsigned long flags; |
195 | int ready; | 196 | int ready; |
196 | 197 | ||
198 | hd = (MPT_SCSI_HOST *) SCpnt->device->host->hostdata; | ||
197 | spin_lock_irqsave(shost->host_lock, flags); | 199 | spin_lock_irqsave(shost->host_lock, flags); |
198 | while ((ready = fc_remote_port_chkready(rport) >> 16) == DID_IMM_RETRY) { | 200 | while ((ready = fc_remote_port_chkready(rport) >> 16) == DID_IMM_RETRY) { |
199 | spin_unlock_irqrestore(shost->host_lock, flags); | 201 | spin_unlock_irqrestore(shost->host_lock, flags); |
200 | dfcprintk ((MYIOC_s_INFO_FMT | 202 | dfcprintk (hd->ioc, printk(MYIOC_s_DEBUG_FMT |
201 | "mptfc_block_error_handler.%d: %d:%d, port status is " | 203 | "mptfc_block_error_handler.%d: %d:%d, port status is " |
202 | "DID_IMM_RETRY, deferring %s recovery.\n", | 204 | "DID_IMM_RETRY, deferring %s recovery.\n", |
203 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->name, | 205 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->name, |
@@ -209,7 +211,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt, | |||
209 | spin_unlock_irqrestore(shost->host_lock, flags); | 211 | spin_unlock_irqrestore(shost->host_lock, flags); |
210 | 212 | ||
211 | if (ready == DID_NO_CONNECT || !SCpnt->device->hostdata) { | 213 | if (ready == DID_NO_CONNECT || !SCpnt->device->hostdata) { |
212 | dfcprintk ((MYIOC_s_INFO_FMT | 214 | dfcprintk (hd->ioc, printk(MYIOC_s_DEBUG_FMT |
213 | "%s.%d: %d:%d, failing recovery, " | 215 | "%s.%d: %d:%d, failing recovery, " |
214 | "port state %d, vdev %p.\n", caller, | 216 | "port state %d, vdev %p.\n", caller, |
215 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->name, | 217 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->name, |
@@ -218,7 +220,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt, | |||
218 | SCpnt->device->hostdata)); | 220 | SCpnt->device->hostdata)); |
219 | return FAILED; | 221 | return FAILED; |
220 | } | 222 | } |
221 | dfcprintk ((MYIOC_s_INFO_FMT | 223 | dfcprintk (hd->ioc, printk(MYIOC_s_DEBUG_FMT |
222 | "%s.%d: %d:%d, executing recovery.\n", caller, | 224 | "%s.%d: %d:%d, executing recovery.\n", caller, |
223 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->name, | 225 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->name, |
224 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->sh->host_no, | 226 | ((MPT_SCSI_HOST *) shost->hostdata)->ioc->sh->host_no, |
@@ -483,7 +485,7 @@ mptfc_register_dev(MPT_ADAPTER *ioc, int channel, FCDevicePage0_t *pg0) | |||
483 | 485 | ||
484 | pn = (u64)ri->pg0.WWPN.High << 32 | (u64)ri->pg0.WWPN.Low; | 486 | pn = (u64)ri->pg0.WWPN.High << 32 | (u64)ri->pg0.WWPN.Low; |
485 | nn = (u64)ri->pg0.WWNN.High << 32 | (u64)ri->pg0.WWNN.Low; | 487 | nn = (u64)ri->pg0.WWNN.High << 32 | (u64)ri->pg0.WWNN.Low; |
486 | dfcprintk ((MYIOC_s_INFO_FMT | 488 | dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT |
487 | "mptfc_reg_dev.%d: %x, %llx / %llx, tid %d, " | 489 | "mptfc_reg_dev.%d: %x, %llx / %llx, tid %d, " |
488 | "rport tid %d, tmo %d\n", | 490 | "rport tid %d, tmo %d\n", |
489 | ioc->name, | 491 | ioc->name, |
@@ -559,6 +561,35 @@ mptfc_target_alloc(struct scsi_target *starget) | |||
559 | 561 | ||
560 | return rc; | 562 | return rc; |
561 | } | 563 | } |
564 | /* | ||
565 | * mptfc_dump_lun_info | ||
566 | * @ioc | ||
567 | * @rport | ||
568 | * @sdev | ||
569 | * | ||
570 | */ | ||
571 | static void | ||
572 | mptfc_dump_lun_info(MPT_ADAPTER *ioc, struct fc_rport *rport, struct scsi_device *sdev, | ||
573 | VirtTarget *vtarget) | ||
574 | { | ||
575 | u64 nn, pn; | ||
576 | struct mptfc_rport_info *ri; | ||
577 | |||
578 | ri = *((struct mptfc_rport_info **)rport->dd_data); | ||
579 | pn = (u64)ri->pg0.WWPN.High << 32 | (u64)ri->pg0.WWPN.Low; | ||
580 | nn = (u64)ri->pg0.WWNN.High << 32 | (u64)ri->pg0.WWNN.Low; | ||
581 | dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT | ||
582 | "mptfc_slv_alloc.%d: num_luns %d, sdev.id %d, " | ||
583 | "CurrentTargetID %d, %x %llx %llx\n", | ||
584 | ioc->name, | ||
585 | sdev->host->host_no, | ||
586 | vtarget->num_luns, | ||
587 | sdev->id, ri->pg0.CurrentTargetID, | ||
588 | ri->pg0.PortIdentifier, | ||
589 | (unsigned long long)pn, | ||
590 | (unsigned long long)nn)); | ||
591 | } | ||
592 | |||
562 | 593 | ||
563 | /* | 594 | /* |
564 | * OS entry point to allow host driver to alloc memory | 595 | * OS entry point to allow host driver to alloc memory |
@@ -606,25 +637,7 @@ mptfc_slave_alloc(struct scsi_device *sdev) | |||
606 | vtarget->num_luns++; | 637 | vtarget->num_luns++; |
607 | 638 | ||
608 | 639 | ||
609 | #ifdef DMPT_DEBUG_FC | 640 | mptfc_dump_lun_info(hd->ioc, rport, sdev, vtarget); |
610 | { | ||
611 | u64 nn, pn; | ||
612 | struct mptfc_rport_info *ri; | ||
613 | ri = *((struct mptfc_rport_info **)rport->dd_data); | ||
614 | pn = (u64)ri->pg0.WWPN.High << 32 | (u64)ri->pg0.WWPN.Low; | ||
615 | nn = (u64)ri->pg0.WWNN.High << 32 | (u64)ri->pg0.WWNN.Low; | ||
616 | dfcprintk ((MYIOC_s_INFO_FMT | ||
617 | "mptfc_slv_alloc.%d: num_luns %d, sdev.id %d, " | ||
618 | "CurrentTargetID %d, %x %llx %llx\n", | ||
619 | hd->ioc->name, | ||
620 | sdev->host->host_no, | ||
621 | vtarget->num_luns, | ||
622 | sdev->id, ri->pg0.CurrentTargetID, | ||
623 | ri->pg0.PortIdentifier, | ||
624 | (unsigned long long)pn, | ||
625 | (unsigned long long)nn)); | ||
626 | } | ||
627 | #endif | ||
628 | 641 | ||
629 | return 0; | 642 | return 0; |
630 | } | 643 | } |
@@ -653,27 +666,12 @@ mptfc_qcmd(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *)) | |||
653 | /* dd_data is null until finished adding target */ | 666 | /* dd_data is null until finished adding target */ |
654 | ri = *((struct mptfc_rport_info **)rport->dd_data); | 667 | ri = *((struct mptfc_rport_info **)rport->dd_data); |
655 | if (unlikely(!ri)) { | 668 | if (unlikely(!ri)) { |
656 | dfcprintk ((MYIOC_s_INFO_FMT | ||
657 | "mptfc_qcmd.%d: %d:%d, dd_data is null.\n", | ||
658 | ((MPT_SCSI_HOST *) SCpnt->device->host->hostdata)->ioc->name, | ||
659 | ((MPT_SCSI_HOST *) SCpnt->device->host->hostdata)->ioc->sh->host_no, | ||
660 | SCpnt->device->id,SCpnt->device->lun)); | ||
661 | SCpnt->result = DID_IMM_RETRY << 16; | 669 | SCpnt->result = DID_IMM_RETRY << 16; |
662 | done(SCpnt); | 670 | done(SCpnt); |
663 | return 0; | 671 | return 0; |
664 | } | 672 | } |
665 | 673 | ||
666 | err = mptscsih_qcmd(SCpnt,done); | 674 | return mptscsih_qcmd(SCpnt,done); |
667 | #ifdef DMPT_DEBUG_FC | ||
668 | if (unlikely(err)) { | ||
669 | dfcprintk ((MYIOC_s_INFO_FMT | ||
670 | "mptfc_qcmd.%d: %d:%d, mptscsih_qcmd returns non-zero, (%x).\n", | ||
671 | ((MPT_SCSI_HOST *) SCpnt->device->host->hostdata)->ioc->name, | ||
672 | ((MPT_SCSI_HOST *) SCpnt->device->host->hostdata)->ioc->sh->host_no, | ||
673 | SCpnt->device->id,SCpnt->device->lun,err)); | ||
674 | } | ||
675 | #endif | ||
676 | return err; | ||
677 | } | 675 | } |
678 | 676 | ||
679 | /* | 677 | /* |
@@ -1041,7 +1039,7 @@ mptfc_setup_reset(struct work_struct *work) | |||
1041 | 1039 | ||
1042 | pn = (u64)ri->pg0.WWPN.High << 32 | | 1040 | pn = (u64)ri->pg0.WWPN.High << 32 | |
1043 | (u64)ri->pg0.WWPN.Low; | 1041 | (u64)ri->pg0.WWPN.Low; |
1044 | dfcprintk ((MYIOC_s_INFO_FMT | 1042 | dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT |
1045 | "mptfc_setup_reset.%d: %llx deleted\n", | 1043 | "mptfc_setup_reset.%d: %llx deleted\n", |
1046 | ioc->name, | 1044 | ioc->name, |
1047 | ioc->sh->host_no, | 1045 | ioc->sh->host_no, |
@@ -1088,7 +1086,7 @@ mptfc_rescan_devices(struct work_struct *work) | |||
1088 | 1086 | ||
1089 | pn = (u64)ri->pg0.WWPN.High << 32 | | 1087 | pn = (u64)ri->pg0.WWPN.High << 32 | |
1090 | (u64)ri->pg0.WWPN.Low; | 1088 | (u64)ri->pg0.WWPN.Low; |
1091 | dfcprintk ((MYIOC_s_INFO_FMT | 1089 | dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT |
1092 | "mptfc_rescan.%d: %llx deleted\n", | 1090 | "mptfc_rescan.%d: %llx deleted\n", |
1093 | ioc->name, | 1091 | ioc->name, |
1094 | ioc->sh->host_no, | 1092 | ioc->sh->host_no, |
@@ -1212,7 +1210,7 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1212 | 1210 | ||
1213 | if (numSGE < sh->sg_tablesize) { | 1211 | if (numSGE < sh->sg_tablesize) { |
1214 | /* Reset this value */ | 1212 | /* Reset this value */ |
1215 | dprintk((MYIOC_s_INFO_FMT | 1213 | dprintk(ioc, printk(MYIOC_s_DEBUG_FMT |
1216 | "Resetting sg_tablesize to %d from %d\n", | 1214 | "Resetting sg_tablesize to %d from %d\n", |
1217 | ioc->name, numSGE, sh->sg_tablesize)); | 1215 | ioc->name, numSGE, sh->sg_tablesize)); |
1218 | sh->sg_tablesize = numSGE; | 1216 | sh->sg_tablesize = numSGE; |
@@ -1232,7 +1230,7 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1232 | goto out_mptfc_probe; | 1230 | goto out_mptfc_probe; |
1233 | } | 1231 | } |
1234 | 1232 | ||
1235 | dprintk((MYIOC_s_INFO_FMT "ScsiLookup @ %p\n", | 1233 | dprintk(ioc, printk(MYIOC_s_DEBUG_FMT "ScsiLookup @ %p\n", |
1236 | ioc->name, hd->ScsiLookup)); | 1234 | ioc->name, hd->ScsiLookup)); |
1237 | 1235 | ||
1238 | /* Clear the TM flags | 1236 | /* Clear the TM flags |
@@ -1264,7 +1262,7 @@ mptfc_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1264 | sh->transportt = mptfc_transport_template; | 1262 | sh->transportt = mptfc_transport_template; |
1265 | error = scsi_add_host (sh, &ioc->pcidev->dev); | 1263 | error = scsi_add_host (sh, &ioc->pcidev->dev); |
1266 | if(error) { | 1264 | if(error) { |
1267 | dprintk((KERN_ERR MYNAM | 1265 | dprintk(ioc, printk(KERN_ERR MYNAM |
1268 | "scsi_add_host failed\n")); | 1266 | "scsi_add_host failed\n")); |
1269 | goto out_mptfc_probe; | 1267 | goto out_mptfc_probe; |
1270 | } | 1268 | } |
@@ -1323,7 +1321,7 @@ mptfc_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply) | |||
1323 | unsigned long flags; | 1321 | unsigned long flags; |
1324 | int rc=1; | 1322 | int rc=1; |
1325 | 1323 | ||
1326 | devtverboseprintk((MYIOC_s_INFO_FMT "MPT event (=%02Xh) routed to SCSI host driver!\n", | 1324 | devtverboseprintk(ioc, printk(MYIOC_s_DEBUG_FMT "MPT event (=%02Xh) routed to SCSI host driver!\n", |
1327 | ioc->name, event)); | 1325 | ioc->name, event)); |
1328 | 1326 | ||
1329 | if (ioc->sh == NULL || | 1327 | if (ioc->sh == NULL || |
@@ -1357,8 +1355,8 @@ mptfc_ioc_reset(MPT_ADAPTER *ioc, int reset_phase) | |||
1357 | return rc; | 1355 | return rc; |
1358 | 1356 | ||
1359 | 1357 | ||
1360 | dtmprintk((KERN_WARNING MYNAM | 1358 | dtmprintk(ioc, printk(MYIOC_s_DEBUG_FMT |
1361 | ": IOC %s_reset routed to FC host driver!\n", | 1359 | ": IOC %s_reset routed to FC host driver!\n",ioc->name, |
1362 | reset_phase==MPT_IOC_SETUP_RESET ? "setup" : ( | 1360 | reset_phase==MPT_IOC_SETUP_RESET ? "setup" : ( |
1363 | reset_phase==MPT_IOC_PRE_RESET ? "pre" : "post"))); | 1361 | reset_phase==MPT_IOC_PRE_RESET ? "pre" : "post"))); |
1364 | 1362 | ||
@@ -1413,15 +1411,8 @@ mptfc_init(void) | |||
1413 | mptfcTaskCtx = mpt_register(mptscsih_taskmgmt_complete, MPTFC_DRIVER); | 1411 | mptfcTaskCtx = mpt_register(mptscsih_taskmgmt_complete, MPTFC_DRIVER); |
1414 | mptfcInternalCtx = mpt_register(mptscsih_scandv_complete, MPTFC_DRIVER); | 1412 | mptfcInternalCtx = mpt_register(mptscsih_scandv_complete, MPTFC_DRIVER); |
1415 | 1413 | ||
1416 | if (mpt_event_register(mptfcDoneCtx, mptfc_event_process) == 0) { | 1414 | mpt_event_register(mptfcDoneCtx, mptfc_event_process); |
1417 | devtverboseprintk((KERN_INFO MYNAM | 1415 | mpt_reset_register(mptfcDoneCtx, mptfc_ioc_reset); |
1418 | ": Registered for IOC event notifications\n")); | ||
1419 | } | ||
1420 | |||
1421 | if (mpt_reset_register(mptfcDoneCtx, mptfc_ioc_reset) == 0) { | ||
1422 | dprintk((KERN_INFO MYNAM | ||
1423 | ": Registered for IOC reset notifications\n")); | ||
1424 | } | ||
1425 | 1416 | ||
1426 | error = pci_register_driver(&mptfc_driver); | 1417 | error = pci_register_driver(&mptfc_driver); |
1427 | if (error) | 1418 | if (error) |
@@ -1486,12 +1477,7 @@ mptfc_exit(void) | |||
1486 | fc_release_transport(mptfc_transport_template); | 1477 | fc_release_transport(mptfc_transport_template); |
1487 | 1478 | ||
1488 | mpt_reset_deregister(mptfcDoneCtx); | 1479 | mpt_reset_deregister(mptfcDoneCtx); |
1489 | dprintk((KERN_INFO MYNAM | ||
1490 | ": Deregistered for IOC reset notifications\n")); | ||
1491 | |||
1492 | mpt_event_deregister(mptfcDoneCtx); | 1480 | mpt_event_deregister(mptfcDoneCtx); |
1493 | dprintk((KERN_INFO MYNAM | ||
1494 | ": Deregistered for IOC event notifications\n")); | ||
1495 | 1481 | ||
1496 | mpt_deregister(mptfcInternalCtx); | 1482 | mpt_deregister(mptfcInternalCtx); |
1497 | mpt_deregister(mptfcTaskCtx); | 1483 | mpt_deregister(mptfcTaskCtx); |