[SCSI] mpt2sas: Added sysfs counter for ioc reset
Added a new sysfs shost attribute called ioc_reset_count. This will keep count of host resets (both diagnostic and message unit). Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
b8d7d7bb37
commit
d32a8c15e1
@ -3402,6 +3402,7 @@ _base_make_ioc_ready(struct MPT2SAS_ADAPTER *ioc, int sleep_flag,
|
|||||||
enum reset_type type)
|
enum reset_type type)
|
||||||
{
|
{
|
||||||
u32 ioc_state;
|
u32 ioc_state;
|
||||||
|
int rc;
|
||||||
|
|
||||||
dinitprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s\n", ioc->name,
|
dinitprintk(ioc, printk(MPT2SAS_DEBUG_FMT "%s\n", ioc->name,
|
||||||
__func__));
|
__func__));
|
||||||
@ -3430,11 +3431,15 @@ _base_make_ioc_ready(struct MPT2SAS_ADAPTER *ioc, int sleep_flag,
|
|||||||
|
|
||||||
if ((ioc_state & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_OPERATIONAL)
|
if ((ioc_state & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_OPERATIONAL)
|
||||||
if (!(_base_send_ioc_reset(ioc,
|
if (!(_base_send_ioc_reset(ioc,
|
||||||
MPI2_FUNCTION_IOC_MESSAGE_UNIT_RESET, 15, CAN_SLEEP)))
|
MPI2_FUNCTION_IOC_MESSAGE_UNIT_RESET, 15, CAN_SLEEP))) {
|
||||||
|
ioc->ioc_reset_count++;
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
issue_diag_reset:
|
issue_diag_reset:
|
||||||
return _base_diag_reset(ioc, CAN_SLEEP);
|
rc = _base_diag_reset(ioc, CAN_SLEEP);
|
||||||
|
ioc->ioc_reset_count++;
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -615,6 +615,7 @@ struct MPT2SAS_ADAPTER {
|
|||||||
u16 msix_vector_count;
|
u16 msix_vector_count;
|
||||||
u32 *msix_table;
|
u32 *msix_table;
|
||||||
u32 *msix_table_backup;
|
u32 *msix_table_backup;
|
||||||
|
u32 ioc_reset_count;
|
||||||
|
|
||||||
/* internal commands, callback index */
|
/* internal commands, callback index */
|
||||||
u8 scsi_io_cb_idx;
|
u8 scsi_io_cb_idx;
|
||||||
|
@ -2581,6 +2581,29 @@ _ctl_fwfault_debug_store(struct device *cdev,
|
|||||||
static DEVICE_ATTR(fwfault_debug, S_IRUGO | S_IWUSR,
|
static DEVICE_ATTR(fwfault_debug, S_IRUGO | S_IWUSR,
|
||||||
_ctl_fwfault_debug_show, _ctl_fwfault_debug_store);
|
_ctl_fwfault_debug_show, _ctl_fwfault_debug_store);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* _ctl_ioc_reset_count_show - ioc reset count
|
||||||
|
* @cdev - pointer to embedded class device
|
||||||
|
* @buf - the buffer returned
|
||||||
|
*
|
||||||
|
* This is firmware queue depth limit
|
||||||
|
*
|
||||||
|
* A sysfs 'read-only' shost attribute.
|
||||||
|
*/
|
||||||
|
static ssize_t
|
||||||
|
_ctl_ioc_reset_count_show(struct device *cdev, struct device_attribute *attr,
|
||||||
|
char *buf)
|
||||||
|
{
|
||||||
|
struct Scsi_Host *shost = class_to_shost(cdev);
|
||||||
|
struct MPT2SAS_ADAPTER *ioc = shost_priv(shost);
|
||||||
|
|
||||||
|
return snprintf(buf, PAGE_SIZE, "%08d\n", ioc->ioc_reset_count);
|
||||||
|
}
|
||||||
|
static DEVICE_ATTR(ioc_reset_count, S_IRUGO,
|
||||||
|
_ctl_ioc_reset_count_show, NULL);
|
||||||
|
|
||||||
|
|
||||||
struct device_attribute *mpt2sas_host_attrs[] = {
|
struct device_attribute *mpt2sas_host_attrs[] = {
|
||||||
&dev_attr_version_fw,
|
&dev_attr_version_fw,
|
||||||
&dev_attr_version_bios,
|
&dev_attr_version_bios,
|
||||||
@ -2597,6 +2620,7 @@ struct device_attribute *mpt2sas_host_attrs[] = {
|
|||||||
&dev_attr_fwfault_debug,
|
&dev_attr_fwfault_debug,
|
||||||
&dev_attr_fw_queue_depth,
|
&dev_attr_fw_queue_depth,
|
||||||
&dev_attr_host_sas_address,
|
&dev_attr_host_sas_address,
|
||||||
|
&dev_attr_ioc_reset_count,
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user