Linux 7.3がBtrfsのファイルシステムIDとgrub2起動を修正
Linux 7.2-rc1でのBtrfsの変更により、ファイルシステムID(FSID)が不安定になり、OpenConnectの鍵導出が壊れた。修正は10ファイルに及ぶ。
3 分で読めます

数字で見る
- Btrfs files changed in the merged pull
- 10
- lines added, against 13 removed
- 96
- kernel where the ID regression appeared
- 7.2-rc1
Linus TorvaldsがBtrfsの修正一式をLinux 7.3カーネルに取り込んだ。そのうち2件は、稼働中のマシンを壊した変更を元に戻すものである。1件はBtrfsが自身について報告する識別子を不安定にしていた。もう1件は一部のコンピューターが起動を完了できなくしていた。
BtrfsはLinuxに組み込まれたファイルシステムである。FedoraとopenSUSEの既定の選択肢であるため、ここでの後退はサーバーだけでなく普通のデスクトップにも届く。プルリクエストはBtrfsのメンテナーであるDavid Sterbaから出され、for-7.3-rc3-tagというタグが付いている。Phoronixは、この修正がリリース候補7.3-rc4に入ると報じている。
ファイルシステムIDが安定しなくなった理由
マウントされたファイルシステムはいずれもFSIDを報告する。FSIDはfile system identifier(ファイルシステム識別子)の略である。プログラムはこれを読み、あるファイルシステムを別のものと区別する。Sterbaのプルリクエストは最初の問題を"filesystem id stability on default configurations"と記している。
Phoronixによれば、この後退はLinux 7.2-rc1で入った。その時点から、既定の構成でBtrfsが報告するIDが変わり得るようになった。以前の値を保存していたソフトウェアは、その後に別の値を読むことになった。
プルリクエストは被害を直接名指ししている。"openconnect key derivation"である。OpenConnectは企業向けVPNのオープンソースのクライアントであり、NetworkManagerがその対応を同梱している。Phoronixは今回の不具合をこのVPN対応に結び付けている。鍵の一部が、突然変わる値から導かれていれば、その鍵はもう合致しない。
一部のマシンが起動しなくなった理由
2件目の修正は、Sterbaの言葉で"/dev/root detection for initramfs-less boot systems with grub2"を元に戻すものである。
initramfsは小さな一時的ファイルシステムである。カーネルは起動の早い段階でこれを読み込み、本当のルートファイルシステムを探すために使う。多くのディストリビューションはこれを同梱する。起動を速くするため、あるいは構成を簡素に保つため、これを省く構成もある。
initramfsがなければ、カーネルはどのデバイスがルートを持つのかを自力で判断しなければならない。Phoronixは、GRUB2で起動するBtrfsのルートファイルシステムでこの検出が失敗したと報じている。ルートファイルシステムを特定できないマシンは起動を終えられない。
プルに入っている残りの中身
このマージは10ファイルを変更し、96行を追加し、13行を削除する。Sterbaのメッセージは残りを通常の修正として記している。以下に、それぞれが触れる領域の平易な説明を添えて挙げる。
| プルに記された領域 | Btrfsのその部分の役割 |
|---|---|
| 圧縮インラインエクステント | ごく小さなファイルをメタデータ内に圧縮して格納する |
| Zonedモードのゾーン有効化 | 固定されたゾーン単位で書き込むドライブに対応する |
| チャンクアイテムの領域検証 | ストレージのチャンクを対応付ける記録を検査する |
| Verityアイテムの削除 | ファイル内容を検証するfs-verityのデータを片付ける |
| フリースペースツリーの再構築 | 空き領域の地図を作り直す際のエラーを扱う |
| Reflinkとホールパンチ | 参照によるブロック複製と、ファイル内の範囲の解放を行う |
| ブロックグループの走査 | 割り当て済みブロックの集まりをたどる処理を保護する |
| エラーメッセージ | カーネルログ出力の文言を訂正する |
変更されたファイルにはsuper.c、volumes.c、disk-io.c、inode.c、tree-checker.c、zoned.c、verity.cが含まれる。
開発者にとっての意味
FSIDは変わり得る値として扱うべきである。もし自分のコードがFSIDを保存し、カーネル更新をまたいで残ると期待しているなら、その前提はVPN利用者の本番環境で現に崩れた。識別子は都度読み直すのがよい。保存した値と食い違った場合の経路も用意しておきたい。
Btrfsをルートに用い、GRUB2の下でinitramfsを持たないマシンを運用しているなら、そこにLinux 7.2を展開してはいけない。このプルを含む7.3カーネルを待つか、initramfsを残して退避手段とするのがよい。Ubuntu 26.10はLinux 7.3の開発版を載せて出るため、自分のイメージがどのリリース候補を含むのかを、信頼する前に確かめてほしい。
最初の不具合にはより広い教訓がある。ユーザー空間が読める値はすべてインターフェースである。そう書いた文書が存在しなくても変わらない。そうした値を動かすカーネルの変更は、誰も試験を思いつかなかったソフトウェアを壊す。
出典
関連記事

Linux 7.4、UnixWareのブート用ファイルシステムBFSを削除
BFSのコード1,275行を削除するパッチがLinux 7.4に向けて待機しています。EFSとFreeVxFSが同じ理由で消えた、わずか1サイクル後のことです。

Linux 7.3-rc4公開、LLMが見つけたエラー処理の修正も
Linux 7.3-rc4が2026年9月20日に公開された。修正はドライバー、ファイルシステム、アーキテクチャにほぼ3等分され、Torvalds氏はLLM(大規模言語モデル)の貢献に言及した。

Linux 7.4のパッチ、テストでファイルオープンが39%高速に
43行のLinux 7.4向けパッチが、ファイルオープン時の余分なdentry(ディレクトリエントリ)参照を2つ削り、20コアのベンチマークを39%押し上げた。