Design a file system checker for our file system. You should call it csefsck. It will have to do the following:
- The DeviceID is correct
- All times are in the past, nothing in the future
- Validate that the free block list is accurate this includes
- Making sure the free block list contains ALL of the free blocks
- Make sure than there are no files/directories stored on items listed in the free block list
- Each directory contains . and .. and their block numbers are correct
- Each directory's link count matches the number of links in the filename_to_inode_dict
- If the data contained in a location pointer is an array, that indirect is one
- That the size is valid for the number of block pointers in the location array. The three possibilities are:
- size0
- size
- size>blocksize*(length of location array-1) if indirect