Project #2: File Systems (zip
file) Due April 7th
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.