Coder Social home page Coder Social logo

filesystem's Introduction

Project 2: User-Level File System (FAT Implementation) Written by Adam Olgin and William Dyer

Our Approach

  • Our file system is a single-level directory implementation of a FAT File System
  • We make use of global variables in 3600fs in order to have a consistent pointer to the vcb, dirents, and fatents
  • We have broken out some helper functions into 3600fshelpers.c
  • This implementation uses FUSE version 2.6.

Using the Make File

  • 3600fs and 3600mkfs may be compiled by running

    make

  • Tests may be run by running. Note that this will also compile the code and format disks.

    make test

  • In order to clean-up all associated executables and logs, run

    make squeaky

How to Use this File System

You should first compile everything by running

make

You should then create the disk by running

./3600mkfs

This will create a empty, formatted disk of size blocks

Finally, you'll attach your disk to the real filesystem by running

./3600fs -s -d

This will make your disk appear mounted at the local fuse-dir directory (the actual directory and its contents will be hidden as long as your process is running). Any file operations (create/delete files, read/write data will be redirected to the various vfs functions in the 3600fs.c file).

In order to navigate and use the file system, you must open up another terminal and access it through there. Debugging information will show up in the original terminal that you are running the file system in.

In order to unmount the filesystem, make sure you are not in . Then, run

fusermount -u

Using the Make File

  • 3600fs and 3600mkfs may be compiled by running

    make

  • Tests may be run by running

    make test

  • In order to clean-up all associated executables and logs, run

    make squeaky

Challenges Faced

  • I/0 Error when using readdir
  • I/0 Error when reading/writing
  • Many 'X's showing up at the end of file when reading
  • Optimizing the file system

Features/Properties

  • Support for up to 150 files // Depending on how the implementation goes, need to change this
  • Ability to mount a file system and then create, read from, write to, move/rename, and delete files.
  • Currently is only a single-level directory file system. There is no multi-level directory support.
  • File names may be up to 52 characters in length
  • Files may be of arbitrary size (up to the size of the total space available for storage)
  • Basic file metadata (i.e. owner, group, permissions, filesize, create/modify/access times, etc.) supported
  • Uses a blocksize of 512 bytes

Testing

We tested our code using fprintf statements in each function so we could so when each function was called.

We also used gdb while running specific commands so as to run through how our functions were actually working.

Lastly, we used the supplied test script to check whether we were passing the required tests or not.

filesystem's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.