MLY(4)

πŸ“¦ version 11.0, in nixpkgs unstable

πŸ’… MLY(4) β€” the mly manual page, bestie edition πŸŽ€

okay so this is mly(4), straight out of the Kernel Interfaces Manual β€” it's the driver page for the Mylex AcceleRAID/eXtremeRAID family, and I'm gonna walk you through every single line of it because u deserve to know ur RAID controller fr fr πŸ’–


✨ NAME ✨

mly β€” the Mylex AcceleRAID/eXtremeRAID family driver πŸ¦‹


🌸 SYNOPSIS 🌸

mly* at pci? dev ? function ?
scsibus* at mly?

like, that's it. that's the whole vibe check πŸ’…


πŸ’œ DESCRIPTION πŸ’œ

okay so the mly driver is the support system for the Mylex AcceleRAID and eXtremeRAID family of PCI to SCSI RAID controllers β€” but ONLY the ones running firmware version 6.00 and later, that part matters, don't @ me πŸ™ˆ

the controllers it slays for are:

  • AcceleRAID 160
  • AcceleRAID 170
  • AcceleRAID 352
  • eXtremeRAID 2000
  • eXtremeRAID 3000

compatible Mylex controllers that aren't on this list should work β€” but nobody's tested them, so like… proceed with caution bestie, no cap ⭐

