Page MenuHomeFreeBSD

CISS: Support >48 JBOD drives, fix SES enumeration, no panic on unplug, sysctl tunables &more verbosity...
Needs ReviewPublic

Authored by pen_lysator.liu.se on Jun 5 2020, 6:42 PM.

Details

Reviewers
kevans
mav
imp
Summary

This patch fixes the handling of many drives in JBOD (HBA) mode
The current code fails to handle more than ~48 drives per controller
depending on controller model - but for a HP H241 which supports 64
logical volumes this is true)

Also fixes the panic when removing and replugging devices while active.

And adds visible sysctl's for tunables.

Test Plan

Tested the patch with HP H241 SmartHBA cards and two HP D6020 external
SAS HBA cabinets with 70+70 12TB drives. Also tried it on an older HP
server with the really old HP P400 SmartArray controller card with 6 drives.
It would be nice to have someone else test it with many drives on a
SmartArray controller (in JBOD) mode.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 31538
Build 29141: arc lint + arc unit

Event Timeline

Removed a couple of (1 ||) (to force printing of info)

Tag in the last two committers that touched it, as well.

sys/dev/ciss/ciss.c
3093

sys/param.h provides a MAX() macro that you should use here.

sys/dev/ciss/cissvar.h
240

The name should be tabbed over, rather than spaced over, to match the lines above it.

Space fixes and remove comments and use MAX

I am not very close to ciss, only fixed couple issues there, but it looks OK to me, except the initiator_id comment and somewhat weird way to detect max target number.

sys/dev/ciss/ciss.c
3095

0 is a wrong value here, since it may affect scanning for target 0. Something like CAM_TARGET_WILDCARD could be better, unless special value introduced..

This revision is now accepted and ready to land.Jun 5 2020, 7:40 PM
pen_lysator.liu.se marked 2 inline comments as done.

More space...

This revision now requires review to proceed.Jun 5 2020, 7:45 PM
pen_lysator.liu.se marked an inline comment as done.

More fixes (sysctl, verbose param, fix for panic-when-devices removed/replugged)

This looks decent to me with the changes. I'd test it, but I have no ciss hardware

sys/dev/ciss/ciss.c
312

Stray new newline

4246

I'd just remove the panic and the ifdef, keeping just the printf.

This revision is now accepted and ready to land.Jun 5 2020, 10:27 PM
pen_lysator.liu.se marked 2 inline comments as done.

Remove stray newline and remove the panic() (and #if/#endif)

This revision now requires review to proceed.Jun 6 2020, 6:53 AM

Adds a fix to allow SES to detect stuff behind the CISS controllers and more verbosity

Regarding testing the patch - I'll try to find some more/other models of HP RAID controllers and verify the functionality with them. There should be people out there using HP controllers already on smaller machines so I can try to find some people using HP RAID cards to test it too...

Added a fix for another problem that prevents SES ("sesutil map" for example) to get information about what is connected behind CISS controllers in the latest update.

pen_lysator.liu.se retitled this revision from CISS driver: Support more than 48 JBOD drives on HP SmartArray/SmartHBA cards i JBOD mode to CISS: Support >48 JBOD drives, fix SES enumeration, no panic on unplug, sysctl tunables &more verbosity....Jun 6 2020, 2:38 PM