Giter Site home page Giter Site logo

ext2cc's Introduction

ext2cc

An "Ext2-like" filesystem for CC. Primarily for having a single filesystem across multiple floppy drives, or for OSes.

How it works

Abstraction layers

Inodes

Ext2CC Ext2 CC uses inodes(https://en.wikipedia.org/wiki/Inode) to store metadata, what blocks the file is on, and what directorieS, yes, that S was no accident. One file can be in multiple directories. Do note that the file's contents themselves are NOT stored in the inode. Those are stored in blocks.

Blocks

Blocks in Ext2CC share little in common with real-world blocks. First of all, each block is actually just a file on CC's actual file system(same for the inode), second of all, they are dynamically spaced, and third of all, 1 partition can have blocks on multiple drives. They are to real life blocks as lua tables are to C arrays.

Directories

Directories are rather simple. They're a table that look like this:

{

    [".yournotsosecretfile"] = 3,

    ["folder"] = 4,

    ["Folder"] = 5,

}

(yes, Ext2CC is case sensative)

So, what that is is the file name associated with the inode number. So when I go to look for "/folder/file", Ext2CC starts off looking in the root file(which is always at inode #2), finds that "folder"'s inode is 4, looks in folder, and then finds that file's inode number is 6. Note that the file contents are NOT stored in the inode, they are in the blocks. I simplified a bit.

Clarification/misc

The root folder is at_inode_2, not block 2.

File names are_not_stored in the inode.

To find a file, you must always start at the root folder and find the next folder leading to the file, till you're at the file

Folders are files.

Inode & folders are saved as a serialized table

License

See the file called LICENSE at the root of this git.

ext2cc's People

Contributors

ai221 avatar

Stargazers

Filip avatar

Watchers

James Cloos 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.