Skip to main content

fs_ext4/
lib.rs

1//! ext4rs — pure-Rust ext4 filesystem driver.
2//!
3//! Exposes a stable C ABI (`fs_ext4_*`) via [`capi`] so FFI consumers
4//! (Swift/C/Go/…) can link `libfs_ext4.a` and `#include "fs_ext4.h"`.
5//!
6//! Architecture (read-only Phase 1):
7//! - [`block_io`] — abstract trait for reading device blocks
8//! - [`superblock`] — parse + validate the on-disk superblock
9//! - [`features`] — feature flag inventory (COMPAT/INCOMPAT/RO_COMPAT)
10//! - [`bgd`] — block group descriptor parsing
11//! - [`inode`] — inode + extra fields parsing
12//! - [`extent`] — extent tree traversal (leaf/internal nodes, uninitialized extents)
13//! - [`dir`] — directory entries (linear and HTree)
14//! - [`hash`] — htree hash functions (legacy / half_md4 / tea)
15//! - [`fs`] — top-level filesystem handle, file/dir lookup, read API
16//! - [`capi`] — C ABI exports matching `include/fs_ext4.h`
17
18// `doc_lazy_continuation` disagrees with the existing numbered-list
19// indentation in several module preambles; the content is fine.
20#![allow(clippy::doc_lazy_continuation)]
21
22pub mod acl;
23pub mod alloc;
24pub mod bgd;
25pub mod block_cache;
26pub mod block_io;
27pub mod casefold;
28pub mod checksum;
29pub mod dir;
30pub mod ea_inode;
31pub mod error;
32pub mod extent;
33pub mod extent_mut;
34pub mod features;
35pub mod file_io;
36pub mod file_mut;
37pub mod fs;
38pub mod fs_core_bridge;
39pub mod fsck;
40pub mod hash;
41pub mod htree;
42pub mod htree_mut;
43pub mod indirect;
44pub mod indirect_mut;
45pub mod inline_data;
46pub mod inode;
47pub mod jbd2;
48pub mod journal;
49pub mod journal_apply;
50pub mod journal_writer;
51pub mod mkfs;
52pub mod path;
53pub mod superblock;
54pub mod transaction;
55pub mod verify;
56pub mod xattr;
57
58// C ABI exports — surface defined in `include/fs_ext4.h`.
59pub mod capi;
60
61pub use error::{Error, Result};
62pub use fs::Filesystem;
63pub use superblock::Superblock;