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

Reply via email to