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