MLY(4)

πŸŽ€ MLY(4) πŸŽ€

okay bestie, this is the manual page for mly, section 4 of the Kernel Interfaces Manual. yes it's a RAID driver, yes it's ancient, no we are not being weird about it, it's iconic and we're learning it together πŸ’–


✨ NAME ✨

mly β€” the Mylex AcceleRAID/eXtremeRAID family driver. that's it, that's the name, slay πŸ’…


🌸 SYNOPSIS 🌸

so like, you wanna bake this driver into your kernel? okay periodt, drop these lines into your kernel config file:

device pci
device scbus
device da
device mly

orrr, if you're feeling module-coded and want to load it at boot time instead, just put this one single line into loader.conf(5):

mly_load="YES"

choose your fighter, both are valid 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so the mly driver is the support system for Mylex AcceleRAID and eXtremeRAID-family PCI-to-SCSI RAID controllers, but only the ones rockin' version 6.00 and later firmware. old firmware? not invited to the party, sorry babe πŸ’€

here's the cute part, the architecture:

  • Logical devices (array drives) that are attached to the controller get presented to the SCSI subsystem like they're just, y'know, regular direct-access devices chilling on a virtual SCSI bus. main character energy honestly πŸ‘‘
  • Physical devices that are not claimed by a logical device get presented on SCSI channels that match the actual physical channels on the controller. no fake ones, just facts ✨

πŸ”₯ HARDWARE πŸ”₯

the controllers that the mly driver supports, bestie, include:

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

and ngl, compatible Mylex controllers that aren't on this list should work β€” but nobody verified them, so it's giving "we think so??" πŸ™ˆ


πŸ’œ DIAGNOSTICS πŸ’œ

this is the part where the driver just starts yelling at you in dmesg, and honestly? we love a chatty king. let's break it down.

🩷 Controller initialisation phase

mly%d: controller initialisation started
mly%d: initialisation complete

so the controller firmware has started initialising. normally the controller BIOS handles this whole thing, but the driver might have to step in when the BIOS has failed, or when it's just not compatible β€” like on non-x86 systems, iykyk.

mly%d: drive spinup in progress

drives are spinning up. this can take several minutes, so like, hydrate, do your skincare routine, it'll be done when it's done πŸ’…

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. we know nothing. we are simply vibing in the dark πŸ•―οΈ

mly%d: FATAL MEMORY PARITY ERROR

firmware found a fatal memory error. the driver will not attempt to attach to this controller. that's a wrap, no notes, do not pass go πŸ’€

mly%d: unknown initialisation code %x

an unknown error happened during initialisation. it will be ignored. not me ignoring my problems 😭

🌈 Driver initialisation/shutdown phase

mly%d: can't enable busmaster feature
mly%d: memory window not available
mly%d: can't allocate register window
mly%d: can't allocate interrupt
mly%d: can't set up interrupt

so basically the system's PCI BIOS did not correctly configure the controller's PCI interface. initialisation has failed and the driver will not attach to this controller. the BIOS fumbled, and we're all paying for it πŸ™ƒ

mly%d: can't allocate parent DMA tag
mly%d: can't allocate buffer DMA tag
mly%d: can't allocate command packet DMA tag
mly%d: can't allocate scatter/gather DMA tag
mly%d: can't allocate s/g table
mly%d: can't allocate memory mailbox DMA tag
mly%d: can't allocate memory mailbox

a resource allocation error popped off while the driver was initialising. initialisation has failed, and again, the driver will not attach to this controller. it's giving ✨incompatible✨

mly%d: BTL rescan result corrupted

the results of a scan for an attached device got corrupted. one or more devices may not be correctly reported. sketchy fr fr 😬

mly%d: flushing cache...

the controller cache is being flushed before detach or shutdown. a lil goodbye ritual πŸŽ€

🧚 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 sitting at that given channel:target address. so like, that's how you find it πŸ“

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

whenever it can, the event report will also include the name of the SCSI device that has attached to the device. cute of it honestly 🫢

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. the driver does not even attempt to name the enclosures β€” so like, they stay anonymous, mysterious, no name tag, no pronouns, just a number 🎭

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. your controller is going through something, and it's telling you about it πŸ’…


πŸ‘‘ AUTHORS πŸ‘‘

the mly driver was written by Michael Smith <msmith@FreeBSD.org>.

and this manual page was also written by Michael Smith <msmith@FreeBSD.org>. same person, both jobs, we love a multi-hyphenate ✨


πŸ’€ BUGS πŸ’€

  • the driver does not yet provide an external management interface. it's giving "coming soon" but like, from 2004.
  • enclosures are not named or otherwise identified in event messages. they're just out here being numbers, unbothered, unlabeled πŸ™ˆ

okay bestie that's the whole page, every flag-less, option-less, error-message-ful byte of it. go forth and read your dmesg like it's a group chat you weren't added to πŸ’–

and that's a wrap from the Debian crew β€” Debian, page dated August 10, 2004, filed under MLY(4). periodt 🌈⭐

πŸ“¦ where this page comes from