Download A File System Component Compiler
Transcript
Contents 1 Introduction 1.1 The Problem . . . . . . . . . 1.2 My Solution . . . . . . . . . . 1.3 Advantages of My Solution . 1.4 Organization of this Proposal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 2 3 3 2 Background 2.1 Types of File Systems . . . . . . . . . . . . . . 2.1.1 Device Level . . . . . . . . . . . . . . . 2.1.2 Out of Kernel . . . . . . . . . . . . . . . 2.1.3 Vnode Level . . . . . . . . . . . . . . . 2.1.4 Compilation vs. Interpretation . . . . . 2.2 The Vnode Interface . . . . . . . . . . . . . . . 2.2.1 The Original Vnode Interface . . . . . . 2.2.2 A Stackable Vnode Interface . . . . . . 2.2.2.1 Interposition and Composition 2.3 Barriers to File System Experimentation . . . . 2.3.1 Inertia . . . . . . . . . . . . . . . . . . . 2.3.2 Commercial Concerns . . . . . . . . . . 2.3.3 High Development Costs . . . . . . . . . 2.4 FiST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 4 5 7 8 8 8 9 10 11 11 12 12 13 3 Mechanisms for Interposition and Composition 3.1 Interposition API . . . . . . . . . . . . . . . . . . 3.2 Creating Links Among Vnodes . . . . . . . . . . 3.3 Using Links Among Vnodes . . . . . . . . . . . . 3.4 Composition . . . . . . . . . . . . . . . . . . . . 3.5 Private VFS State . . . . . . . . . . . . . . . . . 3.6 Status of Current Implementation . . . . . . . . 3.6.1 Portability . . . . . . . . . . . . . . . . . 3.6.2 Performance . . . . . . . . . . . . . . . . 3.7 User Level Operation . . . . . . . . . . . . . . . . 3.7.1 Amd as a User-Level File System Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 15 17 19 19 20 20 21 21 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 24 24 25 25 26 26 27 27 4 The 4.1 4.2 4.3 4.4 4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FiST Language Motivations for the FiST Language . . . . . . . . Language Requirements . . . . . . . . . . . . . . Translator Requirements . . . . . . . . . . . . . . 4.3.1 Linkage Requirements for Kernel Modules FiST Vnode Attributes . . . . . . . . . . . . . . FiST Vnode Functions . . . . . . . . . . . . . . . 4.5.1 Errors . . . . . . . . . . . . . . . . . . . . 4.5.2 State Functions . . . . . . . . . . . . . . . i