[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pbsd-mg2] yet another virtual alias problem?



virtual aliasが原因で誤動作していると思しき現象を見つけました。

raw deviceで読み出した内容が実際にデバイスに書かれている内容と一致しない
場合があります。具体的には、こんな現象として現れます。

    autoboot(-aオプション指定)時の最初のfsckで、filesystemのmagic number
    が変だと言われる

他にも、dumpfsでraw deviceを指定した時にも同様の現象が見られることがあり
ます。

physio()の中でvmapbuf()を使ってユーザプロセスのアドレス空間に対応してい
る物理ページをカーネル仮想空間にマップしているようなのですが、この時に
virtual aliasに対する配慮がなされていないように思います。

試みに、vmapbuf()/vunmapbuf()でcacheをflushするようにしたところ、前述の
異常現象はなくなりました。

raw deviceのI/Oが信用できないとすると、fsckなども正常に実行できないはず
なのでご注意ください。fsckで修復しているつもりが破壊していたなんてことに
なりかねないので。

もう少し良く調べて、

	virtual aliasの問題である
	修正方法が正しい

という自信が持てるようになったらソースの修正はcommitします。

P.S	disklabel, fdiskは、マシン依存の部分があり、それらをhpcmips用に
	対応させないと正しく動かないと思われます。こちらもご注意ください。

篠原