On Thu, Mar 08, 2018 at 06:43:51PM +0900, Naoki Fukaumi wrote: > Hi, > > thank you for your feedback! > > From: Jonathan Matthew <jonat...@d14n.org> > Subject: Re: mfii(4): add bio(4) support > Date: Thu, 8 Mar 2018 19:18:28 +1000 > > > On Mon, Mar 05, 2018 at 09:49:16PM +0900, Naoki Fukaumi wrote: > >> Hi tech@, > >> > >> This patch adds bio(4) support for mfii(4). > >> # with "mfii(4): use MFII_FUNCTION_PASSTHRU_IO for MFI commands" > >> > >> most parts are taken from mfi(4), plus fix for rebuilding (bioctl -R). > > > > Thanks for working on this, it'd be great to have this feature. > > > > I tried this out on a dell server with a perc H710 (SAS2208) with an SSD > > cache > > in front of the disks (dell calls this cachecade) which shows up as a > > logical > > disk but doesn't answer scsi commands. As a result, the sensor attach code > > fails because it can't find the scsi_link for the cache disk: > > > > > >> + for (i = 0; i < sc->sc_ld_cnt; i++) { > >> + link = scsi_get_link(sc->sc_scsibus, i, 0); > >> + if (link == NULL) > >> + goto bad; > >> + > > > > I think this is the only case where we'll have NULL there, so we could just > > put > > in 'cache' as the sensor description. > > I didn't know about 'cachecade'. for now, I'm not sure it is better to > expose as 'cache', or ignore it. > > is cachecade disk reported in bioctl(8)? (e.g. bioctl mfii0)
Yes, bioctl mfii0 shows it: mfii0 2 Online 198910672896 RAID0 WB 0 Online 100030242816 1:14.0 noencl <ATA MZ-5EA1000-0D3 7D3Q> 1 Online 100030242816 1:15.0 noencl <ATA MZ-5EA1000-0D3 7D3Q> If one of the cache SSDs fails, I definitely want to know about it, so I think it should be exposed through sensors too. > > > I also don't get a sensor for the battery. I haven't looked into this yet. > > Any idea why that would happen? > > could you try following (only 1st hunk, only 2nd hunk, or both) patch? > # I'm not sure this is right fix... The 2nd hunk makes the battery sensors show up here. > > --- sys/dev/pci/mfii.c > +++ sys/dev/pci/mfii.c > @@ -3628,28 +3628,15 @@ mfii_bbu(struct mfii_softc *sc) > } > > switch (bbu.battery_type) { > - case MFI_BBU_TYPE_IBBU: > - mask = MFI_BBU_STATE_BAD_IBBU; > - soh_bad = 0; > - break; > case MFI_BBU_TYPE_BBU: > mask = MFI_BBU_STATE_BAD_BBU; > soh_bad = (bbu.detail.bbu.is_SOH_good == 0); > break; > - > case MFI_BBU_TYPE_NONE: > + case MFI_BBU_TYPE_IBBU: > default: > - sc->sc_bbu[0].value = 0; > - sc->sc_bbu[0].status = SENSOR_S_CRIT; > - for (i = 1; i < MFI_BBU_SENSORS; i++) { > - sc->sc_bbu[i].value = 0; > - sc->sc_bbu[i].status = SENSOR_S_UNKNOWN; > - } > - for (i = 0; i < nitems(mfi_bbu_indicators); i++) { > - sc->sc_bbu_status[i].value = 0; > - sc->sc_bbu_status[i].status = SENSOR_S_UNKNOWN; > - } > - return (0); > + mask = MFI_BBU_STATE_BAD_IBBU; > + soh_bad = 0; > } > > status = letoh32(bbu.fw_status); > @@ -3682,7 +3669,7 @@ mfii_create_sensors(struct mfii_softc *sc) > strlcpy(sc->sc_sensordev.xname, DEVNAME(sc), > sizeof(sc->sc_sensordev.xname)); > > - if (ISSET(letoh32(sc->sc_info.mci_adapter_ops ), MFI_INFO_AOPS_BBU)) { > + if (ISSET(letoh32(sc->sc_info.mci_hw_present), MFI_INFO_HW_BBU)) { > sc->sc_bbu = mallocarray(4, sizeof(*sc->sc_bbu), > M_DEVBUF, M_WAITOK | M_ZERO); > > > -- > FUKAUMI Naoki