diff options
author | Keith M Wesolowski <wesolows@foobazco.org> | 2013-09-30 23:36:59 +0000 |
---|---|---|
committer | Keith M Wesolowski <wesolows@foobazco.org> | 2013-09-30 23:36:59 +0000 |
commit | 0c652bdabe592e9d27339f4fa59c4a86cc6398b8 (patch) | |
tree | f3e3e8d4f15a34b69b4c86242c9b92d8aa7396be | |
parent | 09f6bcf727008c2f65e4d692bf54627d4066c247 (diff) | |
parent | aed5247ff899ec457005d93dfbdb4ffd74574695 (diff) | |
download | illumos-joyent-0c652bdabe592e9d27339f4fa59c4a86cc6398b8.tar.gz |
[illumos-gate merge]
commit aed5247ff899ec457005d93dfbdb4ffd74574695
4018 mpt_sas: allow physical topology enumeration in libtopo
4019 mpt_sas: expose LED controls to libtopo
commit 1410cb930a3e26032c59c6835837a28c47366b3c
4016 disk-monitor should activate fault/fail indicators
4017 fmtopo -P flag does not appear to set properties
Conflicts:
usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c (new content)
usr/src/lib/fm/topo/modules/common/fac_prov_mptsas/fac_prov_mptsas.c (OS-2444)
usr/src/lib/fm/topo/modules/common/disk/disk_mptsas.c (OS-2444)
usr/src/lib/fm/topo/maps/Joyent,Joyent-Compute-Platform-1101/Joyent-Compute-Platform-1101-disk-hc-topology.xmlgenksh (OS-2444)
usr/src/cmd/fm/modules/common/disk-lights/disk_lights.c (lint)
usr/src/cmd/fm/modules/common/disk-lights/Makefile (lint)
5 files changed, 308 insertions, 37 deletions
diff --git a/usr/src/cmd/fm/modules/common/disk-lights/Makefile b/usr/src/cmd/fm/modules/common/disk-lights/Makefile index d7c3bdadb7..bae6e76362 100644 --- a/usr/src/cmd/fm/modules/common/disk-lights/Makefile +++ b/usr/src/cmd/fm/modules/common/disk-lights/Makefile @@ -19,5 +19,6 @@ SRCS = disk_lights.c include ../../Makefile.plugin +LINTFLAGS += -L$(ROOT)/usr/lib/fm LDLIBS += -ltopo LDFLAGS += -L$(ROOT)/usr/lib/fm -R/usr/lib/fm diff --git a/usr/src/cmd/fm/modules/common/disk-lights/disk_lights.c b/usr/src/cmd/fm/modules/common/disk-lights/disk_lights.c index 7eaa421559..636b5a96ce 100644 --- a/usr/src/cmd/fm/modules/common/disk-lights/disk_lights.c +++ b/usr/src/cmd/fm/modules/common/disk-lights/disk_lights.c @@ -259,6 +259,7 @@ dl_trigger_enum(disk_lights_t *dl) dl->dl_coalesce_interval); } +/*ARGSUSED*/ static void disklights_timeout(fmd_hdl_t *hdl, id_t id, void *data) { @@ -274,6 +275,7 @@ disklights_timeout(fmd_hdl_t *hdl, id_t id, void *data) dl->dl_timer = fmd_timer_install(hdl, NULL, NULL, dl->dl_poll_interval); } +/*ARGSUSED*/ static void disklights_topo(fmd_hdl_t *hdl, topo_hdl_t *thp) { @@ -282,6 +284,7 @@ disklights_topo(fmd_hdl_t *hdl, topo_hdl_t *thp) dl_trigger_enum(dl); } +/*ARGSUSED*/ static void disklights_recv(fmd_hdl_t *hdl, fmd_event_t *ep, nvlist_t *nvl, const char *class) diff --git a/usr/src/lib/fm/topo/maps/Joyent,Joyent-Compute-Platform-1101/Joyent-Compute-Platform-1101-disk-hc-topology.xml b/usr/src/lib/fm/topo/maps/Joyent,Joyent-Compute-Platform-1101/Joyent-Compute-Platform-1101-disk-hc-topology.xml new file mode 100644 index 0000000000..8aaba3306a --- /dev/null +++ b/usr/src/lib/fm/topo/maps/Joyent,Joyent-Compute-Platform-1101/Joyent-Compute-Platform-1101-disk-hc-topology.xml @@ -0,0 +1,246 @@ +<?xml version="1.0"?> +<!DOCTYPE topology SYSTEM "/usr/share/lib/xml/dtd/topology.dtd.1"> +<topology name='disk' scheme='hc'> + <range name='bay' min='0' max='15'> + <facility name='fail' type='indicator' provider='fac_prov_mptsas' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='0' /> + <propmethod name='mptsas_led_mode' version='0' propname='mode' + proptype='uint32' mutable='1'> + </propmethod> + </propgroup> + </facility> + <facility name='ident' type='indicator' provider='fac_prov_mptsas' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='1' /> + <propmethod name='mptsas_led_mode' version='0' propname='mode' + proptype='uint32' mutable='1'> + </propmethod> + </propgroup> + </facility> + <facility name='ok2rm' type='indicator' provider='fac_prov_mptsas' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='2' /> + <propmethod name='mptsas_led_mode' version='0' propname='mode' + proptype='uint32' mutable='1'> + </propmethod> + </propgroup> + </facility> + <node instance='0'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 0' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='0' /> + </propgroup> + </node> + <node instance='1'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 1' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='1' /> + </propgroup> + </node> + <node instance='2'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 2' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='2' /> + </propgroup> + </node> + <node instance='3'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 3' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='3' /> + </propgroup> + </node> + <node instance='4'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 4' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='4' /> + </propgroup> + </node> + <node instance='5'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 5' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='5' /> + </propgroup> + </node> + <node instance='6'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 6' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='6' /> + </propgroup> + </node> + <node instance='7'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 7' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c02@1/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='7' /> + </propgroup> + </node> + <node instance='8'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 8' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='0' /> + </propgroup> + </node> + <node instance='9'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 9' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='1' /> + </propgroup> + </node> + <node instance='10'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 10' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='2' /> + </propgroup> + </node> + <node instance='11'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 11' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='3' /> + </propgroup> + </node> + <node instance='12'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 12' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='4' /> + </propgroup> + </node> + <node instance='13'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 13' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='5' /> + </propgroup> + </node> + <node instance='14'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 14' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='6' /> + </propgroup> + </node> + <node instance='15'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='Front Disk 15' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' value='/devices/pci@0,0/pci8086,3c06@2,2/pci15d9,691@0:devctl' /> + <propval name='enclosure' type='uint32' value='1' /> + <propval name='slot' type='uint32' value='7' /> + </propgroup> + </node> + <dependents grouping='children'> + <range name='disk' min='0' max='0'> + <enum-method name='disk' version='1' /> + </range> + </dependents> + </range> +</topology> diff --git a/usr/src/pkg/manifests/service-fault-management.mf b/usr/src/pkg/manifests/service-fault-management.mf index c30ff1be3d..c2dd3890ee 100644 --- a/usr/src/pkg/manifests/service-fault-management.mf +++ b/usr/src/pkg/manifests/service-fault-management.mf @@ -424,6 +424,8 @@ file path=usr/lib/fm/fmd/ipmitopo mode=0555 # file path=usr/lib/fm/fmd/plugins/cpumem-retire.conf file path=usr/lib/fm/fmd/plugins/cpumem-retire.so mode=0555 +file path=usr/lib/fm/fmd/plugins/disk-lights.conf +file path=usr/lib/fm/fmd/plugins/disk-lights.so mode=0555 file path=usr/lib/fm/fmd/plugins/disk-monitor.conf file path=usr/lib/fm/fmd/plugins/disk-monitor.so mode=0555 file path=usr/lib/fm/fmd/plugins/disk-transport.conf @@ -565,6 +567,7 @@ file path=usr/lib/fm/llib-ltopo.ln variant.opensolaris.zone=__NODEFAULT file path=usr/lib/fm/topo/maps/xfp-hc-topology.xml mode=0444 file path=usr/lib/fm/topo/plugins/disk.so mode=0555 file path=usr/lib/fm/topo/plugins/fac_prov_ipmi.so mode=0555 +file path=usr/lib/fm/topo/plugins/fac_prov_mptsas.so mode=0555 file path=usr/lib/fm/topo/plugins/ipmi.so mode=0555 file path=usr/lib/fm/topo/plugins/ses.so mode=0555 file path=usr/lib/fm/topo/plugins/xfp.so mode=0555 @@ -726,6 +729,9 @@ $(i386_ONLY)file path=usr/platform/i86pc/lib/fm/eft/gcpu.eft mode=0444 $(i386_ONLY)file path=usr/platform/i86pc/lib/fm/eft/gcpu_amd.eft mode=0444 $(i386_ONLY)file path=usr/platform/i86pc/lib/fm/eft/intel.eft mode=0444 $(i386_ONLY)file \ + path=usr/platform/i86pc/lib/fm/topo/maps/Joyent-Compute-Platform-1101-disk-hc-topology.xml \ + mode=0444 +$(i386_ONLY)file \ path=usr/platform/i86pc/lib/fm/topo/maps/Netra-X4200-M2-disk-hc-topology.xml \ mode=0444 $(i386_ONLY)file \ diff --git a/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c b/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c index 632fa5d85a..8103ae938a 100644 --- a/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c +++ b/usr/src/uts/common/io/scsi/adapters/mpt_sas/mptsas.c @@ -6056,10 +6056,7 @@ mptsas_handle_topo_change(mptsas_topo_change_list_t *topo_node, mutex_enter(&mpt->m_mutex); ptgt->m_led_status = 0; - if (mptsas_flush_led_status(mpt, ptgt) != DDI_SUCCESS) { - NDBG14(("mptsas: clear LED for tgt %x failed", - ptgt->m_slot_num)); - } + (void) mptsas_flush_led_status(mpt, ptgt); if (rval == DDI_SUCCESS) { mptsas_tgt_free(&mpt->m_active->m_tgttbl, ptgt->m_sas_wwn, ptgt->m_phymask); @@ -11335,8 +11332,8 @@ led_control(mptsas_t *mpt, intptr_t data, int mode) static int get_disk_info(mptsas_t *mpt, intptr_t data, int mode) { - int i = 0; - int count = 0; + uint16_t i = 0; + uint16_t count = 0; int ret = 0; mptsas_target_t *ptgt; mptsas_disk_info_t *di; @@ -11441,7 +11438,6 @@ mptsas_ioctl(dev_t dev, int cmd, intptr_t data, int mode, cred_t *credp, dev_info_t *dip = NULL; mptsas_phymask_t phymask = 0; struct devctl_iocdata *dcp = NULL; - uint32_t slotstatus = 0; char *addr = NULL; mptsas_target_t *ptgt = NULL; @@ -11519,10 +11515,7 @@ mptsas_ioctl(dev_t dev, int cmd, intptr_t data, int mode, cred_t *credp, ptgt->m_led_status &= ~(1 << (MPTSAS_LEDCTL_LED_OK2RM - 1)); } - if (mptsas_flush_led_status(mpt, ptgt) != DDI_SUCCESS) { - NDBG14(("mptsas_ioctl: set LED for tgt %s " - "failed %x", addr, slotstatus)); - } + (void) mptsas_flush_led_status(mpt, ptgt); mutex_exit(&mpt->m_mutex); ndi_dc_freehdl(dcp); } @@ -14246,10 +14239,7 @@ mptsas_create_virt_lun(dev_info_t *pdip, struct scsi_inquiry *inq, char *guid, if (mdi_rtn == MDI_SUCCESS) { mutex_enter(&mpt->m_mutex); ptgt->m_led_status = 0; - if (mptsas_flush_led_status(mpt, ptgt) != DDI_SUCCESS) { - NDBG14(("mptsas: clear LED for slot %x " - "failed", ptgt->m_slot_num)); - } + (void) mptsas_flush_led_status(mpt, ptgt); mutex_exit(&mpt->m_mutex); } if (mdi_rtn == MDI_NOT_SUPPORTED) { @@ -14608,10 +14598,7 @@ phys_create_done: if (ndi_rtn == NDI_SUCCESS) { mutex_enter(&mpt->m_mutex); ptgt->m_led_status = 0; - if (mptsas_flush_led_status(mpt, ptgt) != DDI_SUCCESS) { - NDBG14(("mptsas: clear LED for tgt %x " - "failed", ptgt->m_slot_num)); - } + (void) mptsas_flush_led_status(mpt, ptgt); mutex_exit(&mpt->m_mutex); } @@ -15529,7 +15516,8 @@ mptsas_flush_led_status(mptsas_t *mpt, mptsas_target_t *ptgt) /* * send sep request, use enclosure/slot addressing */ -static int mptsas_send_sep(mptsas_t *mpt, mptsas_target_t *ptgt, +static int +mptsas_send_sep(mptsas_t *mpt, mptsas_target_t *ptgt, uint32_t *status, uint8_t act) { Mpi2SepRequest_t req; @@ -15538,15 +15526,27 @@ static int mptsas_send_sep(mptsas_t *mpt, mptsas_target_t *ptgt, ASSERT(mutex_owned(&mpt->m_mutex)); + /* + * We only support SEP control of directly-attached targets, in which + * case the "SEP" we're talking to is a virtual one contained within + * the HBA itself. This is necessary because DA targets typically have + * no other mechanism for LED control. Targets for which a separate + * enclosure service processor exists should be controlled via ses(7d) + * or sgen(7d). Furthermore, since such requests can time out, they + * should be made in user context rather than in response to + * asynchronous fabric changes. + * + * In addition, we do not support this operation for RAID volumes, + * since there is no slot associated with them. + */ + if (!(ptgt->m_deviceinfo & DEVINFO_DIRECT_ATTACHED) || + ptgt->m_phymask == 0) { + return (ENOTTY); + } + bzero(&req, sizeof (req)); bzero(&rep, sizeof (rep)); - /* Do nothing for RAID volumes */ - if (ptgt->m_phymask == 0) { - NDBG14(("mptsas_send_sep: Skip RAID volumes")); - return (DDI_FAILURE); - } - req.Function = MPI2_FUNCTION_SCSI_ENCLOSURE_PROCESSOR; req.Action = act; req.Flags = MPI2_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS; @@ -15560,26 +15560,41 @@ static int mptsas_send_sep(mptsas_t *mpt, mptsas_target_t *ptgt, if (ret != 0) { mptsas_log(mpt, CE_NOTE, "mptsas_send_sep: passthru SEP " "Processor Request message error %d", ret); - return (DDI_FAILURE); + return (ret); } /* do passthrough success, check the ioc status */ if (LE_16(rep.IOCStatus) != MPI2_IOCSTATUS_SUCCESS) { - if ((LE_16(rep.IOCStatus) & MPI2_IOCSTATUS_MASK) == - MPI2_IOCSTATUS_INVALID_FIELD) { - mptsas_log(mpt, CE_NOTE, "send sep act %x: Not " - "supported action, loginfo %x", act, - LE_32(rep.IOCLogInfo)); - return (DDI_FAILURE); - } mptsas_log(mpt, CE_NOTE, "send_sep act %x: ioc " - "status:%x", act, LE_16(rep.IOCStatus)); - return (DDI_FAILURE); + "status:%x loginfo %x", act, LE_16(rep.IOCStatus), + LE_32(rep.IOCLogInfo)); + switch (LE_16(rep.IOCStatus) & MPI2_IOCSTATUS_MASK) { + case MPI2_IOCSTATUS_INVALID_FUNCTION: + case MPI2_IOCSTATUS_INVALID_VPID: + case MPI2_IOCSTATUS_INVALID_FIELD: + case MPI2_IOCSTATUS_INVALID_STATE: + case MPI2_IOCSTATUS_OP_STATE_NOT_SUPPORTED: + case MPI2_IOCSTATUS_CONFIG_INVALID_ACTION: + case MPI2_IOCSTATUS_CONFIG_INVALID_TYPE: + case MPI2_IOCSTATUS_CONFIG_INVALID_PAGE: + case MPI2_IOCSTATUS_CONFIG_INVALID_DATA: + case MPI2_IOCSTATUS_CONFIG_NO_DEFAULTS: + return (EINVAL); + case MPI2_IOCSTATUS_BUSY: + return (EBUSY); + case MPI2_IOCSTATUS_INSUFFICIENT_RESOURCES: + return (EAGAIN); + case MPI2_IOCSTATUS_INVALID_SGL: + case MPI2_IOCSTATUS_INTERNAL_ERROR: + case MPI2_IOCSTATUS_CONFIG_CANT_COMMIT: + default: + return (EIO); + } } if (act != MPI2_SEP_REQ_ACTION_WRITE_STATUS) { *status = LE_32(rep.SlotStatus); } - return (DDI_SUCCESS); + return (0); } int |