Veritas™ File System プログラマーズリファレンスガイド - Linux
- Veritas File System Software Developer's Kit
- FCL(File Change Log)
- マルチボリュームサポート
- 名前付きデータストリーム
- Veritas File System I/O
- シン再生
エクステント属性のアプリケーションプログラミングインターフェース
エクステント属性の現在の API は ioctl() です。アプリケーションは、ファイルを開き、ioctl() の呼び出しから得たファイル記述子を使って、エクステント属性の取得、設定または変更を実行できます。既存のエクステント属性の設定や変更を行うには、VX_SETEXT ioctl を使います。既存のエクステント属性がある場合に、それを取得するには、VX_GETEXT ioctl を使います。アプリケーションからエクステント属性の設定や変更を行うには、vx_ext の構造体に、属性情報をセットしてから、VX_SETEXT iotcl と構造体のアドレス(3 番目の引数)を指定してioctl() を呼び出します。また、既存のエクステント属性がある場合にそれを取得するには、VX_GETEXT ioctl と先と同じ vx_ext 構造体のアドレス(同じく第 3 引数)を指定して、 ioctl() を呼び出します。
struct vx_ext { off_t ext_size; /* extent size in fs blocks */ off_t reserve; /* space reservation in fs blocks */ int a_flags; /* allocation flags */ }
ext_size 引数は、固定エクステントサイズの指定に使います。固定エクステントサイズの値は、ファイルシステムのブロックサイズ単位で指定します。固定エクステントサイズを設定する前に、ファイルシステムのブロックサイズを調べておいてください。固定エクステントサイズが不要な場合は、ゼロを使って、エクステントの割り当てにデフォルトの割り当てポリシーが使われるようにします。VX_SETEXT ioctl の正常な実行後、すぐに固定エクステント割り当てポリシーが有効になります。ただし、すでに間接ブロックを含んでいるファイルは例外です。この場合、固定エクステントポリシーは、ファイルの切り捨てによって現在のすべての間接ブロックが解放されない限り有効になりません。
reserve 引数は、ファイルに事前に割り当てる領域のサイズの指定に使います。このサイズは、ファイルシステムのブロックサイズ単位で指定します。事前に割り当てるサイズを設定する前に、ファイルシステムのブロックサイズを調べておいてください。ファイルがすでに事前に割り当てられている場合、VX_SETEXT ioctl を使って、現在の予約サイズを変更できます。指定した予約サイズが現在の予約よりも大きい場合は、新しく指定した予約サイズに合わせてファイルの割り当てが拡大されます。予約サイズが現在の予約よりも小さい場合は、予約サイズが減らされ、新しく設定した予約サイズまたは現在のファイルサイズまで割り当てが減らされます。ファイルの事前割り当てには、ファイルのサイズが変更されない限り、root 権限が必要であり、要求元のプロセスの ulimit を超えて事前割り当てのサイズを拡大することはできません。