You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
xfs: Add pquota fields where gquota is used.
Add project quota changes to all the places where group quota field
is used:
* add separate project quota members into various structures
* split project quota and group quotas so that instead of overriding
the group quota members incore, the new project quota members are
used instead
* get rid of usage of the OQUOTA flag incore, in favor of separate
group and project quota flags.
* add a project dquot argument to various functions.
Not using the pquotino field from superblock yet.
Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
committed by
Ben Myers
parent
42c49d7f24
commit
92f8ff73f1
+18
-14
@@ -288,10 +288,10 @@ typedef struct xfs_qoff_logformat {
|
||||
* we didn't have the inode locked, the appropriate dquot(s) will be
|
||||
* attached atomically.
|
||||
*/
|
||||
#define XFS_NOT_DQATTACHED(mp, ip) ((XFS_IS_UQUOTA_ON(mp) &&\
|
||||
(ip)->i_udquot == NULL) || \
|
||||
(XFS_IS_OQUOTA_ON(mp) && \
|
||||
(ip)->i_gdquot == NULL))
|
||||
#define XFS_NOT_DQATTACHED(mp, ip) \
|
||||
((XFS_IS_UQUOTA_ON(mp) && (ip)->i_udquot == NULL) || \
|
||||
(XFS_IS_GQUOTA_ON(mp) && (ip)->i_gdquot == NULL) || \
|
||||
(XFS_IS_PQUOTA_ON(mp) && (ip)->i_pdquot == NULL))
|
||||
|
||||
#define XFS_QM_NEED_QUOTACHECK(mp) \
|
||||
((XFS_IS_UQUOTA_ON(mp) && \
|
||||
@@ -346,17 +346,18 @@ extern int xfs_trans_reserve_quota_nblks(struct xfs_trans *,
|
||||
struct xfs_inode *, long, long, uint);
|
||||
extern int xfs_trans_reserve_quota_bydquots(struct xfs_trans *,
|
||||
struct xfs_mount *, struct xfs_dquot *,
|
||||
struct xfs_dquot *, long, long, uint);
|
||||
struct xfs_dquot *, struct xfs_dquot *, long, long, uint);
|
||||
|
||||
extern int xfs_qm_vop_dqalloc(struct xfs_inode *, uid_t, gid_t, prid_t, uint,
|
||||
struct xfs_dquot **, struct xfs_dquot **);
|
||||
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 *, 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_vop_chown_reserve(struct xfs_trans *, struct xfs_inode *,
|
||||
struct xfs_dquot *, struct xfs_dquot *, uint);
|
||||
struct xfs_dquot *, struct xfs_dquot *,
|
||||
struct xfs_dquot *, uint);
|
||||
extern int xfs_qm_dqattach(struct xfs_inode *, uint);
|
||||
extern int xfs_qm_dqattach_locked(struct xfs_inode *, uint);
|
||||
extern void xfs_qm_dqdetach(struct xfs_inode *);
|
||||
@@ -370,10 +371,12 @@ extern void xfs_qm_unmount_quotas(struct xfs_mount *);
|
||||
#else
|
||||
static inline int
|
||||
xfs_qm_vop_dqalloc(struct xfs_inode *ip, uid_t uid, gid_t gid, prid_t prid,
|
||||
uint flags, struct xfs_dquot **udqp, struct xfs_dquot **gdqp)
|
||||
uint flags, struct xfs_dquot **udqp, struct xfs_dquot **gdqp,
|
||||
struct xfs_dquot **pdqp)
|
||||
{
|
||||
*udqp = NULL;
|
||||
*gdqp = NULL;
|
||||
*pdqp = NULL;
|
||||
return 0;
|
||||
}
|
||||
#define xfs_trans_dup_dqinfo(tp, tp2)
|
||||
@@ -388,14 +391,15 @@ static inline int xfs_trans_reserve_quota_nblks(struct xfs_trans *tp,
|
||||
}
|
||||
static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp,
|
||||
struct xfs_mount *mp, struct xfs_dquot *udqp,
|
||||
struct xfs_dquot *gdqp, long nblks, long nions, uint flags)
|
||||
struct xfs_dquot *gdqp, struct xfs_dquot *pdqp,
|
||||
long nblks, long nions, uint flags)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#define xfs_qm_vop_create_dqattach(tp, ip, u, g)
|
||||
#define xfs_qm_vop_create_dqattach(tp, ip, u, g, p)
|
||||
#define xfs_qm_vop_rename_dqattach(it) (0)
|
||||
#define xfs_qm_vop_chown(tp, ip, old, new) (NULL)
|
||||
#define xfs_qm_vop_chown_reserve(tp, ip, u, g, fl) (0)
|
||||
#define xfs_qm_vop_chown_reserve(tp, ip, u, g, p, fl) (0)
|
||||
#define xfs_qm_dqattach(ip, fl) (0)
|
||||
#define xfs_qm_dqattach_locked(ip, fl) (0)
|
||||
#define xfs_qm_dqdetach(ip)
|
||||
@@ -409,8 +413,8 @@ static inline int xfs_trans_reserve_quota_bydquots(struct xfs_trans *tp,
|
||||
|
||||
#define xfs_trans_unreserve_quota_nblks(tp, ip, nblks, ninos, flags) \
|
||||
xfs_trans_reserve_quota_nblks(tp, ip, -(nblks), -(ninos), flags)
|
||||
#define xfs_trans_reserve_quota(tp, mp, ud, gd, nb, ni, f) \
|
||||
xfs_trans_reserve_quota_bydquots(tp, mp, ud, gd, nb, ni, \
|
||||
#define xfs_trans_reserve_quota(tp, mp, ud, gd, pd, nb, ni, f) \
|
||||
xfs_trans_reserve_quota_bydquots(tp, mp, ud, gd, pd, nb, ni, \
|
||||
f | XFS_QMOPT_RES_REGBLKS)
|
||||
|
||||
extern int xfs_qm_dqcheck(struct xfs_mount *, xfs_disk_dquot_t *,
|
||||
|
||||
Reference in New Issue
Block a user