Skip to content

docs: document the storcli2 adapter and blueprint the remaining components#62

Open
ezekiel-alexrod wants to merge 2 commits into
mainfrom
documentation/storcli2-adapter-docs
Open

docs: document the storcli2 adapter and blueprint the remaining components#62
ezekiel-alexrod wants to merge 2 commits into
mainfrom
documentation/storcli2-adapter-docs

Conversation

@ezekiel-alexrod

Copy link
Copy Markdown
Contributor

What

Documents the storcli2/perccli2 adapter in DESIGN.md and README.md.

The PR is split in two commits on purpose — review them independently:

  1. docs: document the storcli2 adapter… describes what is merged today (read path, envelope/decoder, command runners).
  2. docs: blueprint the remaining storcli2 components… anticipates the upcoming PRs (write path, blinker, composition) with the verified command grammar, so whoever implements them does not have to re-derive it. Drop or defer this commit if you prefer the docs to strictly track reality.

Commit 1 — current state

  • DESIGN.md: new MegaRAID 96xx / PERC 12 (storcli2, perccli2) adapter section: decomposed component-per-port layout (both binaries served by the same components through an injected commandrunner.CommandRunner), the shared JSON envelope and its unreliable-exit-code contract, the two possible nonexistent-object behaviors (success with absent section vs failure payload — both handled), the JBOD model (capability from a usable JBOD Advanced Software Option, enabled from the primary auto-configure behavior, per-drive JBOD state orthogonal to drive status), drive state-family matching with Failed/Offline/Missing status precedence, and the operations storcli2 dropped (RAID-level migration / drive removal, IO cache policy). All facts verified against the StorCLI2 User Guide and a live MegaRAID 9660-16i. The existing MegaRAID / PERC section is scoped to the storcli/perccli generations it actually drives (up to 94xx/95xx).
  • README.md: the features mention the SAS4 generation, and the project structure gains the implementation/storcli2/ envelope package.

Commit 2 — blueprint for the write path

  • DESIGN.md: a table mapping every remaining port operation to its verified storcli2 command — CreateLV (bare cache tokens, no type=/wrcache=), DeleteLV, AddPDsToLV via /cx/vx expand drives= (documented + in the binary help, not yet exercised on hardware), DeletePDsFromLV not supported (the official storcli→storcli2 map drops start migrate), the two-command cache setter and its CacheOptions.Validate() round-trip gotcha, set jbod / set uconf, and start/stop locate. Plus a note flagging the pre-staged write-path fixtures captured with the storcli grammar (plain-text syntax errors) that must be regenerated via the collect script.
  • README.md: announces the upcoming raidcontroller.StorCLI2 composition next to the existing hardware adapter constructors.

Documentation-only change — no code touched.

Add the MegaRAID 96xx / PERC 12 (storcli2, perccli2) adapter to the
adapters section: decomposed component-per-port layout shared by both
binaries through an injected command runner, the shared JSON envelope and
its unreliable-exit-code contract, the nonexistent-object behaviors, the
JBOD model (Advanced Software Option capability, auto-configure behavior,
per-drive state orthogonal to status), state-family matching, and the
operations storcli2 dropped (RAID-level migration / drive removal, IO
policy). Scope the existing MegaRAID / PERC section to the storcli and
perccli generations it actually drives.

In the README, mention the SAS4 generation in the features and add the
storcli2 envelope package to the project structure.
Map every not-yet-implemented port operation to its verified storcli2
command, so the write path (logical volume manager, cache and JBOD
setters, blinker) and the top-level composition can be implemented
without re-deriving the grammar: creation with bare cache tokens,
delete, expand-based drive addition (no drive removal -- the official
command map drops start migrate), the two-command cache setter and its
CacheOptions.Validate() round-trip gotcha, set jbod / set uconf, and
locate. Also flag the pre-staged write-path fixtures that were captured
with the storcli grammar and must be regenerated.

In the README, announce the upcoming raidcontroller.StorCLI2 composition
next to the existing hardware adapter constructors.

Kept separate from the previous commit on purpose: that one documents
what is merged today, this one anticipates the upcoming PRs.
@ezekiel-alexrod ezekiel-alexrod requested a review from a team as a code owner June 12, 2026 15:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant