ABORT_TASKからエラーリカバリーができなくなる可能性がある問題に
対応するため若干の修正を加えました。
Ivan Vorasさんから提案とパッチを頂きましたので追加してみました。
istgt (tarball): istgt-20010125.tar.gz
作成方法:
# cd /path/to/work
# tar zxf /path/to/istgt-20100125.tar.gz
# cd istgt-20100125
# ./configure
# make
# make install
# make install-doc
デーモンの再起動方法:
# /usr/local/etc/rc.d/istgt restart
MD5 (istgt-20100125.tar.gz) = 1af4006dd185b2e2326a356ef17dc2cc
SHA256 (istgt-20100125.tar.gz) = 028dd131300d24b2c425543ef84805735a9361cac79437c829a5062f84532618
主な修正点:
内部でスレッド名を保持するようになりました。
実行待ちのタスクを強制終了させるフラグなどを追加しました。
スレッド条件待ち時間の最小を5秒まで短縮しました。
連絡が遅くなりましたが、istgt 20100125版が以下の環境で動作しました。
1) MacOS-X Leopard Server(Intel)
2) MacOS-X SnowLeopard(Intel)
今晩、MacOS-X Leopard Server(PowerPC)で動作確認する予定です。
MacOS-X Leopard Server(PowerPC)でも動作しました。
Global SAN iSCSIで、認証を使わなければDiskを認識しました。
ついでに質問です。
前提
istgtはMacOS-X (Leopard|snowLeopard) (Intel/PPC) とNetBSD 5.0(amd64)で動かしている
initiatorには、Global SAN iSCSI (MacOS-X snow Leopard(Intel))と、NetBSDのiscsifs(NetBSD/amd64) で動かした。症状は共通
1) どうもGlobal SAN iSCSIで認証がうまくいきません。うまくいっている人居ますか?
自分の設定を疑っていますが、どう直したものやら…
2) NetBSDのiscsifsでうまく接続出来ません。うまくいっている人居ますか?
これは本当に謎です。
ちなみに、-u を指定しないと、ユーザー名を指定しろと怒られます。
根は同じで、認証がうまくいっていないんじゃないかと思いますが。
>>>>> NetBSD 側 <<<< 256.
pid 1324:initiator.c:1980: ***ERROR*** param_text_parse_offer() failed
pid 1324:initiator.c:1813: ***ERROR*** initiator_cmd_t failed
pid 1324:initiator.c:642: ***ERROR*** login_phase_i() failed
pid 1324:initiator.c:1160: ***ERROR*** enqueue_worker: discovery_phase() failed (ignoring command)
>>>>> istgt側(istgt -D) /Console <<<<>>>> syslogには何も出てませんでした <<<<<
報告ありがとうございます。
1番は不明ですが、2番についてはお察しの通りで認証ができません。
理由はNetBSDの実装(イニシエータ)が長いパラメータ(CHAP認証の乱数)
を受取らないので認証ありでは接続が無理なのです。
istgtに限らず、認証データなどに長いものを要求するイニシエータと
NetBSDのターゲット間でも同様に接続できません。
NetBSDのターゲットとイニシエータしか使わないなら表面化しないから
きっと他の用途に使っている人が少ないのでしょうね。
回答、ありがとうございます。
内容は理解出来ました。
今まで、iscsifsで認証しか使ったことがないんですが、認証を使わずに接続する時のコマンドライン引数をご存知でしたら教えてください。
# もしかして、authsを削除するだけとかだったら情けないなぁ :-(
簡単にNetBSDのソースを見てみましたけど、
現状で接続するのは無理そうに見えます。
双方に修正が必要と思われます。
istgtは認証を使うのを優先で、なくてもOKなポリシーなので、
認証を使ってもいいと言われると優先して使っちゃいます。
(イニシエータ側が利用するものを提示します)
認証を切るという考えは想定していなかった為に設定変更できません(汗)
そしてNetBSDのシーケンス番号がistgtの期待しているものと違うらしく、
無修正では、そんな番号は使えません的にリジェクトしちゃいます。
pkgsrcに登録されたからには修正されるのは時間の問題かと思いますけど。
こちらでも時間があるときに調べてみます。
※追記:NetBSDのイニシエータはオーバーフローもアンダーフローも対応できていないようです。
ああ、そういうことなんですね。理解しました。
しかたがないのでNetBSD iSCSI-targetと組み合わせることにしのぐことにします。
しかし、Initiatorを何とかしないと行けませんねぇ。Userlandで動くInitiatorって許かにあるんでしょうかね。ほとんどの実装はkernel moduleだったりDevice Driverだったりするので、NetBSD-Xenでは使えない…