The case for struct bio
- or -
A road map for a stackable BIO subsystem in FreeBSD

Poul-Henning Kamp <>

The FreeBSD Project


Historically, the only translation performed on I/O requests after they they left the file-system layer were logical sub disk implementation done in the device driver. No universal standard for how sub disks are configured and implemented exists, in fact pretty much every single platform and operating system have done it their own way. As FreeBSD migrates to other platforms it needs to understand these local conventions to be able to co-exist with other operating systems on the same disk.

      Recently a number of technologies like RAID have expanded the concept of "a disk" a fair bit and while these technologies initially were implemented in separate hardware they increasingly migrate into the operating systems as standard functionality.

      Both of these factors indicate the need for a structured approach to systematic "geometry manipulation" facilities in FreeBSD.

      This paper contains the road-map for a stackable "BIO" system in FreeBSD, which will support these facilities.