quotactl(2) manipula cuotas de disco

SINOPSIS

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

int quotactl (int cmd, const char *especial, int id , caddr_t direc);

#include <linux/unistd.h>

_syscall4(int, quotactl, int, cmd, const char *, especial , int, id, caddr_t, direc);

DESCRIPCIÓN

El sistema de cuotas define para cada usuario o grupo un límite blando y un límite duro limitando la cantidad de espacio de disco que puede usarse en un sistema de ficheros dado. EL límite duro no puede ser traspasado. El límite blando puede traspasarse, pero se avisará de ello. Ítem más, el usuario no puede estar por encima del límite blando más allá de una semana (tiempo predeterminado) cada vez: después de este periodo el límite blando cuenta como el duro.

La llamada al sistema quotactl manipula estas cuotas. Su primer argumento es de la forma QCMD(subcmd,tipo) donde tipo es uno de USRQUOTA o GRPQUOTA (para cuotas de usuario y grupo, respectivamente), y subcmd está descrito más abajo.

El segundo argumento especial es el dispositivo especial de bloques al que se aplican estas cuotas. Debe estar montado.

El tercer argumento id es el identificador del usuario o grupo al cual se aplican estas cuotas (cuando sea relevante).

El cuarto argumento direc es la dirección de una estructura de datos, dependiendo de la orden.

El subcmd es uno de

Q_QUOTAON
Activa las cuotas. El argumento direc es el camino del fichero que contiene las cuotas para el sistema de ficheros.
Q_QUOTAOFF
Desactiva las cuotas.
Q_GETQUOTA
Obtiene los límites y el uso actual del espacio de disco. El argumento direc es un puntero a una estructura dqblk (definida en <sys/quota.h>).
Q_SETQUOTA
Establece los límites y el uso actual; direc es como antes.
Q_SETQLIM
Establece los límites; direc es como antes.
Q_SETUSE
Establece el uso.
Q_SYNC
Sincroniza la copia en disco de las cuotas de un sistema de ficheros.
Q_GETSTATS
Obtiene datos estadísticos recogidos.

VALOR DEVUELTO

En caso de éxito, quotactl devuelve 0. En caso de error, se devuelve -1 y se pone un valor apropiado en errno.

ERRORES

ENOPKG
El núcleo ha sido compilado sin soporte de cuotas.
EFAULT
Valor malo para direc.
EINVAL
tipo no es un tipo de cuotas conocido. O especial no ha podido ser encontrado.
ENOTBLK
especial no es un dispositivo especial de bloques.
ENODEV
especial no se halla en la tabla de montaje.
EACCES
El fichero de cuotas no es un fichero ordinario.
EIO
No se puede leer o escribir en el fichero de cuotas.
EMFILE
Demasiados ficheros abiertos: no se puede abrir el fichero de cuotas.
EBUSY
Se ha pedido Q_QUOTAON pero las cuots ya estaban activadas.
ESRCH
Se ha pedido Q_GETQUOTA o Q_SETQUOTA o Q_SETUSE o Q_SETQLIM para un sistema de ficheros que no tenía las cuotas activadas.
EPERM
El proceso no era root (para el sistema de ficheros), y se ha pedido Q_GETQUOTA para otro id que el del proceso mismo, o se ha pedido otra cosa distinta a Q_GETSTATS o a Q_SYNC .

CONFORME A

BSD