Commit ac719aba authored by Brian King's avatar Brian King Committed by James Bottomley

[SCSI] ipr: Reduce default error log size

Since the default error log size has increased on SAS adapters,
prevent ipr from logging this additional data unless requested
to do so by the user set log level in order to prevent flooding
the logs.
Signed-off-by: default avatarBrian King <brking@us.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 49dc6a18
...@@ -1249,19 +1249,23 @@ static void ipr_log_array_error(struct ipr_ioa_cfg *ioa_cfg, ...@@ -1249,19 +1249,23 @@ static void ipr_log_array_error(struct ipr_ioa_cfg *ioa_cfg,
/** /**
* ipr_log_hex_data - Log additional hex IOA error data. * ipr_log_hex_data - Log additional hex IOA error data.
* @ioa_cfg: ioa config struct
* @data: IOA error data * @data: IOA error data
* @len: data length * @len: data length
* *
* Return value: * Return value:
* none * none
**/ **/
static void ipr_log_hex_data(u32 *data, int len) static void ipr_log_hex_data(struct ipr_ioa_cfg *ioa_cfg, u32 *data, int len)
{ {
int i; int i;
if (len == 0) if (len == 0)
return; return;
if (ioa_cfg->log_level <= IPR_DEFAULT_LOG_LEVEL)
len = min_t(int, len, IPR_DEFAULT_MAX_ERROR_DUMP);
for (i = 0; i < len / 4; i += 4) { for (i = 0; i < len / 4; i += 4) {
ipr_err("%08X: %08X %08X %08X %08X\n", i*4, ipr_err("%08X: %08X %08X %08X %08X\n", i*4,
be32_to_cpu(data[i]), be32_to_cpu(data[i]),
...@@ -1290,7 +1294,7 @@ static void ipr_log_enhanced_dual_ioa_error(struct ipr_ioa_cfg *ioa_cfg, ...@@ -1290,7 +1294,7 @@ static void ipr_log_enhanced_dual_ioa_error(struct ipr_ioa_cfg *ioa_cfg,
ipr_err("%s\n", error->failure_reason); ipr_err("%s\n", error->failure_reason);
ipr_err("Remote Adapter VPD:\n"); ipr_err("Remote Adapter VPD:\n");
ipr_log_ext_vpd(&error->vpd); ipr_log_ext_vpd(&error->vpd);
ipr_log_hex_data(error->data, ipr_log_hex_data(ioa_cfg, error->data,
be32_to_cpu(hostrcb->hcam.length) - be32_to_cpu(hostrcb->hcam.length) -
(offsetof(struct ipr_hostrcb_error, u) + (offsetof(struct ipr_hostrcb_error, u) +
offsetof(struct ipr_hostrcb_type_17_error, data))); offsetof(struct ipr_hostrcb_type_17_error, data)));
...@@ -1315,7 +1319,7 @@ static void ipr_log_dual_ioa_error(struct ipr_ioa_cfg *ioa_cfg, ...@@ -1315,7 +1319,7 @@ static void ipr_log_dual_ioa_error(struct ipr_ioa_cfg *ioa_cfg,
ipr_err("%s\n", error->failure_reason); ipr_err("%s\n", error->failure_reason);
ipr_err("Remote Adapter VPD:\n"); ipr_err("Remote Adapter VPD:\n");
ipr_log_vpd(&error->vpd); ipr_log_vpd(&error->vpd);
ipr_log_hex_data(error->data, ipr_log_hex_data(ioa_cfg, error->data,
be32_to_cpu(hostrcb->hcam.length) - be32_to_cpu(hostrcb->hcam.length) -
(offsetof(struct ipr_hostrcb_error, u) + (offsetof(struct ipr_hostrcb_error, u) +
offsetof(struct ipr_hostrcb_type_07_error, data))); offsetof(struct ipr_hostrcb_type_07_error, data)));
...@@ -1531,7 +1535,7 @@ static void ipr_log_fabric_error(struct ipr_ioa_cfg *ioa_cfg, ...@@ -1531,7 +1535,7 @@ static void ipr_log_fabric_error(struct ipr_ioa_cfg *ioa_cfg,
((unsigned long)fabric + be16_to_cpu(fabric->length)); ((unsigned long)fabric + be16_to_cpu(fabric->length));
} }
ipr_log_hex_data((u32 *)fabric, add_len); ipr_log_hex_data(ioa_cfg, (u32 *)fabric, add_len);
} }
/** /**
...@@ -1545,7 +1549,7 @@ static void ipr_log_fabric_error(struct ipr_ioa_cfg *ioa_cfg, ...@@ -1545,7 +1549,7 @@ static void ipr_log_fabric_error(struct ipr_ioa_cfg *ioa_cfg,
static void ipr_log_generic_error(struct ipr_ioa_cfg *ioa_cfg, static void ipr_log_generic_error(struct ipr_ioa_cfg *ioa_cfg,
struct ipr_hostrcb *hostrcb) struct ipr_hostrcb *hostrcb)
{ {
ipr_log_hex_data(hostrcb->hcam.u.raw.data, ipr_log_hex_data(ioa_cfg, hostrcb->hcam.u.raw.data,
be32_to_cpu(hostrcb->hcam.length)); be32_to_cpu(hostrcb->hcam.length));
} }
......
...@@ -104,6 +104,7 @@ ...@@ -104,6 +104,7 @@
#define IPR_IOASC_IOA_WAS_RESET 0x10000001 #define IPR_IOASC_IOA_WAS_RESET 0x10000001
#define IPR_IOASC_PCI_ACCESS_ERROR 0x10000002 #define IPR_IOASC_PCI_ACCESS_ERROR 0x10000002
#define IPR_DEFAULT_MAX_ERROR_DUMP 984
#define IPR_NUM_LOG_HCAMS 2 #define IPR_NUM_LOG_HCAMS 2
#define IPR_NUM_CFG_CHG_HCAMS 2 #define IPR_NUM_CFG_CHG_HCAMS 2
#define IPR_NUM_HCAMS (IPR_NUM_LOG_HCAMS + IPR_NUM_CFG_CHG_HCAMS) #define IPR_NUM_HCAMS (IPR_NUM_LOG_HCAMS + IPR_NUM_CFG_CHG_HCAMS)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment