Files are linked lists of blocks. The sector header of
each sector on the
hard disk contains pointers to the previous and next blocks in the file,
along with some other info that I've forgotten
Files may be sparse - the fact that block n exists does not mean that
block n-1 does
Block 0 of each file (I think, maybe block -1) contains the 'file
descriptor' - bascially an i-node.
Negative block numbers are the file allocation map. You can use this to
quickly find any block in the file without following the links.