For the "which disk blocks" exercise, the answer is A. Superblocks and cylinder groups have accurate counts. • Every directory entry references a valid inode. • Every valid inode appears in a number of directory entries equal to its link count. • Blocks allocated to valid inodes are marked inuse in bitmaps. • A block belongs to only one file/directory. • The first two entries in every directory are . and .. • What makes an inode valid? * * Its length and number of blocks are consistent with the blocks allocated to it. * * All block pointers are valid in the given file system. * * If an inode references a directory, its size is a multiple of DIRBLKSIZ. * * Its inode number is correct. Log records during file creation: * Create file A, write blocks 0-2 into the file. * Write directory entry? NO!!! First initialize inode. L1: Allocate and initialize inode 10 L2: Add directory entry: A, 10 Now we need to allocate some blocks to the file. Suppose we are allocating it physical blocks 1234, 1235, 1236 L3: Alloc block 1234 to inode 10 (lbn 0) L4: Alloc block 1235 to inode 10 (lbn 1) L5: Alloc block 1236 to inode 10 (lbn 2) Log records during file deletion: Delete file A (and all of its blocks L1: Remove directory entry A, 10 L2: Free block 1234 L3: Free block 1235 L4: Free block 1236 L5: Clear inode 10 L6: Deallocate inode 10 ???? bitmap: inode 11 is allocated inode 11 gets the following content directory entry foo points to inode 11.