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 .