名前
quotactl - ディスク quota を操作する
書式
#include <sys/types.h>
#include <sys/quota.h>
int quotactl(int cmd, const char *special, int id
", caddr_t " addr );
説明
quota システムは、各々のユーザ及び/またはグループに対して、 ソフト・リミット及びハード・リミットを定める。これはあるファイル・システムで 使用する事が出来るディスク容量を制限する。 ハード・リミットは超過することは出来ない。 ソフト・リミットは超過する事が出来るが、警告が発せられる。 更に、(デフォルトでは) 一週間以上ソフト・リミットを超過したままに しておく事はできない: 一週間経過した後はハード・リミットを超過したと みなされる。
quotactl() システムコールはこれらの quota に対する操作を行なう。 最初の引き数は QCMD(subcmd,type) という形式である。 type には、ユーザー quota については USRQUOTA を、グループ quota については GRPQUOTA を指定する。 subcmd は以下で説明する。
二番目の引き数 special は quota を適用するデバイスのブロック・スペシャル・ファイルである。 そのデバイスはマウントされていなくてはならない。
三番目の引き数 id には、(必要な場合に) quota を適用するユーザーもしくはグループの ID を指定する。
四番目の引き数 addr には、コマンドごとに異ったデータ構造体のアドレスを指定する。
subcmd は以下のいずれかである
Q_QUOTAON | quota を有効にする。 addr 引き数には、そのファイル・システムの quota が記録されているファイルの パス名を指定する。 |
Q_QUOTAOFF | quota を無効にする。 |
Q_GETQUOTA | ディスク使用量の制限値と現在の使用量を得る。 addr 引き数は (<sys/quota.h> で定義された) dqblk 構造体を指すポインタである。 |
Q_SETQUOTA | 制限値と現在の使用量を設定する: addr は同上。 |
Q_SETQLIM | 制限値を設定する; addr は同上。 |
Q_SETUSE | 使用量を設定する。 |
Q_SYNC | ファイル・システムの quota ファイルをディスクと同期させる。 |
Q_GETSTATS | 収集された統計を取得する。 |
返り値
quotactl() は、成功時には 0 を返す。エラー時は、-1 を返すとともに、 errno が適切な値に設定される。
エラー
EACCES | quota ファイルが普通のファイルではない。 |
EBUSY | Q_QUOTAON の要求がなされたが、quota(s) は既に有効になっている。 |
EFAULT | addr の値に誤りがある。 |
EINVAL | type が既知の quota の形式ではない。もしくは、 special デバイスが見付からなかった。 |
EIO | quota ファイルへの読み書きが出来ない。 |
EMFILE | ファイルをオープンしすぎている: quota ファイルをオープン出来ない。 |
ENODEV | special がマウント・テーブル内に見当たらない。 |
ENOPKG | quota を使用可にしてカーネルをコンパイルしていない。 |
ENOTBLK | special がブロック・スペシャル・デバイスではない。 |
EPERM | プロセスが (そのファイル・システムの) root のものではなく、 かつプロセス自身のものとは異なる id に対して Q_GETQUOTA 要求を行なった。 もしくは、 Q_GETSTATS, Q_SYNC 以外の要求がなされた。 |
ESRCH | quota が有効になっていないファイル・システムに対して Q_GETQUOTA, Q_SETQUOTA, Q_SETUSE, Q_SETQLIM のいずれかの要求がなされた。 |
準拠
BSD
関連項目
quota(1), getrlimit(2), setrlimit(2), ulimit(3), quotacheck(8), quotaon(8)