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ありそうで無かったシリーズだ。
— nekomatu (@nekomatu) December 21, 2020
XFSはv4サポートを今後やめる計画したけど、このフラグはv5から次に備えて、カーネルサイドでフラグが立ってたらメッセージ出してEFSCORRUPTEDを返すもの。https://t.co/YVkZntduyq https://t.co/BNfjXCZphm
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 が返ってくるみたいです。
EFSCORRUPTEDってなんぞ?と思ったら、define EFSCORRUPTEDEUCLEAN/* Structure needs cleaning */ らしいhttps://t.co/RM6ggv1ToQhttps://t.co/2CSuFCgyUE
— nekomatu (@nekomatu) December 21, 2020
昔の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 件のコメント:
コメントを投稿