Link Search Menu Expand Document

Due by 11:59 PM on Sunday, Dec 06

Changelog

  • November 21, 2020: Add clarifications about layout
  • November 21, 2020: Initial version

Part II - Read/Write FUSE Driver

In Part II of this project, your task is to extend the driver from Part I to support writing to the filesystem. This includes adding support for all of the following to your filesystem driver:

  • Creating new files
  • Deleting existing files
  • Overwriting existing files with new data
  • Appending to the end of existing files
  • Renaming existing files

Your implementation of Part II of this assignment should directly extend your Part I driver. You will be using the same Git repository for Part II as you did for Part I (so there is no new link on Piazza to create a new repository).

Upon completion of Part II of the project, your filesystem driver should work much like any other filesystem in your VM. That is to say that you should be able to do things like listing the directory with ls; creating a new file with touch or any other tool that creates files; editing text files with tools like nano, vi, or emacs; deleting files with rm; moving files with mv; and so on.

In this part of the project, you will be expected to explore the FUSE documentation, examples, and code yourself in order to ascertain the functionality that you must implement.

Keep in mind that functionality that is not useful for this filesystem (such as creating or removing directories) may still require a small function to be written to signal that the operations are not allowed on the filesystem and return the appropriate error codes.

Once you have completed Part II of the project, please be sure to add a new tag to your git repository called “part2” containing all of your changes to create the new functionality.

Extra Credit - Read-only kernel driver

Like with Part I, upon completion of your FUSE driver for Part II, you may attempt to also add a Read/Write driver for filesystem as a kernel module. The same basic rules from Part I apply to this extra credit as well. Completing the writing portion of the extra credit kernel driver will allow you to earn up to 10% extra credit on this assignment. Thus, completing both the extra credit for Part I and for Part II can allow you to earn up to a total of 20% extra credit on this assignment. Please note that this extra credit applies to the grade on this project.

Refer to the “Notes on Extra Credit” section for some general notes about extra credit on this assignment.

If you wish to implement the extra credit for this assignment, please make a kernel directory in your project4 repository and put your kernel module source code in it and a Makefile with which to build the kernel module. You must also inform the TA that you have attempted the extra credit by mentioning this in your README file.

As this is extra credit on the assignment, you should expect the in-kernel driver to require a significant amount of effort. The TAs (and instructors) will offer no help on the extra credit portions of this assignment — you are on your own to figure it out. Please do not ask any questions specifically about the extra credit on Piazza, Discord, or by E-Mail.

You may work on the extra credit for Part II up until the final due date for Part II of the assignment. The TAs will not be checking for it until that time.