Repository navigation
scsi: one configuration and one monitor command for every controller - #313
Merged
Merged
Conversation
The O2 read its disks from its own `o2.disks` list and ignored the `[scsi.N]` tables, so changer lists, scratch volumes, CHD images, CI overlays and the --scsi1/--cdrom4 options never reached it, and the monitor's `scsi` command did not exist there: it was implemented inside the WD33C93A. Configuration. Both machines now attach their devices from `[scsi.N]`. `controller` names the bus on the O2 as it does on the Indigo2 (0 internal, 1 external); the validator accepts controller 1 on both and refuses a DaynaPort on the O2, whose Ethernet is built in. The key is a slot: N 1-7 is id N on controller 0, N = 16 + id is that id on controller 1, so `[scsi.1]` and `[scsi.17]` put a disk at id 1 on each controller; `controller = 1` on a low key still works, a slot key contradicted by `controller`, two tables naming one target, id 0 and controller 2 are refused. Snapshot manifests record disks by slot. `o2.disks` is deprecated: `load_toml` folds it into `[scsi.N]` and says so. The changer-list, CI-overlay-path and scratch-volume logic the Indy loop had inline is now on ScsiDeviceConfig and shared; the Indy loop also honours `kind = "cdrom"` without `cdrom = true`. An O2 image that will not open ends the run as on the Indy (an embedder boots without it). Monitor. `src/scsi_monitor.rs` implements `scsi status`, `scsi dayna`, the changer subcommands, the whole of `cow` and the DiscChanger operations once, over a controller's target table lent through its `ScsiTargets` trait. The WD33C93A keeps `regs`, `wdt`, `defer` and `debug`; the Adaptec 7880 keeps `regs` (its interrupt status, queues and totals). DiscChanger has one blanket impl over ScsiTargets. On the O2, controller 0 answers to `scsi`/`scsi0`/`cow` and controller 1 to `scsi1`/`cow1`; both controllers are registered with the monitor. `scsi status` lists disks as well as CD-ROMs. The O2 also gains `scratch_path` and `disc_changer`, so iris-ci's scratch and cdrom commands and the window's disc change work there. Docs: HELP.md, FEATURES.md, debug.md, HACKING.md, docs/o2-ip32.md, docs/indigo2-ip22.md, iris.toml, CHANGELOG.md. Tests: slot placement and its refusals, the O2 controller rule, the `o2.disks` fold. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The O2 read its disks from its own
o2.diskslist and ignored the[scsi.N]tables, so changer lists, scratch volumes, CHD images, CI overlays and the --scsi1/--cdrom4 options never reached it, and the monitor'sscsicommand did not exist there: it was implemented inside the WD33C93A.Configuration. Both machines now attach their devices from
[scsi.N].controllernames the bus on the O2 as it does on the Indigo2 (0 internal, 1 external); the validator accepts controller 1 on both and refuses a DaynaPort on the O2, whose Ethernet is built in. The key is a slot: N 1-7 is id N on controller 0, N = 16 + id is that id on controller 1, so[scsi.1]and[scsi.17]put a disk at id 1 on each controller;controller = 1on a low key still works, a slot key contradicted bycontroller, two tables naming one target, id 0 and controller 2 are refused. Snapshot manifests record disks by slot.o2.disksis deprecated:load_tomlfolds it into[scsi.N]and says so. The changer-list, CI-overlay-path and scratch-volume logic the Indy loop had inline is now on ScsiDeviceConfig and shared; the Indy loop also honourskind = "cdrom"withoutcdrom = true. An O2 image that will not open ends the run as on the Indy (an embedder boots without it).Monitor.
src/scsi_monitor.rsimplementsscsi status,scsi dayna, the changer subcommands, the whole ofcowand the DiscChanger operations once, over a controller's target table lent through itsScsiTargetstrait. The WD33C93A keepsregs,wdt,deferanddebug; the Adaptec 7880 keepsregs(its interrupt status, queues and totals). DiscChanger has one blanket impl over ScsiTargets. On the O2, controller 0 answers toscsi/scsi0/cowand controller 1 toscsi1/cow1; both controllers are registered with the monitor.scsi statuslists disks as well as CD-ROMs. The O2 also gainsscratch_pathanddisc_changer, so iris-ci's scratch and cdrom commands and the window's disc change work there.Docs: HELP.md, FEATURES.md, debug.md, HACKING.md, docs/o2-ip32.md, docs/indigo2-ip22.md, iris.toml, CHANGELOG.md. Tests: slot placement and its refusals, the O2 controller rule, the
o2.disksfold.