aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mpt2sas/mpt2sas_ctl.c
diff options
context:
space:
mode:
authorKashyap, Desai <kashyap.desai@lsi.com>2010-06-17 04:15:17 -0400
committerJames Bottomley <James.Bottomley@suse.de>2010-07-27 13:02:17 -0400
commit7fbae67a3faa90abcbe949f1494769c84e51e189 (patch)
treea840770a07918c2af5d7020d7b2614c1a65f70be /drivers/scsi/mpt2sas/mpt2sas_ctl.c
parenteabb08ad2d3b0257cd2c9aed4f106fb39d14604a (diff)
[SCSI] mpt2sas: Tie a log info message to a specific PHY.
Add support to display additional debug info for SCSI_IO and RAID_SCSI_IO_PASSTHROUGH sent from the normal entry queued entry point, as well as internal generated commands, and IOCTLS. The additional debug info included the phy number, as well as the sas address, enclosure logical id, and slot number. This debug info has to be enabled thru the logging_level command line option, by default this will not be displayed. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_ctl.c')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_ctl.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
index 55fbd5b69b8..ce63a4a6670 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
@@ -80,6 +80,32 @@ enum block_state {
80 BLOCKING, 80 BLOCKING,
81}; 81};
82 82
83/**
84 * _ctl_sas_device_find_by_handle - sas device search
85 * @ioc: per adapter object
86 * @handle: sas device handle (assigned by firmware)
87 * Context: Calling function should acquire ioc->sas_device_lock
88 *
89 * This searches for sas_device based on sas_address, then return sas_device
90 * object.
91 */
92static struct _sas_device *
93_ctl_sas_device_find_by_handle(struct MPT2SAS_ADAPTER *ioc, u16 handle)
94{
95 struct _sas_device *sas_device, *r;
96
97 r = NULL;
98 list_for_each_entry(sas_device, &ioc->sas_device_list, list) {
99 if (sas_device->handle != handle)
100 continue;
101 r = sas_device;
102 goto out;
103 }
104
105 out:
106 return r;
107}
108
83#ifdef CONFIG_SCSI_MPT2SAS_LOGGING 109#ifdef CONFIG_SCSI_MPT2SAS_LOGGING
84/** 110/**
85 * _ctl_display_some_debug - debug routine 111 * _ctl_display_some_debug - debug routine
@@ -205,6 +231,22 @@ _ctl_display_some_debug(struct MPT2SAS_ADAPTER *ioc, u16 smid,
205 MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH) { 231 MPI2_FUNCTION_RAID_SCSI_IO_PASSTHROUGH) {
206 Mpi2SCSIIOReply_t *scsi_reply = 232 Mpi2SCSIIOReply_t *scsi_reply =
207 (Mpi2SCSIIOReply_t *)mpi_reply; 233 (Mpi2SCSIIOReply_t *)mpi_reply;
234 struct _sas_device *sas_device = NULL;
235 unsigned long flags;
236
237 spin_lock_irqsave(&ioc->sas_device_lock, flags);
238 sas_device = _ctl_sas_device_find_by_handle(ioc,
239 le16_to_cpu(scsi_reply->DevHandle));
240 if (sas_device) {
241 printk(MPT2SAS_WARN_FMT "\tsas_address(0x%016llx), "
242 "phy(%d)\n", ioc->name, (unsigned long long)
243 sas_device->sas_address, sas_device->phy);
244 printk(MPT2SAS_WARN_FMT
245 "\tenclosure_logical_id(0x%016llx), slot(%d)\n",
246 ioc->name, sas_device->enclosure_logical_id,
247 sas_device->slot);
248 }
249 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
208 if (scsi_reply->SCSIState || scsi_reply->SCSIStatus) 250 if (scsi_reply->SCSIState || scsi_reply->SCSIStatus)
209 printk(MPT2SAS_INFO_FMT 251 printk(MPT2SAS_INFO_FMT
210 "\tscsi_state(0x%02x), scsi_status" 252 "\tscsi_state(0x%02x), scsi_status"