IntroductionKernel filesystems try to be efficient across a large variety of application requirements. This excessive generality that is inherent to the concept of an in-kernel filesystem, turns out to be a great perforamance limitation in many cases. Filesystems end up ignoring the vast knowledge available at the application level that might facilitate highly optimized policies and decisions. This huge information gap that exists between filesystems and the applciations result in generic policies being imposed on all applications uniformly, leading to sub-optimal performance. This performance impact is particularly significant in highly demanding, specialized applications like databases and web servers, Stonebraker [7] argued that inappropriate filesystem implementations can have a dramatic impact on the perforamance of databases.To achieve optimal disk I/O perforamance, it is imperative that applications have full control over all aspects of the layout and management of data on disk.Applications have the complete view of the semantics of data they manage and hence are the ideal candidates to dictate decisions on how the data is to be laid out on disk, what data is to be cached and when prefetching should occur. Potentially, applications require the power and capability to operate their own filesystem. The kernel must ideally provide a direct, protected access to the disk, and its role must be limited to regulating access to the disk by multiple processes and imposing protection boundaries. Block Asynchronous I/O (BAIO), presented in this paper, strives at achieving these objectives. This paper is organized as follows . In Section 2, we discuss about the conventional methods of doing disk I/O and their disadvantages. In section 3, we introduce BAIO and explain why BAIO is a better way of doing disk I/O compared to conventional methods. Section 4 detials the design of BAIO. Section 5 deals with implementation details. In Section 6 we provide perforamance evaluations and we discuss related work in Section 7.