Skip to main content

Module fs

Module fs 

Source
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
ファイルが占めるセクタ範囲を「開始セクタ + 連続数」で表す。
FileMetadata
ディスク上のファイルメタデータ (サイズ 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 が分割後も全キー上書き整合を保つこと(分離キー上書きで部分木が壊れる回帰の捕捉)、 ②二重化レイヤがプライマリ破損をミラーから自己修復し、両系破損時のみ失敗すること、を検証する。