.if n .pH fstw_guide.Cfstwg @(#)Cfstwg	40.1
.BK "File System Type Writer's Guide" "" "" ""   
.\ACRONYM	                  
.CH "File System Type Writer's Guide" "" "Table of Contents" ""
.\CHAPTER	
.tC 1 "Introduction" 1  
.tC 2 "Principles of VFS Architecture" 1  
.tC 2 "What are File System Types?" 2  
.tC 2 "Developing File System Types" 3  
.tC 1 "Some Basic Structures" 6  
.tC L "Figure 1:\0" "\f4vfssw\f1 table" 7
.tC 2 "Path Names" 7  
.Index: istart path names      	7
.Index: iend path names      	9
.tC 2 "I/O Data Structures" 10  
.Index: istart I/O data structures     	10
.tC L "Figure 2:\0" "I/O data structures" 10
.tC 2 "Credentials" 11  
.tC L "Figure 3:\0" "User credentials" 11
.Index: iend I/O data structures     	12
.tC 1 "VFS Operations" 13  
.Index: istart VFS operations      	13
.tC L "Figure 4:\0" "\f4vfs\f1 type definitions" 13
.tC 2 "vfs_init" 15  
.Index: VFS operations, vfs_init      	15
.tC 2 "vfs_mount" 15  
.Index: VFS operations, vfs_mount      	15
.tC 2 "vfs_unmount" 16  
.Index: VFS operations, vfs_mount      	16
.tC 2 "vfs_root" 16  
.Index: VFS operations, vfs_root      	16
.tC 2 "vfs_statvfs" 17  
.Index: VFS operations, vfs_statvfs      	17
.tC 2 "vfs_sync" 18  
.Index: VFS operations, vfs_sync      	18
.tC 2 "vfs_vget" 18  
.Index: VFS operations, vfs_vget      	18
.tC 2 "vfs_mountroot" 18  
.Index: VFS operations, vfs_mountroot      	18
.Index: iend VFS operations      	19
.tC 1 "Vnode Operations" 20  
.Index: istart vnode operations      	20
.tC L "Figure 5:\0" "\f4vnode\f1 type definitions" 20
.tC L "Figure 6:\0" "\f4vnode\f1 operations" 21
.tC 2 "vop_open" 22  
.Index: vnode operations, vop_open      	22
.tC 2 "vop_close" 23  
.Index: vnode operations, vop_close      	23
.tC 2 "vop_read & vop_write" 23  
.Index: vnode operations, vop_read      	23
.Index: vnode operations, vop_write      	23
.tC 2 "vop_ioctl" 24  
.Index: vnode operations, vop_ioctl      	24
.tC 2 "vop_setfl" 24  
.Index: vnode operations, vop_setfl      	24
.tC 2 "vop_getattr" 25  
.Index: vnode operations, vop_getattr      	25
.tC 2 "vop_setattr" 26  
.Index: vnode operations, vop_setattr      	26
.tC 2 "vop_access" 27  
.Index: vnode operations, vop_access      	27
.tC 2 "vop_lookup" 27  
.Index: vnode operations, vop_lookup      	27
.tC 2 "vop_create" 28  
.Index: vnode operations, vop_create      	28
.tC 2 "vop_remove" 28  
.Index: vnode operations, vop_remove      	28
.tC 2 "vop_link" 28  
.Index: vnode operations, vop_link      	28
.tC 2 "vop_rename" 29  
.Index: vnode operations, vop_rename      	29
.tC 2 "vop_mkdir" 29  
.Index: vnode operations, vop_mkdir      	29
.tC 2 "vop_rmdir" 29  
.Index: vnode operations, vop_rmdir      	29
.tC 2 "vop_readdir" 30  
.Index: vnode operations, vop_readdir      	30
.tC 2 "vop_symlink" 30  
.Index: vnode operations, vop_symlink      	30
.tC 2 "vop_readlink" 31  
.Index: vnode operations, vop_readlink      	31
.tC 2 "vop_fsync" 31  
.Index: vnode operations, vop_fsync      	31
.tC 2 "vop_inactive" 31  
.Index: vnode operations, vop_inactive      	31
.tC 2 "vop_fid" 32  
.Index: vnode operations, vop_fid      	32
.tC 2 "vop_rwlock & vop_rwunlock" 32  
.Index: vnode operations, vop_rwlock      	32
.Index: vnode operations, vop_rwunlock      	32
.tC 2 "vop_seek" 33  
.Index: vnode operations, vop_seek      	33
.tC 2 "vop_cmp" 33  
.Index: vnode operations, vop_cmp      	33
.tC 2 "vop_frlock" 34  
.Index: vnode operations, vop_frlock      	34
.tC 2 "vop_space" 34  
.Index: vnode operations, vop_space      	34
.tC 2 "vop_realvp" 35  
.Index: vnode operations, vop_realvp      	35
.tC 2 "vop_getpage" 35  
.Index: vnode operations, vop_getpage      	35
.tC 2 "vop_putpage" 36  
.Index: vnode operations, vop_putpage      	36
.tC 2 "vop_map" 37  
.Index: vnode operations, vop_map      	37
.tC 2 "vop_addmap" 38  
.Index: vnode operations, vop_addmap      	38
.tC 2 "vop_delmap" 38  
.Index: vnode operations, vop_delmap      	38
.tC 2 "vop_poll" 39  
.Index: vnode operations, vop_poll      	39
.tC 2 "vop_pathconf" 39  
.Index: vnode operations, vop_pathconf      	39
.Index: iend vnode operations      	39
.tC 1 "VM Interaction" 40  
.Index: istart VM interaction      	40
.Index: iend VM interaction      	40
.tC 1 "Additional Kernel Interfaces" 41  
.Index: istart additional kernel interfaces     	41
.tC 2 "vn_open" 41  
.Index: additional kernel interfaces, vn_open     	41
.tC 2 "vn_create" 41  
.Index: additional kernel interfaces, vn_create     	41
.tC 2 "vn_rdwr" 42  
.Index: additional kernel interfaces, vn_rdwr     	42
.tC 2 "vn_remove" 42  
.Index: additional kernel interfaces, vn_remove     	42
.tC 2 "vn_link" 42  
.Index: additional kernel interfaces, vn_link     	42
.tC 2 "vn_rename" 43  
.Index: additional kernel interfaces, vn_rename     	43
.Index: iend additional kernel interfaces     	43
.tC 1 "Common Vnode Operations" 44  
.Index: istart common vnode operations     	44
.tC 2 "fs_nosys" 44  
.Index: common vnode operations, fs_nosys     	44
.tC 2 "fs_sync" 44  
.Index: common vnode operations, fs_sync     	44
.tC 2 "fs_rwlock & fs_rwunlock" 44  
.Index: common vnode operations, fs_rwlock     	44
.Index: common vnode operations, fs_rwunlock     	44
.tC 2 "fs_cmp" 45  
.Index: common vnode operations, fs_cmp     	45
.tC 2 "fs_frlock" 45  
.Index: common vnode operations, fs_frlock     	45
.tC 2 "fs_setfl" 45  
.Index: common vnode operations, fs_setfl     	45
.tC 2 "fs_poll" 46  
.Index: common vnode operations, fs_poll     	46
.tC 2 "fs_vcode" 46  
.Index: common vnode operations, fs_vcode     	46
.tC 2 "fs_pathconf" 46  
.Index: common vnode operations, fs_pathconf     	46
.Index: iend common vnode operations     	46
.tC 1 "Storage Allocation" 47  
.Index: istart storage allocation      	47
.Index: iend storage allocation      	48
.tC 1 "Name Cache" 49  
.Index: istart name cache      	49
.Index: iend name cache      	51
.tC 1 "Special File Systems" 52  
.Index: istart special file systems     	52
.Index: iend special file systems     	52
.tC 1 "Block I/O" 53  
.Index: istart block I/O      	53
.tC 2 "struct buf" 53  
.Index: block I/O, struct buf     	53
.tC 2 "bread" 54  
.Index: block I/O, bread      	54
.tC 2 "bwrite" 55  
.Index: block I/O, bwrite      	55
.tC 2 "brelse" 55  
.Index: block I/O, brelse      	55
.tC 2 "biowait" 55  
.Index: block I/O, biowait      	55
.tC 2 "biodone" 55  
.Index: block I/O, biodone      	55
.tC 2 "binval" 56  
.Index: block I/O, binval      	56
.Index: iend block I/O      	56
.tC 1 "fbio" 57  
.Index: istart fbio       	57
.tC 2 "fbread" 57  
.Index: fbio, fbread       	57
.tC 2 "fbwrite" 58  
.Index: fbio, fbwrite       	58
.tC 2 "fbwritei" 58  
.Index: fbio, fbwritei       	58
.tC 2 "fbiwrite" 58  
.Index: fbio, fbiwrite       	58
.tC 2 "fbrelse" 58  
.Index: fbio, fbrelse       	58
.tC 2 "fbrelsei" 59  
.Index: fbio, fbrelsei       	59
.tC 2 "fbzero" 59  
.Index: fbio, fbzero       	59
.Index: iend fbio       	59
.tC 1 "File System Administrative Commands" 60  
.Index: istart administrative commands      	60
.Index: iend administrative commands      	60
.tC 1 "Configuration/Booting" 61  
.Index: istart configuration       	61
.Index: istart booting       	61
.Index: iend configuration       	62
.Index: iend booting       	62
.tC 1 "File System Hardening" 63  
.Index: istart file system hardening     	63
.Index: iend file system hardening     	63
.tC 1 "Glossary" 64  
.Index: istart glossary       	64
.Index: iend glossary       	65
