Expand description
SylFS: Copy-on-Write・ラベル指向の頑健なファイルシステム。
特徴(spec/README.md「ファイル管理」参照):
- Copy-on-Write: 書き込みは新しいセクタへ行い、電源断でも最後の整合状態へ戻れる
- 2 重化: 全データをミラーリングし、片系故障時は自動復旧(
block::MirroredBlockDevice) - B-tree インデックス(
btree::CowBTree): ラベル・名前・日時の高速検索 - エクステント方式(
Extent): NTFS の “runs” 同様、連続領域を1エントリで表現し ファイルサイズの実質上限を撤廃(2026-07-26 導入) - チェックサム(
checksum)による自己修復
サブモジュール: storage_policy(保存方針), block(ミラー化ブロックデバイス),
btree(COW B-tree), checksum(CRC 検証)。
Modules§
- block
- btree
- checksum
- storage_
policy - ストレージの用途別振り分けポリシー(純粋ロジック)。
Structs§
- AppAsset
- 自動生成されたアプリケーションのアセット構造体定義
- Extent
- ファイルが占めるセクタ範囲を「開始セクタ + 連続数」で表す。
- File
Metadata - ディスク上のファイルメタデータ (サイズ 168 バイト)
- Superblock
- ディスク上の Superblock 構造 (サイズ 24 バイト)
- SylFS
Constants§
- BITMAP_
START_ 🔒SECTOR - BITS_
PER_ 🔒BITMAP_ SECTOR - 1 ビットマップセクタが管理できるセクタ数(508 バイト × 8 ビット)。
- EXTENTS_
PER_ 🔒OVERFLOW_ SECTOR - 溢れたエクステントを格納する 1 セクタに入るエントリ数。 先頭 8 バイトを「次の溢れセクタ番号」に使い、残りをエントリに充てる。
- MAX_
INLINE_ 🔒EXTENTS - メタデータ 1 セクタに直接持てるエクステント数。 filename(128)+label(64)+size(8)+extent_count(4)+overflow(8)+16*N <= 508 → N <= 18。
- SUPERBLOCK_
SECTOR 🔒 - SYLFS_
MAGIC
Statics§
- APP_
ASSETS - プリインストールするアプリケーションのアセット一覧
- BUILD_
GIT_ HASH - BUILD_
TIME - BUILD_
VERSION - FS_
INSTANCE 🔒 - FS_LOCK
- グローバルなファイルシステムインスタンスを取得
Functions§
- bitmap_
sectors_ 🔒for - フォーマット時のビットマップ領域サイズ(セクタ数)を、実際のデバイス容量から求める。
- fnv1a_
128 - force_
release_ locks - パニックしたコアが保持していた FS ロックを取り上げる。 他コアが正当に持っているロックには触れない。
- format_
device - デバイスを SylFS としてフォーマットし、書き込んだスーパーブロックを返します。
- get_fs
- is_
mounted - ファイルシステムがマウント済みかどうか。
- mount
- ファイルシステムを microSD または RAMDisk 上にマウント(初期化)します。 未フォーマットの場合は自動的にフォーマットを実行します。
- read_
file - ファイルを読み込んでバイト列を返すヘルパー (WiFiファームウェアロード等に使用)
- selftest
- SylFS 自己テスト(CI スモークの判定マーカー
FS_SELFTEST)。 グローバル FS には一切触れず、専用の RAM デバイス上で ①COW B-Tree が分割後も全キー上書き整合を保つこと(分離キー上書きで部分木が壊れる回帰の捕捉)、 ②二重化レイヤがプライマリ破損をミラーから自己修復し、両系破損時のみ失敗すること、を検証する。