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':






  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.