QUOTACTL(2)

이름
quotactl - 디스크 분할을 다룬다

사용법
#include <sys/types.h>
#include <sys/quota.h>

int quotactl (int cmd, const char *special, int id , caddr_t addr);

#include <linux/unistd.h>

_syscall4(int, quotactl, int, cmd, const char *, special , int, id, caddr_t, addr);

설명
quota system은 각각의 사용자나 그룹을 위해 주어진 파일 시스템상에서 사용할 수 있는 디스크 공간의 양을 soft limit나 hard limit로 묶어주는 것이다. hard limit는 연결될 수 없다. soft limit는 연결될 수 있다. 하지만 주의가 필요하다. 게다가, 덧붙여서 사용자는 디폴트 상태에서 한번에 일주일 이상 soft limit 상에 있을 수 없다. 일주일 후에는 hard limit로 계산된다. quotactl 시스템 호출은 이 quota를 다룬다. 이것은 첫번째 독립변수는 QCMD(subcmd,type) 의 형태이다. type 은 USRQUOTA 나 GRPQUOTA (각각 사용자 quota와 그룹 quota)이고, subcmd 는 아래를 참조하자. 두번째 독립변수 special 는 quota에 적용되는 특별한 장치이다. 반드시 마운트 시켜야 한다. 세번째 독립변수 id 는 이 quota가 적용되는 사용자나 그룹의 id이다. 네번째 독립변수 addr 는 명령어에 따른 데이터 구조의 주소이다. subcmd 는

Q_QUOTAON
    가능 quota중 하나 이다. addr 독립변수는 파일 시스템을 위한 quota를 포함하는 파일의 경로명이다.

Q_QUOTAOFF
    quota 사용불가.

Q_GETQUOTA
    limit과 현재 디스크 공간의 사용양을 가진다. addr 독립변수는 dqblk structure ( <sys/quota.h> 에 정의된 )를 가르키는 포인터이다.

Q_SETQUOTA
    limit과 현재 사용양을 설정한다; addr 는 이전과 같이 쓰인다.

Q_SETQLIM
    limit를 설정한다; addr 는 이전과 같이 쓰인다.

Q_SETUSE
    사용량 설정.

Q_SYNC
    filesystems quotas의 Sync disk copy

Q_GETSTATS
    현제 상태를 가진다.

반환값
성공시, quotactl 는 0을 반환한다. 에러시, -1을 반환한다. errno 는 적절히 설정된다.

에러

ENOPKG
    커널이 quota 지원 없이 컴파일 되었다.The kernel was compiled without quota support.

EFAULT
    부적당한 addr 값.

EINVAL
    type 이 알려지지 않은 type이다. 혹은, special 을 찾을 수 없다.

ENOTBLK
    special 이 block special device이 아니다.

ENODEV
    special 을 마운트 테이블에서 찾을 수 없다.

EACCES
    quota가 일반 파일이 아니다.

EIO quota 파일을 읽거나 쓸 수 없다.

EMFILE
    너무 많은 파일이 열려 있어서 quota파일을 열 수 없다.

EBUSY
    Q_QUOTAON 이 요구되었지만, quota가 이미 사용되고 있다.

ESRCH
    Q_GETQUOTA 나 Q_SETQUOTA 나 Q_SETUSE 난 Q_SETQLIM 가 quota가 가능한 파일시스템에게 요구되었다.

EPERM
    The process was not root (for the file system), and Q_GETQUOTA 가 다른 이미 사용되고 있는 id 에게 요구되었다. 혹은 Q_GETSTATS 나 Q_SYNC 가 요구되었다.

호환
BSD

관련 항목
quota(1), getrlimit(2), setrlimit(2), ulimit(2), quotacheck(8), quotaon(8)

역자
ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 29