Final Year Project: Using Linux Filesystems Under Windows   Chris Bryden BEng. Electronics and Software Engineering    School of Computer Science   University of Birmingham 25   The diagram below illustrates how all the functions shown to be required in  the  mini  case  study  above  are  fitted  together.  The  arrows  in  the  diagram indicate when a function is calling another function. For functions that call more than one other function, the numbers on the arrows indicate the order in which the  other  functions  are  called.  For  example,  for  the  case  of  copying  a  file,  the function first reads the inode to determine file size, etc., then to copy the file it requires  the  list  of  allocated  blocks  for  the  inode  so  it  calls  the  read  block  list function. Finally the blocks need to be read, and the copy function calls the read block function. In  addition  to  these  functions  that  perform  the  operations  on  the  ext2 filesystem,  it  is  necessary  to  provide  a  path  for  layer  2  to  obtain  the  partition information.  Layer  2  cannot  simply  call  the  read  partition  information  function from  layer  0  as  this  compromises  the  integrity  of  the  three  layer  approach.  An additional function is supplied in layer 1 to retrieve the partition information and pass it to layer 2. Read Block Read Inode Read Block List Convert path name to inode number Read Directory Listing Copy a file 2 1 1 2 Read Group- Descriptor from buffer 1 2 2 1 3 3 On startup read superblock into memory On startup read group descriptors into memory Layer 2 Layer 0 The arrow signifies 'calls'