Breaking Apart the VFS for Managing File Systems

Tuesday July 3rd, 12-1PM @ BA5205

Speaker: Kuei (Jack) Sun

Title:
Breaking Apart the VFS for Managing File Systems

Abstract:
File system management applications, such as data scrubbers, defragmentation tools, resizing tools, and partition editors, are essential for maintaining, optimizing, and administering storage systems. These applications require fine-grained control over file-system metadata and data, such as the ability to migrate a data block to another physical location. Such control is not available with the VFS API, and so these applications bypass the VFS and access and modify file-system metadata directly. As a result, these applications do not work across file systems, and must be developed from scratch for each file system, which involves significant engineering effort and impedes adoption of new file systems.
Our goal is to design an interface that allows these management applications to be written once and be usable for all file systems that support the interface. Our key insight is that these applications operate on common file system abstractions, such as file system objects (e.g., blocks, inodes, and directory entries), and the mappings from logical blocks of a file to their physical locations. We propose the Extended Virtual File System (eVFS) interface that provides fine-grained access to these abstractions, allowing the development of generic file system management applications. We demonstrate the benefits of our approach by building a file-system agnostic conversion tool that performs in-place conversion of a source file system to a completely different destination file system, showing that arbitrary modifications to the file system format can be handled by the interface.

Bio:
Kuei (Jack) Sun is a fourth year PhD student supervised by Prof. Ashvin Goel and Prof. Angela Demke Brown. The focus of his research is on simplifying the development of file-system aware applications, as well as improving the robustness of these applications.

Spiffy: Interpreting Metadata for File System Applications

Thursday February 8th, 12-1PM @ BA5205

Speaker: Jack Sun

Title:
Spiffy: Interpreting Metadata for File System Applications

Abstract:
Many file system applications such as defragmentation tools, file system checkers or data recovery tools, operate at the storage layer. Today, developers of these storage applications require detailed knowledge of the file system format, which takes a significant amount of time to learn, often by trial and error, due to insufficient documentation or specification of the format. Furthermore, these applications perform ad-hoc processing of the file-system metadata, leading to bugs and vulnerabilities.

We propose Spiffy, an annotation language for specifying the on-disk format of a file system. File system developers annotate the data structures of a file system, and we use these annotations to generate a library that allows identifying, parsing and traversing file-system metadata, providing support for both offline and online storage applications. This approach simplifies the development of storage applications that work across different file systems because it reduces the amount of file-system specific code that needs to be written.

We have written annotations for the Linux Ext4, Btrfs and F2FS file systems, and developed several applications for these file systems, including a type-specific metadata corruptor, a file system converter, and an online storage layer cache that preferentially caches files for certain users. Our experiments show that applications that use the library to access file system metadata can achieve good performance and are robust against file system corruption errors.

Bio:
Kuei (Jack) Sun is a fourth year PhD student supervised by Prof. Ashvin Goel and Prof. Angela Demke Brown. The focus of his research is on simplifying the development of file-system aware applications, as well as improving the robustness of these applications.