BIO(4) | Device Drivers Manual | BIO(4)

# NAME

`bio` — block I/O ioctl tunnel pseudo-device

# SYNOPSIS

`pseudo-device bio` [count]

# DESCRIPTION

The `bio` driver provides userland applications ioctl(2) access to devices otherwise not found as /dev nodes. The /dev/bio device node operates by delegating ioctl calls to a requested device driver. Only drivers which have registered with the `bio` device can be accessed via this interface.

If count is given in the specification, and is greater than 0, a maximum of one `bio` device is created.

The following device drivers register with `bio` for volume management:

ami(4)
  American Megatrends Inc. MegaRAID PATA/SATA/SCSI RAID controller
arc(4)
  Areca Technology Corporation SAS/SATA RAID controller
cac(4)
  Compaq Smart Array 2/3/4 SCSI RAID controller
ciss(4)
  Compaq Smart Array SAS/SATA/SCSI RAID controller
gdt(4)
  ICP-Vortex and Intel GDT SATA/SCSI RAID controller
ips(4)
  IBM SATA/SCSI ServeRAID controller
mfi(4)
  LSI Logic & Dell MegaRAID SAS RAID controller
mfii(4)
  LSI Logic MegaRAID SAS Fusion RAID controller
mpi(4)
  LSI Logic Fusion-MPT Message Passing Interface
mpii(4)
  LSI Logic Fusion-MPT Message Passing Interface II
nvme(4)
  NVMe storage controllers
softraid(4)
  Software RAID

The following device drivers register with `bio` to provide enclosure management:

safte(4)
  SCSI Accessed Fault-Tolerant Enclosure
ses(4)
  SCSI Enclosure Services

The following ioctl calls apply to the `bio` device:

`BIOCLOCATE` struct bio_locate *
  Locate a named device and give back a cookie to the application for subsequent ioctl calls. The cookie is used to tunnel further ioctls to the right device.
`BIOCINQ` struct bioc_inq *
  Retrieve number of volumes and physical disks for a specific device.
`BIOCDISK` struct bioc_disk *
  Retrieve detailed information for the specified physical disk. Information returned can include status, size, channel, target, lun, vendor name, serial number and processor device (ses or safte).
`BIOCVOL` struct bioc_vol *
  Retrieve detailed information for the specified volume. Information returned can include status, size, RAID level, number of disks, device name association (sd?) and vendor name.
`BIOCALARM` struct bioc_alarm *
  Control the alarm beeper on the device. Supported states are: disable alarm, enable alarm, silence alarm, status and test alarm.

  Note: These options might not be supported on all hardware.

`BIOCBLINK` struct bioc_blink *
  Blink an LED of the specified physical disk. Supported blink states are: blink LED, unblink LED and blink alarm LED.

  Note: This option is only supported if the disk is governed by ses(4) or safte(4) and the hardware supports hardware blinking.

`BIOCSETSTATE` struct bioc_setstate *
  Alter the state of specified physical disk. Supported states are: create hot-spare, online disk and offline disk.

The following ioctl calls apply to the `bio` device only when talking to a softraid(4) device:

`BIOCCREATERAID` struct bioc_createraid *
  Create a new volume or assemble an existing volume. The volume will be attached as a system disk, if this capability is supported by the volume discipline.
`BIOCDELETERAID` struct bioc_deleteraid *
  Remove system disk (if present) and disassemble the softraid(4) volume.
`BIOCDISCIPLINE` struct bioc_discipline *
  Dispatch a discipline specific ioctl.
`BIOCINSTALLBOOT` struct bioc_installboot *
  Install a boot loader.

# FILES

/dev/bio
  ioctl tunnel device

# SEE ALSO

ioctl(2), softraid(4), bioctl(8)

# HISTORY

The `bio` driver first appeared in OpenBSD 3.2.

# AUTHORS

The `bio` driver was written by Niklas Hallqvist <niklas@openbsd.org>. The API was written by Marco Peereboom <marco@openbsd.org>.

July 13, 2024 | Debian