EN JA
QUOTAFILE(3)
QUOTAFILE(3) FreeBSD Library Functions Manual QUOTAFILE(3)

名称

quota_open quota_close quota_on quota_off quota_read quota_write_limits quota_write_usage quota_fsname quota_qfname quota_maxid quota_check_path quota_convertクォータ (割り当て) を操作する

ライブラリ

System Utilities Library (libutil, -lutil)

書式

#include < sys/param.h>
#include < sys/mount.h>
#include < ufs/ufs/quota.h>
#include < fcntl.h>
#include < fstab.h>
#include < libutil.h>

struct quotafile *
quota_open( struct fstab *fs, int quotatype, int openflags);

int
quota_close( struct quotafile *qf);

int
quota_on( const struct quotafile *qf);

int
quota_off( const struct quotafile *qf);

int
quota_read( struct quotafile *qf, struct dqblk *dqb, int id);

int
quota_write_limits( struct quotafile *qf, struct dqblk *dqb, int id);

int
quota_write_usage( struct quotafile *qf, struct dqblk *dqb, int id);

const char *
quota_fsname( const struct quotafile *qf);

const char *
quota_qfname( const struct quotafile *qf);

int
quota_maxid( const struct quotafile *qf);

int
quota_check_path( const struct quotafile *qf, const char *path);

int
quota_convert( struct quotafile *qf, int wordsize);

解説

これらの関数は、ファイルシステムのクォータ (割り当て) へのアクセスを簡素化するように設計されています。クォータがファイルシステムでアクティブであるなら、これらの関数は、 quotactl() システムコールを使用して直接カーネルからそれらにアクセスします。クォータがアクティブでないなら、これらの関数は、直接クォータファイルを読み込み書き込みすることによって、それらにアクセスします。

quota_open() 関数は、クォータがアクセスされるファイルシステムに対応する fstab エントリへのポインタを取ります。 quotatype フィールドは、シークされるクォータのタイプ、 USRQUOTA または GRPQUOTA のいずれかを示します。 openflags は、 open() システムコールによって使用されるもので、通常クォータが読み込みだけであるなら、 O_RDONLY クォータが更新されることであるなら、 O_RDWR です。 O_CREAT フラグは、要求されたタイプの新しいクォータファイルが、まだ存在していないくて、作成されるべきであるなら、指定されるべきです。

quota_close() 関数は、任意のオープンされているファイル記述子をクローズし、 qf によって参照されるファイルシステムとクォータタイプに関連している任意の記憶域を解放します。

quota_on() 関数は、 O_RDONLY または O_RDWR でオープンされた qf 引数に関連しているファイルシステムのためのクォータを有効にします。 quota_on() 関数は、成功するなら、0 を返します。そうでなければ、値 -1 が返され、グローバル変数 errno は、エラーを示す値に設定されます、起こり得るエラーについては、 quotactl(2) を参照してください。

quota_off() 関数は、 O_RDONLY または O_RDWR でオープンされた qf 引数に関連しているファイルシステムのためのクォータを無効にします。 quota_off() 関数は、成功するなら、0 を返します。そうでなければ、値 -1 が返され、グローバル変数 errno は、エラーを示す値に設定されます、起こり得るエラーについては、 quotactl(2) を参照してください。

quota_read() 関数は、 dqb によって指された dqblk クォータ構造体に id によって指定されたユーザ (またはグループ) のための qf によって参照されるファイルシステムとクォータタイプからクォータを読み込みます。

quota_write_limits() 関数は、 dqb によって指された dqblk クォータ構造体から id によって指定されたユーザ (またはグループ) のための qf によって参照されるファイルシステムとクォータタイプのための制限フィールド (しかし、使用法フィールドでない) を更新します。

quota_write_usage() 関数は、 dqb によって指された dqblk クォータ構造体から id によって指定されたユーザ (またはグループ) のための qf によって参照されるファイルシステムとクォータタイプのための使用法フィールド (しかし、制限フィールドでない) を更新します。

quota_fsname() 関数は、 /etc/fstab にリストされているように、 qf 引数に対応するファイルシステムのルートへのパスを含むバッファへのポインタを返します。これは、実際のディレクトリへのシンボリックリンクであるかもしれないことに注意してください。

quota_qfname() 関数は、 qf 引数に対応するクォータファイルの名前を含むバッファへのポインタを返します。これは、実際のファイルへのシンボリックリンクであるかもしれないことに注意してください。

quota_maxid() 関数は、 qf 引数に関連しているクォータファイルに含まれる最大のユーザ (またはグループ) id を返します。

quota_check_path() 関数は、指定されたパスが、 qf 引数に対応するファイルシステム内にあるかどうかをチェックします。 path 引数がシンボリックリンクを参照するなら、 quota_check_path() は、それをたどります。

quota_convert() 関数は、 qf 引数に関連しているクォータファイルを wordsize 引数によって指定されるデータサイズに変換します。サポートされる wordsize 引数は、古い 32 ビットのクォータファイル形式に対しては、32 で、新しい 64 ビットのクォータファイル形式に対しては、 64 です。 quota_convert() 関数は、現在アクティブでないクォータファイルを動作させるためにだけに呼び出されます。

実装に関する注

基本的なクォータファイルが古い 32 ビット形式であるか、または変換されるなら、クォータファイルに書き込まれる制限と使用法は、32 ビットに切り込まれます。

戻り値

ファイルシステムにそれに関連しているクォータがあるなら、 quota_open() は、その後のクォータアクセス呼び出しに使用される quotafile 構造体へのポインタを返します。ファイルシステムにクォータがないか、またはアクセスパーミッションが拒否されるなら、 NULL が返され、 errno は、エラーを示す値が設定されます。

quota_check_path() 関数は、肯定的な結果に対して 1 を返し、否定的な結果に対して 0 を返します。エラーが発生するなら、-1 を返し、 errno にエラーを示す値を設定します。

quota_read(), quota_write_limits(), quota_write_usage(), quota_convert() と quota_close() 関数は、成功すれば、0 を返します。エラーのときに、それらは、-1 を返し、 errno にエラーを示す値を設定します。

歴史

quotafile 関数は、 FreeBSD 8.1 ではじめて登場しました。

作者

quotafile 関数とこのマニュアルページは、 Dag-Erling Smørgrav <des@FreeBSD.org>と Marshall Kirk McKusick <mckusick@mckusick.com>によって書かれました。
December 28, 2009 FreeBSD