この文書は、重要な問題について記載しています。

● gfarm 全体に関わる問題点

- Linux のいくつかのバージョンにおいて、/etc/nsswitch.conf で ldap を
  指定した場合、メモリーリークが発生する場合があります。
  gfmd, gfsd, gfarm アプリケーションなどすべてがこの問題の影響を受けま
  すが、特に gfarm2fs のプロセス・サイズの肥大が顕著です。
  この問題は、Gfarm のバグではなく、システム附属の nss_ldap パッケージ
  の問題です。

  問題が生じることがあると確認ディストリビューション:
	CentOS 5.4 with glibc-2.5-49.x86_64.rpm
	CentOS 5.5 with glibc-2.5-49.el5_5.7.x86_64.rpm	

  対策:
	nscd を起動しておけば、この問題を回避できるようです。

- Linux のいくつかのバージョンにおいて、/etc/nsswitch.conf で ldap を
  指定した場合、gfarm プログラムや gfsd がハングする場合があります。

  この問題は、Gfarm のバグではなく、システム附属のライブラリのバグです。
  具体的には、以下の条件全てが成り立つ場合に発生します。
  1. あるプログラムが fork(2) システムコールを呼び出す。
  2. そのプログラムが、fork(2) システムコールを呼び出す前に、getpwuid(3)
    のような、間接的に nss_ldap モジュールを呼び出す関数を呼び出す。
  3. そのプログラムの親プロセスと子プロセスの両方が、fork(2) システム
    コール呼び出し後に、そのような種類の関数を呼び出す。
  4. そのプログラムは、pthread ライブラリとリンクされている。
  この症状は Fedora Core 3, Fedora Core 5 および CentOS 4.4 で確認され
  ていますが、Red Hat 8 では確認されていません。

  対処予定:
	nss_ldap の開発元に関しては、下記のバグデータベースを参照して
	ください。
		http://bugzilla.padl.com/show_bug.cgi?id=271
		http://bugzilla.padl.com/show_bug.cgi?id=414

	具体的な解決策は、各 Linux ディストリビューション作成側に依存します。

	Fedore Core Linux に関しては下記のバグデータベースを参照して
	ください。
		https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=154314

	Red Hat Enterprise Linux に関しては下記のバグデータベースを参照して
	ください。
		https://bugzilla.redhat.com/show_bug.cgi?id=474181
	Red Hat Enterprise Linux 5 および CentOS 5 については、
	nss_ldap-253-17.el5 以降の RPM で症状が緩和する可能性がありますが、
	未確認です。この RPM に含まれる修正については、以下の RHBA-2009:0241-4
	を参照してください。
	    http://www.jp.redhat.com/support/errata/RHBA/RHBA-2009-0241J.html

- gfs_pio_sync() は、現在のところメタデータの更新を行なっていません。

  対処予定:
	未定です。

- Gfarm 1.X で提供していたファイルビュー機能はサポートされていません。

  対処予定:
	サポート予定はありません。

- gfarm ライブラリを既に利用開始しているプログラムが fork(2) した場合、
  gfarm ライブラリの API を呼び出すことができるのは、親プロセスか子プ
  ロセスのどちらかだけです。両方がアクセスを行なった場合、gfsd サーバ
  プロセスに対する親子のリクエストが混ざってしまうことがあるため、
  正しく動作しないことがあります。fork 前に確立した gfsd サーバとの
  コネクションは、親子で共有されているため、もし親と子が別のファイルを
  オープンした場合でも、同一の gfsd サーバへのアクセスとなる場合には、
  問題が生じます。

  また、親プロセスがファイルをオープン後 fork(2) し、子プロセスの側が
  そのファイルにアクセスする場合、親プロセスが exit(3) を呼んで終了する
  よりも前に、子プロセスからのアクセスは完了する必要があります。という
  のは、親プロセスが exit(3) 関数を呼んだ時に、gfsd に対して、そのファ
  イルのクローズ要求が送られるからです。このため、親プロセスが exit(3)
  した後は、子プロセスからのアクセスは失敗してしまいます。

  さらに、親プロセスがファイルをオープン後 fork(2) した場合、子プロセス
  の側がそのファイルをクローズしても、そのクローズ要求は、gfsd へ送られ
  ません。従って、下記のような処理を行なった場合、ファイルディスクリプタ
  不足のため、3. は失敗する可能性があります。
  1. 親プロセスが同一の gfsd に対して多数のファイルをオープンした状態で
    fork(2) する。
  2. 子プロセスは、そららのファイルを全てクローズする。
  3. 子プロセスは、同じ gfsd が保持するファイルを多数オープンする。
  これは、2. で行なったクローズが gfsd に伝わらず、gfsd が 1. でオープン
  したファイルのディスクリプタを保持し続けているからです。

  対処予定:
	未定です。

