毎日コードリーディング: 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-g8b308f96484e の fs/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_fsync、filemap_splice_read など)が登録されています。そのため、少なくともこの file.c には、通常ファイルの読み書きに関する ADFS 独自の実装がほとんどないように見えます。
同じファイルには、次の定義もあります。
const struct inode_operations adfs_file_inode_operations = {
.setattr = adfs_setattr,
};
一方、setattr には adfs_setattr という ADFS 固有の名前を持つ関数が登録されています。今回は file.c だけを読むため、具体的な処理は追わずにここまでとします。
今日は軽めに、ここまでです。ADFS については、もう少し掘っていこうと思います。