Skip to content

Repository files navigation

Persistent Simple File System (PSFS)

PSFS is an on-disk EXT1 based persistent filesytem implementation. It supports both file and directory based operations.

Data Structures

/* Structure for superblock */typedefstructsuper_block {
uint32_tmagic_number; // File system magic numberuint32_tblocks; // Number of blocks in file system (except super block)uint32_tinode_blocks; // Number of blocks reserved for inodes == 10% of Blocksuint32_tinodes; // Number of inodes in file system == length of inode bit mapuint32_tinode_bitmap_block_idx; // Block Number of the first inode bit map blockuint32_tinode_block_idx; // Block Number of the first inode blockuint32_tdata_block_bitmap_idx; // Block number of the first data bitmap blockuint32_tdata_block_idx; // Block number of the first data blockuint32_tdata_blocks; // Number of blocks reserved as data blocks
} super_block;
/* This is the structure for inodes*/typedefstructinode {
uint32_tvalid; // 0 if invaliduint32_tsize; // logical size of the fileuint32_tdirect[5]; // direct data block pointeruint32_tindirect; // indirect pointer
} inode;
/* This is the structure written to directories */typedefstructchild {
intvalid; // valid or notinttype; // directory or filecharname[MAX_FILENAME]; // Maximum length of a directory/file nameintlength; // length of the directory / file nameintinumber; // inode no of the directory / file
} child;

API

intformat(disk*diskptr);
intmount(disk*diskptr);
intcreate_file();
intremove_file(intinumber);
intstat(intinumber);
intread_i(intinumber, char*data, intlength, intoffset);
intwrite_i(intinumber, char*data, intlength, intoffset);
intfit_to_size(intinumber, intsize);

About

This repository contains the implementation of a simple file system with persistant file-based storage

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages