青木@名古屋です。

On Tue, 27 Feb 2024 19:42:35 +0900 (JST)
Hiroki Sato <h...@allbsd.org> wrote:

> 佐藤です。
> 
> Shigeki Yoshida <sh...@iamas.ac.jp> wrote
>   in <CAOL1=qjgn_dfv9k6gsnhnxhnjar92d9zpy8jbmwx5nxpkpb...@mail.gmail.com>:
> 
> sh> 最近 12.4 から 13.2 にアップグレードしたのですが、2, 3 台目の HDD がマウントできなくなりました。
> sh>
> sh> root@shige1:/etc # mount /dev/ada1s1e /mnt
> sh> mount: /dev/ada1s1e: Invalid fstype: Invalid argument
> sh>
> sh> この時 messages には以下のようなメッセージが10回くらい繰り返し書かれています。
> sh>
> sh> Feb 26 17:38:56 shige1 kernel: UFS1 superblock failed: fs->fs_old_cpg (89)
> sh> != 1
> sh> (1)
> sh> Feb 26 17:38:56 shige1 kernel: UFS1 superblock failed: fs->fs_old_spc
> sh> (4096) !=
> sh> fs->fs_fpg * fs->fs_old_nspf (364544)
> sh> Feb 26 17:38:56 shige1 kernel: UFS1 superblock failed: fs->fs_old_ncyl
> sh> (38159) !
> sh> = fs->fs_ncg (429)
> 
> 上記のメッセージは、UFS のスーパーブロックに書かれている情報に
> 矛盾があることを示しています。13.2 以降では情報のチェックが厳しくなったため、
> 今までマウントできていたものがマウントできなくなることがあります。
> 
> 表示されている fs_old_cpg や fs_old_spc 等でマウントできなくなる症状は、
> 次の PR でも報告されています。
> 
>  https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264450#c21
> 
> FreeBSD の古いリリース(9 以前)で作成された UFS1 の一部に、
> 矛盾したパラメータが設定されているケースがあることが分かっています。
> 
> しかし、これらのパラメータは実際にはほぼ使われておらず、矛盾した値であっても
> マウントして読み書きする使い方で支障が生じることはありません。
> PR にも経過が書かれていますが、値を厳密にチェックしても害のほうが大きいため、
> 15-CURRENT では 2/20 でチェックを緩和する変更が入りました。
> 今後の 13, 14 系にも、同じ変更が入ります。
> 
> ファイルシステムパラメータの値の矛盾を修正すれば良いのですが、
> 手動で直接バイナリデータを変更するくらいしか手段がありません。
> fsck 等のツールでパラメータを自動修正することはできませんし、
> カーネルが行なっているエラーチェックを回避する方法も、残念ながら用意されていません。
> 13, 14 系にチェック緩和の変更が反映されても、現状で厳しいチェックを
> 行なっている 13.2R 等は、この問題に対応する Errata Notice が出るまで使えないままです。
> 
> パラメータに矛盾があるファイルシステムになってしまっていることは
> 確かですから、面倒でも新しくファイルシステムを作成し、
> dump + restore 等で中身を移すのが将来的にも安心かと思います。
> 
> -- Hiroki

やっぱりそうでしたか。 パーティションテーブルの問題ではなさそうなので
fsckあたりを追っかけて何らかのOPTION等無いか探しかけて手に負えなくなって
断念していました。

件の修正はこれ[1]でしょうか? stable/13へのMFCを経てのreleng/13.3への
MFSは13.3-RELEASEに間に合うのでしょうか?

自力でsrcから更新できて、このコミットを手動でcherrypickして問題ないなら
待たずに再構築してしまうのも手ですが。

# 私の場合、git cherrypickを使わずcgitの当該コミットのページで
# author行から末尾のボーダー直前までをエディタにcopy&pasteした
# ものをパッチとして当て、次のsrcの更新時はgit pullの前にgit stash
# しておき、更新後git stash applyで戻しています。 MFCされたものが
# あればgit stashの前にpatch -Rで切り戻すのですが、たまに見落として
# conflictの手修正を迫られます。 ならローカルで独自のbranch切って
# 処理しろと言われそうですが、未だgitの仕組みを把握しきれていないので
# 手許のcommitログが手違いで本家と矛盾する状況の方が恐いのです。
# n番号がズレたりしたら他の方との話が無茶苦茶になるので。

[1]
https://cgit.freebsd.org/src/commit/?id=b241767f8ef38f9ca7c109fe2fccd11ccbfaa4f0

-- 
青木 知明  [Tomoaki AOKI]    <junch...@dec.sakura.ne.jp>

Reply via email to