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

廣告


  

廣告



廣告
© . All rights reserved.