tail head cat sleep
QR code linking to this page

manページ  — QUOTACTL

名称

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

内容

ライブラリ

Standard C Library (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 構造体 <(> で定義されています) を指すポインタです。
Q_SETQUOTA 識別子 id で指定されるユーザまたはグループ (どちらであるかはコマンドタイプによって決定されます) のディスク割り当て制限を設定します。 addr 引数は、 struct, dqblk 構造体 <(> で定義されています) を指すポインタです。 dqblk 構造体の使用状況を示すフィールドは無視されます。 このシステムコールはスーパユーザだけに制限されています。
Q_SETUSE 識別子 id で指定されるユーザまたはグループ (どちらであるかはコマンドタイプによって決定されます) のディスク使用制限を設定します。 addr 引数は、 struct, dqblk 構造体 <(> で定義されています) を指すポインタで、 使用状況を示すフィールドだけが使われます。 このシステムコールはスーパユーザだけに制限されています。
Q_SYNC 割り当て使用状況の、ディスク上のコピーを更新します。 コマンドタイプには、どのタイプの割り当て制限を更新するかを指定します。 id 引数と addr 引数は無視されます。

戻り値

The quotactl function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

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() システムコールは BSD 4.3 Reno で登場しました。

QUOTACTL (2) March 5, 1999

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
— Maurice Wilkes