Read-only file system driver for MemoryFS 1. Implementation should be able to deal with long file names 2. It has to support the getattr, readdir, statfs and read FUSE file system operations 3. You can use the sample code Provided in Courses portal Read-Write file system driver for MemoryFS 1. Impementation should be able to deal with long file names 2. It has to support following operations • Directory operations: readdir,mkdir,rmdir • File operations: open,read,write,truncate,access,close • Meta operations: getattr,statfs,symlink,link,unlink,rename etc. 3. You should provide an option before mounting FS that whether it is to use RAM or use Swap space. 4 Running and Testing Development environment To build the code, you will need the FUSE library in user land. On a Linux distribution that supports deb packages, such as Debian and Ubuntu, you can install it by the following command: % sudo apt-get install libfuse2 libfuse-dev Mounting The supplied skeleton already performs basic FUSE argument parsing. To mount the file system, run the application with file system and destination mount point as arguments: % mkdir tmp % ./MemoryFS_r -f tmp | ./MemoryFS_rw -f tmp -usage swap/ram % ls -l tmp P.S: above MemoryFS r and MemoryFS rw are name of executable, and -f option allows fuse to stay in foreground, which is better for debugging. -usage option is for which VMA is to be used. Unmounting In case your file system does not shut down properly, you might experience an error message, such as ls: cannot access tmp: Transport endpoint is not connected. In this case you will have to unmount the file system manually: % fusermount -u -z tmp Testing We provide a compressed sample file to test, which will unzip in MemoryFS, and also we will run dd to allocate files of bigger sizes to check how you handle swap and RAM. So a testing file can go from 1MB to 1 GB. You can test your implementation with standard mount by comparing the structure of the mounted sample file system. You are also encouraged to use your custom designed shell to run the commands in the given filesystem space. Try out basic commands like cat, ls, echo etc. and most of the time these commands should work