CSE 403: Advanced Operating Systems

Project #2: File Systems (zip file) Due April 4th

 

 

Project Goals:

 

- Understand the mechanisms behind a full-featured Linux filesystem  

- Write code that conforms to a robust and complex API  

- Make a cool and useful filesystem  Project Details:

 

 

 

Project Details:

 

The goal of this project is to implement a file system.  We will be using the FUSE userspace filesystem module in Linux.  The code I am providing is a reference to help you get started, and it has pointers to additional (and better) additional information.  Reading the man pages for the POSIX operations that your code mimics is a good idea too.

 

 

 

  Before you get started, note that you will need to install some fuse development packages, via 'apt-get':

    libfuse-dev

    pkg-config

 

 

 

  Part 1 (50pts): Extend (or completely rewrite) the given implementation to support the following:

 

    Persistence: When mounting your filesystem, please give the name of a file.  The filesystem should be stored, in its entirety, inside this file, so that you can unmount and remount the filesystem without losing work.

 

 

  Part 2 (40pts): Add the following:

 

     

    Directories: The current filesystem is flat: all files are in the root directory.  Extend the code so that you can have directories within directories, without a bound on the maximum depth.

    Permissions: The current filesystem has incomplete support for read/write/execute permissions.  Please update this.

 

 

 

  Part 3 (10 pts):  Add the following:

 

     

 

    Large File Support: The current filesystem caps file sizes at 64KB.  Create a mechanism (such as inodes, FAT, or some other option of your choosing) so that files can be at least 64MB (or larger, if you wish).

 

 

 

  Part 4 (Bonus 10pts): Make your system robust:

 

 

 

    Interactivity: One should be able to run a simple sequence of instructions from within emacs, using your filesystem, and have everything work correctly.

    Robustness: One should be able to run 'make' to build your code from within  your filesystem.

 

 

 


 
Additional Information: http://www.cs.nmsu.edu/~pfeiffer/fuse-tutorial/

 

 

Note: Homework is collected at the beginning of class on the due date.