スポンサーリンク

QUOTACTL(2) FreeBSD システムコールマニュアル QUOTACTL(2)

名称

quotactl − ファイルシステム割り当て制限を操作する

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/types.h>
#include <ufs/ufs/quota.h>

int

quotactl(const char *path, int cmd, int id, void *addr);

解説

quotactl() システムコールは、ファイルシステムの割り当て制限を有効や無効に したり、操作します。 cmd で与えられた割り当て制限制御コマンドは、 id で指 定されたユーザと path で指定されたファイルに対して動作します (注: cmd の 値を明確に表すために、 <ufs/ufs/quota.h> で定義されている QCMD マクロを使 用すべきです)。オプションとして各コマンド固有のデータ構造体のアドレスを addr に指定できます。これがどう解釈されるかは各コマンド毎に後述します。

現時点で、割り当て制限は ‘‘ufs’’ ファイルシステムについてのみサポートされ ています。 ‘‘ufs’’ の場合、コマンドは主たるコマンド (後述) および id 引数 の解釈方法を指示するコマンドタイプで構成されます。コマンドタイプは、 id をユーザ識別子として解釈する (USRQUOTA) と、グループ識別子として解釈する (GRPQUOTA) がサポートされています。 ‘‘ufs’’ 固有のコマンドは次のとおりで す:

       Q_QUOTAON

path で指定されるファイルシステム用のディスク割り当て制限を 有効にします。コマンドタイプには有効にする割り当て制限の種 類を指定します。 addr 引数には、割り当て制限情報を取り出す ファイルを指定します。割り当て制限を記録したファイルが存在 している必要があります。このファイルは通常、 quotacheck(8) プログラムで作成されます。 id 引数は使用されません。スーパ ユーザだけが割り当て制限をオンにできます。

Q_QUOTAOFF
path
で指定されるファイルシステムに対する、ディスク割り当て 制限を無効にします。コマンドタイプには、無効にする割り当て 制限の種類を指定します。 addr 引数と id 引数は使用されませ ん。スーパユーザだけが割り当て制限をオフにできます。

Q_GETQUOTA
識別子 id で指定されるユーザまたはグループ (どちらであるか はコマンドタイプによって決定されます) の、ディスク割り当て 制限と現在の使用状況を取得します。 addr 引数は、 struct dqblk 構造体 (<ufs/ufs/quota.h> で定義されています) を指す ポインタです。

Q_SETQUOTA
識別子 id で指定されるユーザまたはグループ (どちらであるか はコマンドタイプによって決定されます) のディスク割り当て制 限を設定します。 addr 引数は、 struct dqblk 構造体 (<ufs/ufs/quota.h> で定義されています) を指すポインタです。 dqblk 構造体の使用状況を示すフィールドは無視されます。この システムコールはスーパユーザだけに制限されています。

Q_SETUSE
識別子 id で指定されるユーザまたはグループ (どちらであるか はコマンドタイプによって決定されます) のディスク使用制限を 設定します。 addr 引数は、 struct dqblk 構造体 (<ufs/ufs/quota.h> で定義されています) を指すポインタで、使 用状況を示すフィールドだけが使われます。このシステムコール はスーパユーザだけに制限されています。

Q_SYNC
割り当て使用状況の、ディスク上のコピーを更新します。コマン ドタイプには、どのタイプの割り当て制限を更新するかを指定し ます。 id 引数と addr 引数は無視されます。

戻り値

関数 quotactl() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno が設定されてエラーを示します。

エラー

quotactl() システムコールは次の場合に失敗します:

       [EOPNOTSUPP]

カーネルが QUOTA オプションを指定してコンパイルされて いません。

[EUSERS]
割り当て制限のテーブルを拡張できません。

[EINVAL]
cmd
引数またはコマンドタイプが無効です。 Q_GETQUOTA お よび Q_SETQUOTA では、クォータはこのシステムに対して現 在有効ではありません。

[EACCES]
Q_QUOTAON において、割り当て制限情報ファイルがプレーン ファイルではありません。

[EACCES]
指定されたパスには、検索が許可されていないディレクトリ が含まれています。

[ENOTDIR]
パスの構成要素中にディレクトリ以外のものが含まれていま す。

[ENAMETOOLONG]
パス名の構成要素が 255 文字を越えているか、またはパス 名全体が 1023 文字を越えています。

[ENOENT]
指定されたファイルが存在しません。

[ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多 すぎます。

[EROFS]
Q_QUOTAON で、割り当て制限を記録したファイルが読取り専 用ファイルシステム上にあります。

[EIO]
割り当て制限を記録したファイルに読み書きしている間に I/O (入出力) エラーが発生しました。

[EFAULT]
無効な addr が指定されました。対応する構造体をカーネル に、またはカーネルからコピーできませんでした。

[EFAULT]
path
引数が、プロセスに割り当てられたアドレス空間の範 囲外を指しています。

[EPERM]
特権が必要な呼び出しであったにも関わらず、スーパユーザ 以外のユーザによって呼び出されました。

関連項目

quota(1), fstab(5), edquota(8), quotacheck(8), quotaon(8), repquota(8)

バグ

このシステムコールを setrlimit(2) および getrlimit(2) で提供されるリソー ス制限に関するインタフェースと統合する、何らかの方法があるはずです。

歴史

quotactl() システムコールは 4.3BSD−Reno で登場しました。

FreeBSD 10.0 March 5, 1999 FreeBSD 10.0

スポンサーリンク