2020年12月28日月曜日

XFSv5にneedsrepairフラグが linux v5.11 から入りました

Linux 5.11 XFS Will Flag File-Systems In Need Of Repair https://www.phoronix.com/scan.php?page=news_item&px=Linux-5.11-XFS-Needs-Repair

needsrepairとは

Merge tag 'xfs-5.11-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux

> - Introduce a "needsrepair" "feature" to flag a filesystem as needing a pass through xfs_repair. This is key to enabling filesystem upgrades (in xfs_db) that require xfs_repair to make minor adjustments to metadata.
補足事項:コミットメッセージが「Introduce a "needsrepair" "feature"」となっていますが、フィーチャーのほうにダブルコーテーションは不要で「Introduce a "needsrepair" feature」の間違いな気がします。

冒頭に貼ったPhoronixさんの記事でユースケースを含めて説明されています。
端的には、カーネル側が、ユーザランド側でxfs_repairコマンドを走らせてほしい何かに遭遇した時にスーパーブロック(sb)にあるこのフラグをセットとエラーメッセージを表示させマウントを失敗させるものです。
これは単純なエラーだけでなく、2038年問題のような条件も想定しているようです。

リペアを要求したいシーンというのは昔からあったのではないかという気がするのですが、このような形で導入されるのは面白いなと思ってブログに書いてみました。

肝となるコミットはこちらです。
xfs: define a new "needrepair" feature https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=80c720b8eb1c780

今のところ、このフラグがセットされるコードは存在せずにチェックだけ行うようになっていました。

nekomatu@DESKTOP-HQVSMDQ:~/git/linux$ git grep _NEEDSREPAIR fs/xfs/libxfs/xfs_format.h:#define XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR (1 << 4) /* needs xfs_repair */ fs/xfs/libxfs/xfs_format.h: XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR) fs/xfs/libxfs/xfs_format.h: (sbp->sb_features_incompat & XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR);

なお、引っかかるとユーザランド側には EUCLEAN が返ってくるみたいです。

昔のXFSに関する記事

XFSv5 はkernel3.15 + xfs_progs 3.2.0以上で対応 https://nekomatu.blogspot.com/2014/07/xfsv5-kernel315-xfsprogs-320.html

Ubuntu16.04(xenial)でフォーマットしたXFSはXFSv5なので、Ubuntu14.04(trusty)ではマウント出来ない。 read-only は可能 https://nekomatu.blogspot.com/2016/06/ubuntu-trusty-xfsv5.html


0 件のコメント:

コメントを投稿