TOP
«
»

istgt (iSCSI target) 20090314版 for FreeBSD 7.x with ZFS

更新>istgt 2009/3/23版

MCS接続における既存セッションの取得方法に問題がありました。
調査した所、最初のセッション構造体の設計時点ですでに問題がありました。
TSIHが同一になるのはデーモン起動時もしくは同数の接続・切断が行われた時
なので修正版を再起動した場合に発現する可能性がありました。

原因:
既存セッションの検索時にポータルタグとイニシエータポート
(イニシエータ名+ISID)とTSIHのみチェックしていた為

影響を受ける環境:
o MCS接続を利用して、かつ同一イニシエータから同一ポータルグループに
2個以上の接続があり、かつTSIHが同一の場合

影響を受けない環境:
o MCSを利用していない場合
o 同一ポータルグループに複数のターゲットを定義していない場合
o 同一イニシエータで1接続(1セッション)のみの場合

さらに気が向いたのでNetBSDではどんなものかと見てみた。
NetBSD 5.0 RC2 i386では
srandomdev
pthread_yield
の関数が存在しないですね。
コンパイルすらできないのは悔しいので、修正してみた。
configureを最初から使ったのは正解だったみたいだ。
NetBSDへの移植もすごい楽だった。
CAMがない場合にパススルーデバイスをサポート外にするようした。

実際に試してみたら、セッションロックのミスを発見!
二重ロックした上にエラー時に解放忘れてる(汗)
せっかくなので、問題になりそうな部分も修正。
20090313をNetBSD用に改善したものをFreeBSD側にマージして修正。

これでCAMを使っているパススルーデバイスを除くデバイスに対して、
少なくともファイル形式はNetBSD 5.0 RC2 i386でも動作する。
もちろん動作検証していないので、利用する時は自己責任でよろしく。
むしろNetBSDはiscsi-targetが最初から入っているからわざわざ外部に持つ意味ないよね。

istgt (tarball): istgt-20090314.tar.gz
更新版をご利用ください。

作成方法:

# cd /path/to/work
# tar zxf /path/to/istgt-20090314.tar.gz
# cd istgt-20090314
# ./configure
# make
# make install
# make install-doc

デーモンの再起動方法:

# /usr/local/etc/rc.d/istgt restart

MD5 (istgt-20090314.tar.gz) = 1de82ab37a420332cc2bd9e295de120a
SHA256 (istgt-20090314.tar.gz) = 1f75eaa2e9152257a16e94b250aff3302e076e03a6ccc4ce9cb749bbff9f688e

主な修正点:
同一のポータルタグ、イニシエータからMCS接続した時の問題を修正しました。
CAMライブラリがない場合もコンパイルできるように修正しました。
NetBSDに存在しない関数を置き換えました。

タグ: , , , , ,

コメントをどうぞ