![](/img/trans.png)
[英]Can I check which function templates have, or have not, been instantiated at least once?
[英]How can I check that quotas have been enabled is XFS?
我有一個應該使用prjquota
標志安裝的文件系統。 但是由於人為因素,有人可能會忘記這樣做,所以我需要檢查應用程序啟動時是否啟用了配額。 我認為可以使用帶有Q_GETFMT作為 subcmd 參數的Q_GETFMT
進行檢查。 但它總是將標志設置為 0。我做錯了什么?
我嘗試將device
作為 XFS 下文件的絕對路徑和實際設備的路徑。 但沒有結果。
bool isQuotaEnabled(const std::filesystem::path &device)
{
uint32_t buff{};
quotactl(QCMD(Q_GETFMT, PRJQUOTA), device.c_str(), 0, (caddr_t)&buff);
return buff;
}
// The argument is something like "/dev/loop1"
bool isQuotaEnabled(const std::filesystem::device& device)
{
fs_quota_stat info{};
if (quotactl(QCMD(Q_XGETQSTAT, PRJQUOTA), device.data(), 0, (caddr_t)&info) == -1) {
throw std::system_error(errno, std::system_category(), "quotactl");
}
return static_cast<bool>(info.qs_flags & (XFS_QUOTA_PDQ_ACCT | XFS_QUOTA_PDQ_ENFD));
}
PRJQUOTA
用於項目配額。 用你需要的替換它。
Q_XGETQSTAT
Returns XFS filesystem-specific quota information in the
fs_quota_stat structure pointed by addr.
Quota enabling flags (of format XFS_QUOTA_[UGP]DQ_{ACCT,ENFD})
are defined without a leading "X", as
FS_QUOTA_[UGP]DQ_{ACCT,ENFD}.
XFS_QUOTA_PDQ_ACCT /* Project quota accounting */
XFS_QUOTA_PDQ_ENFD /* Project quota limits enforcement */
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.