毎日コードリーディング: ADFS の file.c

ここでは、毎日のコードリーディングで考えたことや、得られた知見を書いていきます。

Linux の fs/ 直下にある 78 ディレクトリを巡ります。最初に取り上げるファイルシステムは ADFS です。今回は fs/adfs/file.c を見ていきます。初めて聞くファイルシステムです。結構軽そう。

ADFS は、Linux の公式ドキュメントでは Acorn Disc Filing System と紹介されています。何が何だかよくわからないですね。

ADFS とは、Acorn Computers のコンピュータで使われたファイルシステムで、Linux の ADFS 実装は RISC OS の FileCore 形式を扱うそうです。ここまで見ても何が何だか分けわかめ状態で発狂しそうなので、詳しい歴史や仕組みは、また別の記事にまとめようと思います。

ドキュメントはこちらです。

今回は、2026 年 8 月 1 日時点で手元にチェックアウトしていた Linux v7.1-2727-g8b308f96484efs/adfs/file.c を読みました。

adfs_file_operations を見ると、次のようになっています。

const struct file_operations adfs_file_operations = {
	.llseek        = generic_file_llseek,
	.read_iter     = generic_file_read_iter,
	.mmap_prepare  = generic_file_mmap_prepare,
	.fsync         = simple_fsync,
	.write_iter    = generic_file_write_iter,
	.splice_read   = filemap_splice_read,
};

struct file_operations は、VFS が開かれたファイルを操作するときに、どの関数を呼ぶかを登録する表です。ADFS の adfs_file_operations には、Linux kernel が用意している汎用関数(generic_file_*simple_fsyncfilemap_splice_read など)が登録されています。そのため、少なくともこの file.c には、通常ファイルの読み書きに関する ADFS 独自の実装がほとんどないように見えます。

同じファイルには、次の定義もあります。

const struct inode_operations adfs_file_inode_operations = {
	.setattr	= adfs_setattr,
};

一方、setattr には adfs_setattr という ADFS 固有の名前を持つ関数が登録されています。今回は file.c だけを読むため、具体的な処理は追わずにここまでとします。

今日は軽めに、ここまでです。ADFS については、もう少し掘っていこうと思います。