Veritas™ File System プログラマーズリファレンスガイド - Linux
- Veritas File System Software Developer's Kit
- FCL(File Change Log)
- マルチボリュームサポート
- 名前付きデータストリーム
- Veritas File System I/O
- シン再生
fcl_acsinfo 構造体
アクセス情報の追跡を有効にすると、VxFS は各レコードとともに、次のようなアクセス情報をログに記録します。
アプリケーションにアクセスしている有効な実際のユーザーとグループの ID
ファイルのアクセス元のノード
ユーザーアプリケーションのプロセス ID と各レコード
アプリケーションが FCL を読み取るとき、情報は fr_acsinfo フィールドに返されます。
fr_acsinfo は、次のように定義されている FCL_acsinfo 構造体を指します。
struct fcl_acsinfo { uint32_tfa_ruid; uint32_tfa_rgid; uint32_tfa_euid; uint32_tfa_egid; uint32_tfa_pid; uint32_tfa_nodeid; };
メモ:
accessinfo は、独立したレコードの種類としては返されませんが、追加情報としてほかのレコードとともに返されます。さらに、accessinfo の情報は、すべてのレコードに存在するとは限りません(たとえば、accessinfo の追跡が有効になっていない場合)。ただし、ファイルシステムのいくつかの内部操作(たとえば、削除時のファイルの切り捨てなど)で accessinfo が有効にされたときでも、アクセス情報が存在しないことがあります。アクセス情報を利用可能かどうかを判断する助けになるように、FCL レコードには fcl_acsinfovalid という名前のフラグが含まれ、そのフラグは特定のレコードに accessinfo が存在する場合にのみ 0 以外になります。
fcl_acsinfo 構造体のいくつかのフィールドはポインタなので、実際の内容を格納するためのメモリが必要です。これは、FCL レコードの直後に実際のデータを格納し、そのデータを指すポインタを更新することによって処理されます。レコード長の fr_reclen フィールドは、データ全体に相当するように更新されます。したがって、vxfs_fcl_read によって返される各 FCL レコードは可変サイズのレコードで、その長さは fr_reclen_field によって示されます。
図: サンプルのリンクレコード は、サンプルのリンクレコードで、データがどのようにレイアウトされるかを示しています。
次のコードサンプルは、vxfs_fcl_read の呼び出しによって返されたレコードのセットをスキャンし、ユーザー ID を出力します。
Struct fcl_record*fr; Char *tbuf; ... error = vxfs_fcl_read(fh, buf, &bufsz, FCL_ALL_V4_EVENTS, &nentries); tbuf = buf; while (--nentries) { fr = (struct fcl_record *)tbuf; if (fr->fr_acsinfovalid) { printf("Uid %ld\n", fr->fr_acsinfo->uid; } tbuf += fr->fr_reclen; }
メモ:
FCL_ALL_V4_EVENTS はイベントマスクです。
詳細情報