Block Asynchronous I/O - A flexible infrastructure for

user-level filesystems

Muthian Sivathanu (muthian@cs.wisc.edu)

Venkateshwaran V (veeve@cs.wisc.edu)

 

 Abstract

 Block Asynchronous I/O (BAIO) is a mechanism that strives to eliminate the kernel abstraction of a filesystem.   In-kernel filesystems try to serve all applications with a uniform generic set of policies, and consequently end up achieving sub-optimal performance on a majority of applications.  Application level knowledge of the peculiarities of the data that is managed on disk is totally ignored by a kernel filesystem, with the result that optimizations that could exploit specific characteristics of applications cannot be done in a generic filesystem.   BAIO, presented in this paper, tries to solve this by exporting the filesystem component of the kernel to the application level, thereby facilitating construction of customized user-level filesystems.  The role of the kernel is restricted to regulating access to disk by multiple processes,  keeping track of ownership information and enforcing protection boundaries.  All other policies, including physical layout of data on disk, caching and prefetching of data, are totally implemented at the application level, in a way that best fits the specific requirements of the application.

Paper in PS or PDF

Tarball of our source can be found here