- 複製処理を途中で中断する方法がありません。

  たとえ gfrep コマンドを kill しても、既にネットワーク間でのコピーを
  開始しているファイルについては、それが完了するまで、コピーが続いてし
  まいます。

  対処予定:
	未定です。

- gfarm ライブラリは multithread safe ではありません。

  対処予定:
	未定です。

- gfarm ライブラリは、単一プロセスが複数の異なるユーザ権限を使い分ける
  ようなアプリケーションからの利用を想定していません。

  setuid() や setgid() を用いるようなアプリケーションからの利用を
  想定していません。

  対処予定:
	未定です。

- NFS サーバとクライアントの組合せによっては、sharedsecret 認証に
  失敗することがあります。

  そのような問題があるか否かは、下記のコマンドを実行して、認証に
  失敗することがある、すなわち gfhost の表示の第二欄が「s」ではなく
  「x」となることがあるかどうかで確認できます。
	sh -c 'seq 60 | while read n; do gfkey -f; gfhost -l 他のホスト; done'
  ここで「他のホスト」というのは、このコマンドを実行するホストと、
  NFS でホームディレクトリを共有しているファイルシステムノードです。

  この問題が生じる場合、下記のような方法のいずれかで回避できます。
  ・「gfkey -f -p 秒数」で、有効期間を指定して鍵を生成することができます。
    この期間を十分長く設定し、ジョブの実行中に、鍵の再生成が生じない
    ようにします。(デフォルトの有効期間は一日です。)
  ・認証方式を sharedsecert から、gsi_auth あるいは gsi に変更します。
  ・問題の起きない NFS サーバに変更することによっても回避できます。

  問題が生じることがあると確認された組合せ
	NFS サーバ			NFS クライアント
	Linux 2.6.12 (Fedora Core 4)	Linux 2.4.20 (RedHat 8)
	Linux 2.6.12 (Fedora Core 4)	Linux 2.6.9  (Fedora Core 3)
	Linux 2.6.12 (Fedora Core 4)	Linux 2.6.11 (Fedora Core 4)

  問題が生じていない組合せ
	NFS サーバ			NFS クライアント
	Solaris 2.6			Linux 2.4.18 (RedHat 8)
	NetBSD 3.0			Linux 2.4.18 (RedHat 8)

  対処予定:
	未定です。

- gfmd でメタデータのジャーナリング・ファイルによる記録機能を利用している
  状況では、 gfs_setxattr()/gfs_setxmlattr() などによる拡張属性やXML属性
  の更新後、短い時間の間、gfs_getxattr()/gfs_getxmlattr() などによる属性
  取得で、古い値が返ってくる時間帯があります。

  対処予定:
	未定です。

  対策:
	拡張属性については、gfmd.conf の「xattr_cache」指令で gfmd の
	メモリ上にキャッシュすることによって、この問題を回避することが
	できます。

- gfs_findxmlattr() がシンボリックリンクの参照先ファイルの属性を検索しません。

  gfs_findxmlattr() の引数にシンボリックリンクを指定した場合は、シンボリックリ
  ンクの参照先のファイルまたはディレクトリが検索対象になります。
  ただし、指定したディレクトリの下にシンボリックリンクが存在する場合、それら
  の参照先ファイルの属性は検索対象になりません。代わりにシンボリックリンク自体
  の属性が 検索対象になります。
  この問題が発生する理由は、シンボリックリンクのパス解決はクライアントで実行
  されますが、gfs_findxmlattr() はディレクトリ下のファイルをトラバースする処
  理を gfmd 内で実行するためです。

  対処予定:
	未定です。

- gfmd の冗長構成において用いられる gfmd 間の通信では、GSI認証がサポート
  されていません。

  対処予定:
	未定です。

- バックエンド・データベースとして LDAP を用いた場合、gfmd の冗長構成は
　サポートされていません。

  対処予定:
	未定です。

- バックエンド・データベースとして LDAP を用いた場合、quota 機能は
　サポートされていません。

  対処予定:
	未定です。


● gfarm コマンド群に関する問題点

- 下記のコマンドが存在しません。

  gfdump, gfcd, gfpwd

  対処予定:
	未定です。

- 下記のコマンドに関する参照マニュアルが存在しないか，更新されていませ
  ん。

  gfarm.arch.guess, gfarm-pcp, gfarm-prun, gfvoms-sync

  対処予定:
	未定です。


● gfarm2fs コマンドに関する問題点

既知の問題点はありません
