diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-28 09:23:05 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-12-28 09:24:36 +0100 |
| commit | 9012c6fb7c040be92aa8f950bad4f49c5be264d8 (patch) | |
| tree | 581b9aaf6f372bf62c81d9626c63e835ea65736c /docs/tex/nefs.tex | |
| parent | 42d321d36c8922de043bb65693fd427c51f89f14 (diff) | |
feat! rename docs to doc.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'docs/tex/nefs.tex')
| -rw-r--r-- | docs/tex/nefs.tex | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/docs/tex/nefs.tex b/docs/tex/nefs.tex deleted file mode 100644 index 37e43d13..00000000 --- a/docs/tex/nefs.tex +++ /dev/null @@ -1,125 +0,0 @@ -\documentclass{article} -\usepackage[a4paper,margin=1in]{geometry} -\usepackage{listings} -\usepackage{xcolor} -\usepackage{amsmath} -\usepackage{hyperref} -\usepackage{longtable} -\usepackage{titlesec} -\usepackage{fancyhdr} -\usepackage{caption} -\usepackage{graphicx} - -\definecolor{codegray}{gray}{0.95} -\lstset{ - backgroundcolor=\color{codegray}, - basicstyle=\ttfamily\small, - breaklines=true, - frame=single, - tabsize=4, - language=C++, - showstringspaces=false -} - -\title{NeFS: New Extended File System Specification} -\author{Amlal El Mahrouss} -\date{2025} - -\begin{document} - -\maketitle - -\section{Overview} -NeFS (New Extended File System) is am embedded file system designed to operate over low-level block storage (AHCI/ATA) with a modular architecture. It supports catalogs (like files or directories), forks (similar to macOS data/resource forks), and a formatting mechanism using EPM (Extended Partition Map). - -\section{Key Components} - -\subsection*{Mountpoint and Drive Access} -\begin{itemize} - \item `kMountpoint`: Global mountpoint interface to access drives. - \item `DriveTrait`: Interface used to abstract block-level access. -\end{itemize} - -\subsection*{Core Structures} -\begin{longtable}{|l|p{11cm}|} -\hline -\textbf{Structure} & \textbf{Purpose} \\ -\hline -NEFS\_FORK\_STRUCT & Represents a data fork (stream of bytes attached to a catalog). \\ -\hline -NEFS\_CATALOG\_STRUCT & Represents metadata of a file or directory, including fork pointers. \\ -\hline -NEFS\_ROOT\_PARTITION\_BLOCK & Metadata describing a NeFS partition. \\ -\hline -EPM\_PART\_BLOCK & EPM descriptor for bootable partition support. \\ -\hline -\end{longtable} - -\subsection*{Key Functions} - -\begin{itemize} - \item \texttt{CreateCatalog()} — Creates a file or directory catalog. - \item \texttt{CreateFork()} — Adds a fork to a catalog, with LBA linking. - \item \texttt{FindCatalog()} — Finds a catalog by traversing sibling links. - \item \texttt{FindFork()} — Locates a fork by name under a catalog. - \item \texttt{WriteCatalog()} — Writes a fork's data to the correct offset. - \item \texttt{Format()} — Initializes a NeFS + EPM partition on a drive. - \item \texttt{ReadCatalog()} — Reads back a fork's data. - \item \texttt{RemoveCatalog()} — Marks a catalog as deleted and updates partition metadata. -\end{itemize} - -\section{Design Overview} - -\subsection*{Fork Management} -Forks are chained using `NextSibling` pointers and are scanned linearly to find unallocated entries. Forks contain: -\begin{itemize} - \item Fork name - \item Catalog name - \item Flags (e.g., created/deleted) - \item Data size and offset - \item Sibling pointers (Next, Previous) -\end{itemize} - -\subsection*{Catalog Management} -Catalogs act like files or directories. Each has: -\begin{itemize} - \item Name and type (file/dir) - \item Data and resource forks - \item Status flags - \item Chaining via sibling pointers -\end{itemize} -Catalog creation attempts to find a parent first, then finds a free block to allocate the new catalog structure. - -\subsection*{Partition Formatting} -The `Format()` function sets up the NeFS partition and optionally writes an EPM descriptor if bootable. It: -\begin{enumerate} - \item Verifies the drive - \item Initializes partition metadata (sector size, catalog start, etc.) - \item Writes the root directory -\end{enumerate} - -\section{Error Handling} -Errors are written to a global error register using `err\_global\_get()`. Common codes include: -\begin{itemize} - \item \texttt{kErrorDiskIsCorrupted} - \item \texttt{kErrorFileExists} - \item \texttt{kErrorFileNotFound} - \item \texttt{kErrorUnimplemented} -\end{itemize} - -\section{Limitations and Notes} -\begin{itemize} - \item No read/write locking or access concurrency. - \item Assumes in-memory buffers for fork writing. - \item Seek/Tell operations are not implemented — only bulk read/write. - \item Supports one mountpoint at a time. -\end{itemize} - -\section{Future Work} -\begin{itemize} - \item Implement streaming I/O with Seek/Tell. - \item Support multiple mountpoints or drives. - \item Improve metadata journaling and recovery features. -\end{itemize} - -\end{document} |
