リカバリモードの処理を改善しました。
ターゲットの消失が一時的に起きても依然のように即パニックになる可能性が
ほぼなくなったと思います。
現在はCAM用mtxとタスク用mtxの取得順序の問題で、根本的なレース状態の
解決にはなっていません。今後の検討課題です。
CAMをロックしたままタスク用mtxをmsleepで待ちたいです。
根本的にこのロジックがダメなのでしょうか?
カーネルランドに詳しい人で、もしここを見ている人がいたら教えてください(切実)
作成・アップグレード方法:
# cd /usr/src
# tar xvf /path/to/iscsi-2.2.4.tar.gz
# tar xvf /path/to/isboot-0.1.3.tar.gz
# make buildkernel
# make installkernel
or
# cd /usr/src/sys/modules/iscsi/isboot
# make obj
# make depend
# make clean
# make all
# make install
インストール後に、新モジュールを適用する為にサーバを再起動してください。
ログで iSCSI boot driver version 0.1.3 が表示される事を確認してください。
主な修正点:
セッションリカバリの処理方法を改善しました。
ソケット消失時に処理がストールする事があったのを修正しました。
ダウンロードリンク:
http://www.peach.ne.jp/archives/isboot/isboot-0.1.3.tar.gz
ダウンロードリンク(for testing purpose only):
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-amd64-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-7.3-RELEASE-i386-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-amd64-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/FreeBSD-8.1-RC1-i386-isboot-0.1.3.iso
http://www.peach.ne.jp/archives/isboot/demo/unionfs-mkisboot.sh