quotactl() - Unix、Linux系统调用
Tutorials Point


  Unix入门
  Unix Shell编程
  高级Unix
  Unix有用参考资料
  Unix有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考资料     讨论论坛     关于TP  

quotactl() - Unix、Linux系统调用


previous next AddThis Social Bookmark Button

广告

名称

quotactl - 操作磁盘配额

概要

#include <sys/quota.h> 
#include <sys/types.h> 
#include <xfs/xqm.h> 
#include <linux/dqblk_v1.h> 
#include <linux/dqblk_v2.h> 

long quotactl(int cmd, char *special, qid_t id, caddr_t addr)

描述

quotactl()调用操作磁盘配额。cmd指示要应用于UID idGID id的命令。要设置配额类型,请使用QCMD(cmd, type)宏。special是指向包含被操作的文件系统的块特殊设备路径名的空终止字符串的指针。addr是可选的、特定于命令的数据结构的地址,该结构被复制到系统中或从系统中复制出来。下面将介绍每个命令中addr的解释。

标签描述
Q_QUOTAON 为文件系统启用配额。id是要使用的配额格式的标识号。格式编号在相应格式的头文件中定义。目前支持两种配额格式,其编号由常量QFMT_VFS_OLD(原始配额格式)和QFMT_VFS_V0(新的VFS v0配额格式)定义。addr指向包含该文件系统配额的文件的路径名。配额文件必须存在;它通常使用quotacheck(8)程序创建。此调用仅限于超级用户。
Q_QUOTAOFF 关闭文件系统的配额。忽略addrid。此调用仅限于超级用户。
Q_GETQUOTA 获取用户或组id的磁盘配额限制和当前使用情况。addr是指向if_dqblk结构(在<sys/quota.h>中定义)的指针。字段dqb_valid定义结构中设置正确的条目。在Q_GETQUOTA调用中,所有条目均有效。只有超级用户才能获取除他自己以外的用户的配额。
Q_SETQUOTA 设置用户或组id的当前配额信息。addr是指向if_dqblk结构(在<sys/quota.h>中定义)的指针。字段dqb_valid定义配额结构中哪些条目有效且应设置。dqb_valid字段的常量在<sys/quota.h>头文件中定义。此调用使以前配额接口中的Q_SETQLIMQ_SETUSE调用失效。此调用仅限于超级用户。
Q_GETINFO 获取有关配额文件的信息(如宽限时间)。addr应该是指向if_dqinfo结构(在<sys/quota.h>中定义)的指针。结构中的dqi_valid字段定义其中有效的条目。在Q_GETINFO调用中,所有条目均有效。忽略参数id
Q_SETINFO 设置有关配额文件的信息。addr应该是指向if_dqinfo结构(在<sys/quota.h>中定义)的指针。字段dqi_valid定义配额信息结构中哪些条目有效且应设置。dqi_valid字段的常量在<sys/quota.h>头文件中定义。此调用使以前配额接口中的Q_SETGRACEQ_SETFLAGS调用失效。忽略参数id。此操作仅限于超级用户。
Q_GETFMT 获取在指定文件系统上使用的配额格式。addr应该指向将存储格式编号的内存(4字节)。
Q_SYNC 更新文件系统的配额使用情况的磁盘副本。如果special为空,则同步所有具有活动配额的文件系统。忽略addrid
Q_GETSTATS 获取有关配额子系统的统计信息和其他通用信息。addr应该指向dqstats结构(在<sys/quota.h>中定义),数据应存储在其中。忽略specialid
对于使用XFS配额管理器(XQM)的XFS文件系统,将绕过上述命令并使用以下命令
Q_XQUOTAON
 为XFS文件系统启用配额。XFS提供了使用配额记账启用/禁用配额限制执行的功能。因此,XFS期望addr是指向无符号整数的指针,该整数包含XFS_QUOTA_UDQ_ACCT和/或XFS_QUOTA_UDQ_ENFD(对于用户配额),或XFS_QUOTA_GDQ_ACCT和/或XFS_QUOTA_GDQ_ENFD(对于组配额),如<xfs/xqm.h>中所定义。此调用仅限于超级用户。
Q_XQUOTAOFF 关闭XFS文件系统的配额。与Q_QUOTAON一样,XFS文件系统期望一个指向无符号整数的指针,该指针指定是否需要关闭配额记账和/或限制执行。此调用仅限于超级用户。
Q_XGETQUOTA 获取用户id的磁盘配额限制和当前使用情况。addr是指向fs_disk_quota结构(在<xfs/xqm.h>中定义)的指针。只有超级用户才能获取除他自己以外的用户的配额。
Q_XSETQLIM 设置用户id的磁盘配额限制。addr是指向fs_disk_quota结构(在<xfs/xqm.h>中定义)的指针。此调用仅限于超级用户。
Q_XGETQSTAT 返回包含XFS文件系统特定配额信息的fs_quota_stat结构。这对于找出存储配额信息所花费的空间以及获取给定本地XFS文件系统的quotaon/off状态很有用。
Q_XQUOTARM 释放磁盘配额占用的磁盘空间。配额必须已经关闭。
XFS没有等效于Q_SYNC的命令,因为sync(1)将配额信息写入磁盘(以及它写入的其他文件系统元数据)。

返回值

quotactl()返回

标签描述
0 成功。
-1 失败并设置errno以指示错误。

错误

标签描述
EFAULT addrspecial无效。
ENOSYS 内核未编译QUOTA选项。
EINVAL
cmdtype无效。
ENOENT specialaddr指定的文件不存在。
ENOTBLK special不是块设备。
EPERM 调用是特权的,调用者不是超级用户。
ESRCH 找不到指示用户的磁盘配额。
此文件系统尚未启用配额。
如果cmdQ_QUOTAONquotactl()可能会将errno设置为
EACCES addr指向的配额文件存在,但不是常规文件。
addr指向的配额文件存在,但不在special指向的文件系统上。
EINVAL 配额文件已损坏。
ESRCH 未找到指定的配额格式。
EBUSY 在另一个Q_QUOTAON已发生时尝试Q_QUOTAON

另请参见



previous next Printer Friendly

广告


  

广告



广告