logical devices (that's disk arrays, iykyk) that are attached to the controller get presented to the SCSI subsystem as though they were direct-access devices sitting on a virtual SCSI bus. meanwhile, physical devices that don't get claimed by a logical device show up on SCSI channels that match the physical channels on the controller. cute, right? 🌈

here's the tea though: the results of the SCSI ``INQUIRY'' command coming from logical devices get overwritten with status information by the mly driver πŸ‘‘

  • the vendor field is the string MYLEX
  • the product field tells u the type of logical device
  • the revision field holds a four letter status code

and the possible status codes + what they mean are literally:

  • OFLN β€” offline
  • UNCF β€” unconfigured
  • ONLN β€” online - optimal
  • CRIT β€” critical - one or more disks in the array has failed
  • NORD β€” write only
  • STBY β€” standby
  • MISS β€” missing

main character energy honestly πŸ’…


πŸ”₯ DIAGNOSTICS πŸ”₯

🧚 Controller initialization phase 🧚

mly%d: controller initialization started
mly%d: initialization complete

the controller firmware has started initialization ✨ normally the controller BIOS handles this whole process, but the driver may need to do it itself in cases where the BIOS has failed, or just isn't compatible (for example, on non-x86 systems). so like… backup plan energy 🫢

mly%d: drive spinup in progress

drive startup is in progress β€” and heads up, this can take several minutes 😭

mly%d: mirror race recovery failed, one or more drives offline
mly%d: mirror race recovery in progress
mly%d: mirror race recovery on a critical drive

these error codes are undocumented. that's it. that's all we know. πŸ’€

mly%d: FATAL MEMORY PARITY ERROR

firmware detected a fatal memory error β€” and the driver will not attempt to attach to this controller. like, it's over, it's not gonna happen πŸ™ˆ

mly%d: unknown initialization code %x

an unknown error occurred during initialization, and it will be ignored. moving on ✨

πŸ’– Operational diagnostics πŸ’–

mly%d: physical device %d:%d online
mly%d: physical device %d:%d standby
mly%d: physical device %d:%d automatic rebuild started
mly%d: physical device %d:%d manual rebuild started
mly%d: physical device %d:%d rebuild completed
mly%d: physical device %d:%d rebuild cancelled
mly%d: physical device %d:%d rebuild failed for unknown reasons
mly%d: physical device %d:%d rebuild failed due to new physical device
mly%d: physical device %d:%d rebuild failed due to logical drive failure
mly%d: physical device %d:%d found
mly%d: physical device %d:%d gone
mly%d: physical device %d:%d unconfigured
mly%d: physical device %d:%d expand capacity started
mly%d: physical device %d:%d expand capacity completed
mly%d: physical device %d:%d expand capacity failed
mly%d: physical device %d:%d parity error
mly%d: physical device %d:%d soft error
mly%d: physical device %d:%d miscellaneous error
mly%d: physical device %d:%d reset
mly%d: physical device %d:%d active spare found
mly%d: physical device %d:%d warm spare found
mly%d: physical device %d:%d initialization started
mly%d: physical device %d:%d initialization completed
mly%d: physical device %d:%d initialization failed
mly%d: physical device %d:%d initialization cancelled
mly%d: physical device %d:%d write recovery failed
mly%d: physical device %d:%d scsi bus reset failed
mly%d: physical device %d:%d double check condition
mly%d: physical device %d:%d device cannot be accessed
mly%d: physical device %d:%d gross error on scsi processor
mly%d: physical device %d:%d bad tag from device
mly%d: physical device %d:%d command timeout
mly%d: physical device %d:%d system reset
mly%d: physical device %d:%d busy status or parity error
mly%d: physical device %d:%d host set device to failed state
mly%d: physical device %d:%d selection timeout
mly%d: physical device %d:%d scsi bus phase error
mly%d: physical device %d:%d device returned unknown status
mly%d: physical device %d:%d device not ready
mly%d: physical device %d:%d device not found at startup
mly%d: physical device %d:%d COD write operation failed
mly%d: physical device %d:%d BDT write operation failed
mly%d: physical device %d:%d missing at startup
mly%d: physical device %d:%d start rebuild failed due to physical drive too small
mly%d: physical device %d:%d sense data received
mly%d:   sense key %d  asc %02x  ascq %02x
mly%d:   info %4D  csi %4D
mly%d: physical device %d:%d offline
mly%d:   sense key %d  asc %02x  ascq %02x
mly%d:   info %4D  csi %4D

the reported event refers to the physical device at the given channel:target address πŸŽ€

mly%d: logical device %d:%d consistency check started
mly%d: logical device %d:%d consistency check completed
mly%d: logical device %d:%d consistency check cancelled
mly%d: logical device %d:%d consistency check completed with errors
mly%d: logical device %d:%d consistency check failed due to logical drive failure
mly%d: logical device %d:%d consistency check failed due to physical device failure
mly%d: logical device %d:%d automatic rebuild started
mly%d: logical device %d:%d manual rebuild started
mly%d: logical device %d:%d rebuild completed
mly%d: logical device %d:%d rebuild cancelled
mly%d: logical device %d:%d rebuild failed for unknown reasons
mly%d: logical device %d:%d rebuild failed due to new physical device
mly%d: logical device %d:%d rebuild failed due to logical drive failure
mly%d: logical device %d:%d offline
mly%d: logical device %d:%d critical
mly%d: logical device %d:%d online
mly%d: logical device %d:%d initialization started
mly%d: logical device %d:%d initialization completed
mly%d: logical device %d:%d initialization cancelled
mly%d: logical device %d:%d initialization failed
mly%d: logical device %d:%d found
mly%d: logical device %d:%d gone
mly%d: logical device %d:%d expand capacity started
mly%d: logical device %d:%d expand capacity completed
mly%d: logical device %d:%d expand capacity failed
mly%d: logical device %d:%d bad block found
mly%d: logical device %d:%d size changed
mly%d: logical device %d:%d type changed
mly%d: logical device %d:%d bad data block found
mly%d: logical device %d:%d read of data block in bdt
mly%d: logical device %d:%d write back data for disk block lost

this reported event refers to the logical device at the given channel:target address 🌸

mly%d: enclosure %d fan %d failed
mly%d: enclosure %d fan %d ok
mly%d: enclosure %d fan %d not present
mly%d: enclosure %d power supply %d failed
mly%d: enclosure %d power supply %d ok
mly%d: enclosure %d power supply %d not present
mly%d: enclosure %d temperature sensor %d failed
mly%d: enclosure %d temperature sensor %d critical
mly%d: enclosure %d temperature sensor %d ok
mly%d: enclosure %d temperature sensor %d not present
mly%d: enclosure %d unit %d access critical
mly%d: enclosure %d unit %d access ok
mly%d: enclosure %d unit %d access offline

these events refer to external enclosures by number β€” and the driver does not attempt to name the enclosures. so like, if u wanted a cute little nickname for ur enclosure, that's not happening 😭

mly%d: controller cache write back error
mly%d: controller battery backup unit found
mly%d: controller battery backup unit charge level low
mly%d: controller battery backup unit charge level ok
mly%d: controller installation aborted
mly%d: controller mirror race recovery in progress
mly%d: controller mirror race on critical drive
mly%d: controller memory soft ecc error
mly%d: controller memory hard ecc error
mly%d: controller battery backup unit failed

these events report controller status changes πŸ‘‘


πŸ¦‹ SEE ALSO πŸ¦‹

cd(4), ch(4), intro(4), mlx(4), scsi(4), sd(4), st(4), scsictl(8) β€” go read those too bestie, iykyk πŸ“š


⭐ HISTORY ⭐

the mly driver first appeared in NetBSD 1.6, and was based on the FreeBSD driver of the same name. iconic lineage tbh πŸ’…


πŸ’€ BUGS πŸ’€

okay so here's where it gets real:

  • the mly driver currently assumes that all busses support at most 16 targets and 1 logical unit per target πŸ™ˆ like it just assumes, no questions asked
  • enclosures are not named or otherwise identified in event messages (we covered this, it's still true, it's still sad)
  • the transfer speed for devices is always reported to the kernel as 20MHz β€” always. every time. that's just what it does πŸ’€

so yeah, that's the whole page bestie β€” every flag, every diagnostic, every warning. go forth and RAID responsibly 🫢

and that's a wrap on MLY(4) from the Debian build, dated July 29, 2001 β€” mwah, love u, bye πŸ’–πŸŽ€βœ¨

πŸ“¦ where this page comes from
  • nixpkgs unstable: netbsd-source 11.0
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms