fs/xfs/xfs_quota.h
Source file repositories/reference/linux-study-clean/fs/xfs/xfs_quota.h
File Facts
- System
- Linux kernel
- Corpus path
fs/xfs/xfs_quota.h- Extension
.h- Size
- 7676 bytes
- Lines
- 231
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
xfs_quota_defs.h
Detected Declarations
struct xfs_transstruct xfs_bufstruct xfs_dqtrxstruct xfs_apply_dqtrx_paramsstruct xfs_quotainfostruct xfs_dqtrx_hookenum xfs_apply_dqtrx_typefunction dquotfunction xfs_trans_mod_dquotfunction xfs_trans_mod_dquot_byinofunction xfs_trans_reserve_quota_bydquotsfunction xfs_trans_reserve_quota_icreatefunction xfs_quota_reserve_blkresfunction xfs_quota_unreserve_blkres
Annotated Snippet
struct xfs_dqtrx {
struct xfs_dquot *qt_dquot; /* the dquot this refers to */
uint64_t qt_blk_res; /* blks reserved on a dquot */
int64_t qt_bcount_delta; /* dquot blk count changes */
int64_t qt_delbcnt_delta; /* delayed dquot blk count changes */
uint64_t qt_rtblk_res; /* # blks reserved on a dquot */
uint64_t qt_rtblk_res_used;/* # blks used from reservation */
int64_t qt_rtbcount_delta;/* dquot realtime blk changes */
int64_t qt_delrtb_delta; /* delayed RT blk count changes */
uint64_t qt_ino_res; /* inode reserved on a dquot */
uint64_t qt_ino_res_used; /* inodes used from the reservation */
int64_t qt_icount_delta; /* dquot inode count changes */
};
enum xfs_apply_dqtrx_type {
XFS_APPLY_DQTRX_COMMIT = 0,
XFS_APPLY_DQTRX_UNRESERVE,
};
/*
* Parameters for applying dqtrx changes to a dquot. The hook function arg
* parameter is enum xfs_apply_dqtrx_type.
*/
struct xfs_apply_dqtrx_params {
uintptr_t tx_id;
xfs_ino_t ino;
xfs_dqtype_t q_type;
xfs_dqid_t q_id;
};
#ifdef CONFIG_XFS_QUOTA
extern void xfs_trans_dup_dqinfo(struct xfs_trans *, struct xfs_trans *);
extern void xfs_trans_free_dqinfo(struct xfs_trans *);
extern void xfs_trans_mod_dquot_byino(struct xfs_trans *, struct xfs_inode *,
uint, int64_t);
extern void xfs_trans_apply_dquot_deltas(struct xfs_trans *);
void xfs_trans_unreserve_and_mod_dquots(struct xfs_trans *tp,
bool already_locked);
int xfs_trans_reserve_quota_nblks(struct xfs_trans *tp, struct xfs_inode *ip,
int64_t dblocks, int64_t rblocks, bool force);
extern int xfs_trans_reserve_quota_bydquots(struct xfs_trans *,
struct xfs_mount *, struct xfs_dquot *,
struct xfs_dquot *, struct xfs_dquot *, int64_t, long, uint);
int xfs_trans_reserve_quota_icreate(struct xfs_trans *tp,
struct xfs_dquot *udqp, struct xfs_dquot *gdqp,
struct xfs_dquot *pdqp, int64_t dblocks);
extern int xfs_qm_vop_dqalloc(struct xfs_inode *, kuid_t, kgid_t,
prid_t, uint, struct xfs_dquot **, struct xfs_dquot **,
struct xfs_dquot **);
extern void xfs_qm_vop_create_dqattach(struct xfs_trans *, struct xfs_inode *,
struct xfs_dquot *, struct xfs_dquot *, struct xfs_dquot *);
extern int xfs_qm_vop_rename_dqattach(struct xfs_inode **);
extern struct xfs_dquot *xfs_qm_vop_chown(struct xfs_trans *,
struct xfs_inode *, struct xfs_dquot **, struct xfs_dquot *);
extern int xfs_qm_dqattach(struct xfs_inode *);
extern int xfs_qm_dqattach_locked(struct xfs_inode *ip, bool doalloc);
extern void xfs_qm_dqdetach(struct xfs_inode *);
extern void xfs_qm_dqrele(struct xfs_dquot *);
extern void xfs_qm_statvfs(struct xfs_inode *, struct kstatfs *);
extern int xfs_qm_newmount(struct xfs_mount *, uint *, uint *);
void xfs_qm_resume_quotaon(struct xfs_mount *mp);
extern void xfs_qm_mount_quotas(struct xfs_mount *);
extern void xfs_qm_unmount(struct xfs_mount *);
extern void xfs_qm_unmount_quotas(struct xfs_mount *);
bool xfs_inode_near_dquot_enforcement(struct xfs_inode *ip, xfs_dqtype_t type);
int xfs_quota_reserve_blkres(struct xfs_inode *ip, int64_t blocks);
# ifdef CONFIG_XFS_LIVE_HOOKS
void xfs_trans_mod_ino_dquot(struct xfs_trans *tp, struct xfs_inode *ip,
struct xfs_dquot *dqp, unsigned int field, int64_t delta);
struct xfs_quotainfo;
struct xfs_dqtrx_hook {
struct xfs_hook mod_hook;
struct xfs_hook apply_hook;
};
void xfs_dqtrx_hook_disable(void);
void xfs_dqtrx_hook_enable(void);
int xfs_dqtrx_hook_add(struct xfs_quotainfo *qi, struct xfs_dqtrx_hook *hook);
void xfs_dqtrx_hook_del(struct xfs_quotainfo *qi, struct xfs_dqtrx_hook *hook);
void xfs_dqtrx_hook_setup(struct xfs_dqtrx_hook *hook, notifier_fn_t mod_fn,
notifier_fn_t apply_fn);
# else
Annotation
- Immediate include surface: `xfs_quota_defs.h`.
- Detected declarations: `struct xfs_trans`, `struct xfs_buf`, `struct xfs_dqtrx`, `struct xfs_apply_dqtrx_params`, `struct xfs_quotainfo`, `struct xfs_dqtrx_hook`, `enum xfs_apply_dqtrx_type`, `function dquot`, `function xfs_trans_mod_dquot`, `function xfs_trans_mod_dquot_byino`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.