diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-01 15:00:47 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-01 15:00:47 +0200 |
| commit | d562e9df2bc5e69bba7298a9439e2adca5c18faf (patch) | |
| tree | 8d763e60d512e7a4230413f13caaf9153cb2ec54 /rsnix/src/rtc.rs | |
| parent | klog: [ssss.mmm] millisecond timestamps from the PIT (diff) | |
| download | rs-dos-d562e9df2bc5e69bba7298a9439e2adca5c18faf.tar.gz rs-dos-d562e9df2bc5e69bba7298a9439e2adca5c18faf.zip | |
rsnix: runtime device detection — rescan for hotplugged/removed disks
Phase 1: make the boot discovery pipeline re-runnable and diff it
against live hardware state.
- ahci: store ABAR/NP/port bitmap; poll_dirty() (cheap PxSSTS.DET check
per port) and rescan() which starts newly-present ports and tombstones
the slots of removed ones. Slots never shift, so disk indices stay
valid. select() now rejects tombstoned slots.
- fat: Volume gets a mounted flag; rescan() unmounts volumes whose disk
left and mounts every disk without a mounted volume (re-trying failed
boot mounts). UID dedup ignores tombstones so a re-plugged disk keeps
its /disk/<UID> name.
- fs: init's mount loop factored into rescan_disks(), which lazily
creates /disk, ensures a mount node per mounted volume and tombstones
nodes of unmounted ones.
- shell: 'rescan' command + automatic deep rescan before each prompt
when ahci::poll_dirty() sees a port-presence change.
Rescan events flow through serial_println so they land in klog too.
Removal (PxSSTS) is a real-hardware path: QEMU q35 rejects disk hotplug
on the ich9-ahci IDE buses, and PCIe device_del is a guest-cooperative
protocol this kernel does not implement.
Diffstat (limited to 'rsnix/src/rtc.rs')
0 files changed, 0 insertions, 0 deletions
