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