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 はイベントマスクです。
詳細情報