[SCSI] fusion: add verbose messages for RAID actions
A customer request to send raid asyn actions from firmware to the event syslog. This shows when raid volumes go degraded, or complete resync, or volumes created/deleted, etc. Signed-off-by: Eric Moore <Eric.Moore@lsil.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
928496ac31
commit
ece50914d5
|
@ -4389,6 +4389,138 @@ mptbase_sas_persist_operation(MPT_ADAPTER *ioc, u8 persist_opcode)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
|
||||
static void
|
||||
mptbase_raid_process_event_data(MPT_ADAPTER *ioc,
|
||||
MpiEventDataRaid_t * pRaidEventData)
|
||||
{
|
||||
int volume;
|
||||
int reason;
|
||||
int disk;
|
||||
int status;
|
||||
int flags;
|
||||
int state;
|
||||
|
||||
volume = pRaidEventData->VolumeID;
|
||||
reason = pRaidEventData->ReasonCode;
|
||||
disk = pRaidEventData->PhysDiskNum;
|
||||
status = le32_to_cpu(pRaidEventData->SettingsStatus);
|
||||
flags = (status >> 0) & 0xff;
|
||||
state = (status >> 8) & 0xff;
|
||||
|
||||
if (reason == MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((reason >= MPI_EVENT_RAID_RC_PHYSDISK_CREATED &&
|
||||
reason <= MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED) ||
|
||||
(reason == MPI_EVENT_RAID_RC_SMART_DATA)) {
|
||||
printk(MYIOC_s_INFO_FMT "RAID STATUS CHANGE for PhysDisk %d\n",
|
||||
ioc->name, disk);
|
||||
} else {
|
||||
printk(MYIOC_s_INFO_FMT "RAID STATUS CHANGE for VolumeID %d\n",
|
||||
ioc->name, volume);
|
||||
}
|
||||
|
||||
switch(reason) {
|
||||
case MPI_EVENT_RAID_RC_VOLUME_CREATED:
|
||||
printk(MYIOC_s_INFO_FMT " volume has been created\n",
|
||||
ioc->name);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_VOLUME_DELETED:
|
||||
|
||||
printk(MYIOC_s_INFO_FMT " volume has been deleted\n",
|
||||
ioc->name);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_VOLUME_SETTINGS_CHANGED:
|
||||
printk(MYIOC_s_INFO_FMT " volume settings have been changed\n",
|
||||
ioc->name);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_VOLUME_STATUS_CHANGED:
|
||||
printk(MYIOC_s_INFO_FMT " volume is now %s%s%s%s\n",
|
||||
ioc->name,
|
||||
state == MPI_RAIDVOL0_STATUS_STATE_OPTIMAL
|
||||
? "optimal"
|
||||
: state == MPI_RAIDVOL0_STATUS_STATE_DEGRADED
|
||||
? "degraded"
|
||||
: state == MPI_RAIDVOL0_STATUS_STATE_FAILED
|
||||
? "failed"
|
||||
: "state unknown",
|
||||
flags & MPI_RAIDVOL0_STATUS_FLAG_ENABLED
|
||||
? ", enabled" : "",
|
||||
flags & MPI_RAIDVOL0_STATUS_FLAG_QUIESCED
|
||||
? ", quiesced" : "",
|
||||
flags & MPI_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS
|
||||
? ", resync in progress" : "" );
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_VOLUME_PHYSDISK_CHANGED:
|
||||
printk(MYIOC_s_INFO_FMT " volume membership of PhysDisk %d has changed\n",
|
||||
ioc->name, disk);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_PHYSDISK_CREATED:
|
||||
printk(MYIOC_s_INFO_FMT " PhysDisk has been created\n",
|
||||
ioc->name);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_PHYSDISK_DELETED:
|
||||
printk(MYIOC_s_INFO_FMT " PhysDisk has been deleted\n",
|
||||
ioc->name);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_PHYSDISK_SETTINGS_CHANGED:
|
||||
printk(MYIOC_s_INFO_FMT " PhysDisk settings have been changed\n",
|
||||
ioc->name);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_PHYSDISK_STATUS_CHANGED:
|
||||
printk(MYIOC_s_INFO_FMT " PhysDisk is now %s%s%s\n",
|
||||
ioc->name,
|
||||
state == MPI_PHYSDISK0_STATUS_ONLINE
|
||||
? "online"
|
||||
: state == MPI_PHYSDISK0_STATUS_MISSING
|
||||
? "missing"
|
||||
: state == MPI_PHYSDISK0_STATUS_NOT_COMPATIBLE
|
||||
? "not compatible"
|
||||
: state == MPI_PHYSDISK0_STATUS_FAILED
|
||||
? "failed"
|
||||
: state == MPI_PHYSDISK0_STATUS_INITIALIZING
|
||||
? "initializing"
|
||||
: state == MPI_PHYSDISK0_STATUS_OFFLINE_REQUESTED
|
||||
? "offline requested"
|
||||
: state == MPI_PHYSDISK0_STATUS_FAILED_REQUESTED
|
||||
? "failed requested"
|
||||
: state == MPI_PHYSDISK0_STATUS_OTHER_OFFLINE
|
||||
? "offline"
|
||||
: "state unknown",
|
||||
flags & MPI_PHYSDISK0_STATUS_FLAG_OUT_OF_SYNC
|
||||
? ", out of sync" : "",
|
||||
flags & MPI_PHYSDISK0_STATUS_FLAG_QUIESCED
|
||||
? ", quiesced" : "" );
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_DOMAIN_VAL_NEEDED:
|
||||
printk(MYIOC_s_INFO_FMT " Domain Validation needed for PhysDisk %d\n",
|
||||
ioc->name, disk);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_SMART_DATA:
|
||||
printk(MYIOC_s_INFO_FMT " SMART data received, ASC/ASCQ = %02xh/%02xh\n",
|
||||
ioc->name, pRaidEventData->ASC, pRaidEventData->ASCQ);
|
||||
break;
|
||||
|
||||
case MPI_EVENT_RAID_RC_REPLACE_ACTION_STARTED:
|
||||
printk(MYIOC_s_INFO_FMT " replacement of PhysDisk %d has started\n",
|
||||
ioc->name, disk);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
|
||||
/*
|
||||
* GetIoUnitPage2 - Retrieve BIOS version and boot order information.
|
||||
|
@ -5978,6 +6110,10 @@ ProcessEventNotification(MPT_ADAPTER *ioc, EventNotificationReply_t *pEventReply
|
|||
}
|
||||
}
|
||||
break;
|
||||
case MPI_EVENT_INTEGRATED_RAID:
|
||||
mptbase_raid_process_event_data(ioc,
|
||||
(MpiEventDataRaid_t *)pEventReply->Data);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue