mount: find most recent SB if SB0 is unclean, load ALL SBs if unclean SB roll forward load ifile inode (using block from SB) load root dir inode (using inode->block ifile) hand back SB & root inode umount: checkpoint write SB0 with clean state getinode: find block (inode / (bs / sizeof(blockaddress))) from ifile find block address (inode % (bs / sizeof(blockaddress))) return getblock bs = 1024 4 bytes per block address == 256 maps per block