Download A File System Component Compiler

Transcript
4.6
4.7
Variables . . . . . . . . . . . . . . . . . . . . .
Filters . . . . . . . . . . . . . . . . . . . . . . .
4.7.1 Filter Examples . . . . . . . . . . . . . .
4.7.2 Filter Functions . . . . . . . . . . . . .
4.8 Language Syntax . . . . . . . . . . . . . . . . .
4.8.1 C Declarations . . . . . . . . . . . . . .
4.8.2 FiST Declarations . . . . . . . . . . . .
4.8.3 Rules . . . . . . . . . . . . . . . . . . .
4.8.4 Additional C Code . . . . . . . . . . . .
4.9 File System Types . . . . . . . . . . . . . . . .
4.9.1 Stateless File Systems . . . . . . . . . .
4.9.2 In-Core File Systems . . . . . . . . . . .
4.9.3 Persistent File Systems . . . . . . . . .
4.10 User Level File Systems . . . . . . . . . . . . .
4.10.1 Types of User-Level FiST File Systems
4.10.1.1 Stateless NFS File Systems . .
4.10.1.2 In-Core NFS File Systems . .
4.10.1.3 Persistent NFS File Systems .
4.10.2 Fan-Out in User-Level File Systems . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
28
28
29
29
30
30
31
31
34
34
34
34
35
36
36
36
36
36
37
5 Evaluation Plan
39
5.1 Criteria for Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.2 Experiments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 Lessons to be Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
6 Related Work
6.1 HURD . . . . . . . . . . . . . . . . .
6.1.1 How to Write a Translator . .
6.1.2 Conclusions . . . . . . . . . .
6.2 Plan 9 . . . . . . . . . . . . . . . . .
6.2.1 Inferno . . . . . . . . . . . .
6.3 Programmed Logic Corp.’s StackFS
6.4 Spring . . . . . . . . . . . . . . . . .
6.5 4.4 BSD’s nullfs . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7 Summary
A Appendix: Vnode Interface
A.1 struct vfs . . . . . . . .
A.2 struct vfsops . . . . . .
A.3 struct vnode . . . . . . .
A.4 struct vnodeops . . . .
A.5 How It All Fits . . . . . .
A.5.1 Mounting . . . . .
A.5.2 Path Traversal . .
41
41
41
42
42
43
44
44
46
46
Tutorial
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
47
47
48
50
51
55
55
55