Excerpts from the Preface:
Although many operating system textbooks offer high level descriptions of file systems, few go into sufficient detail for an implementor, and none go into details about advanced topics such as journaling. I wrote this book to address that lack of information. This book covers the details of file systems, from low-level to high-level, as well as related topics such as the disk cache, the file system interface to the kernel, and the user-level APIs that use the features of the file system. Reading this book should give you a thorough understanding of how a file system works in general, how the Be File System
(BFS) works in particular, and the issues involved in designing and implementing a file system.
The Be operating system (BeOS) uses BFS as its native file system. BFS is a modern 64-bit journaled file system. BFS also supports extended file attributes (name/value pairs) and can index the extended attributes, which allows it to offer a query interface for locating files in addition to the normal namebased hierarchical interface. The attribute, indexing, and query features of BFS set it apart from other file systems and make it an interesting example to discuss.
Throughout this book there are discussions of different approaches to solving file system design problems and the benefits and drawbacks of different techniques. These discussions are all based on the problems that arose when implementing BFS. I hope that understanding the problems BFS faced and the changes it underwent will help others avoid mistakes I made, or perhaps spur them on to solve the problems in different or more innovative ways. Now that I have discussed what this book is about, I will also mention what it is not about. Although there is considerable information about the details of BFS, this book does not contain exhaustive bit-level information about every BFS data structure. I know this will disappoint some people, but it is the difference between a reference manual and a work that is intended to educate and inform.
My only regret about this book is that I would have liked for there to be more information about other file systems and much more extensive performance analyses of a wider variety of file systems. However, just like software, a book has to ship, and it can't stay in development forever.
You do not need to be a file system engineer, a kernel architect, or have a PhD to understand this book. A basic knowledge of the C programming language is assumed but little else. Wherever possible I try to start from first principles to explain the topics involved and build on that knowledge throughout the chapters. You also do not need to be a BeOS developer or even use the BeOS to understand this book. Although familiarity with the BeOS may help, it is not a requirement.
It is my hope that if you would like to improve your knowledge of file systems, learn about how the Be File System works, or implement a file system, you will find this book useful.
:| "Overall, a reasonably worthwhile purchase, especially given the derth of material in this area, but there are more technical, better explained resources on the net that should also be consulted for more info about file system design."
:| "It does provide intermediate levels of detail regarding many, perhaps most, areas of concern to file system designers and deserves a place in the library of anyone embarking on such a project - though people expecting a cookbook rather than a source of detailed ideas will be disappointed."