Commit 2d53f66b authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: change the prefix of XFS_EOF_FLAGS_* to XFS_ICWALK_FLAG_

In preparation for renaming struct xfs_eofblocks to struct xfs_icwalk,
change the prefix of the existing XFS_EOF_FLAGS_* flags to
XFS_ICWALK_FLAG_ and convert all the existing users.  This adds a degree
of interface separation between the ioctl definitions and the incore
parameters.  Since FLAGS_UNION is only used in xfs_icache.c, move it
there as a private flag.
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarCarlos Maiolino <cmaiolino@redhat.com>
parent 9492750a
...@@ -769,7 +769,7 @@ xfs_file_buffered_write( ...@@ -769,7 +769,7 @@ xfs_file_buffered_write(
*/ */
if (ret == -EDQUOT && !cleared_space) { if (ret == -EDQUOT && !cleared_space) {
xfs_iunlock(ip, iolock); xfs_iunlock(ip, iolock);
xfs_blockgc_free_quota(ip, XFS_EOF_FLAGS_SYNC); xfs_blockgc_free_quota(ip, XFS_ICWALK_FLAG_SYNC);
cleared_space = true; cleared_space = true;
goto write_retry; goto write_retry;
} else if (ret == -ENOSPC && !cleared_space) { } else if (ret == -ENOSPC && !cleared_space) {
...@@ -779,7 +779,7 @@ xfs_file_buffered_write( ...@@ -779,7 +779,7 @@ xfs_file_buffered_write(
xfs_flush_inodes(ip->i_mount); xfs_flush_inodes(ip->i_mount);
xfs_iunlock(ip, iolock); xfs_iunlock(ip, iolock);
eofb.eof_flags = XFS_EOF_FLAGS_SYNC; eofb.eof_flags = XFS_ICWALK_FLAG_SYNC;
xfs_blockgc_free_space(ip->i_mount, &eofb); xfs_blockgc_free_space(ip->i_mount, &eofb);
goto write_retry; goto write_retry;
} }
......
...@@ -62,7 +62,7 @@ static int xfs_icwalk_ag(struct xfs_perag *pag, ...@@ -62,7 +62,7 @@ static int xfs_icwalk_ag(struct xfs_perag *pag,
/* /*
* Private inode cache walk flags for struct xfs_eofblocks. Must not coincide * Private inode cache walk flags for struct xfs_eofblocks. Must not coincide
* with XFS_EOF_FLAGS_*. * with XFS_ICWALK_FLAGS_VALID.
*/ */
#define XFS_ICWALK_FLAG_DROP_UDQUOT (1U << 31) #define XFS_ICWALK_FLAG_DROP_UDQUOT (1U << 31)
#define XFS_ICWALK_FLAG_DROP_GDQUOT (1U << 30) #define XFS_ICWALK_FLAG_DROP_GDQUOT (1U << 30)
...@@ -72,12 +72,14 @@ static int xfs_icwalk_ag(struct xfs_perag *pag, ...@@ -72,12 +72,14 @@ static int xfs_icwalk_ag(struct xfs_perag *pag,
#define XFS_ICWALK_FLAG_SCAN_LIMIT (1U << 28) #define XFS_ICWALK_FLAG_SCAN_LIMIT (1U << 28)
#define XFS_ICWALK_FLAG_RECLAIM_SICK (1U << 27) #define XFS_ICWALK_FLAG_RECLAIM_SICK (1U << 27)
#define XFS_ICWALK_FLAG_UNION (1U << 26) /* union filter algorithm */
#define XFS_ICWALK_PRIVATE_FLAGS (XFS_ICWALK_FLAG_DROP_UDQUOT | \ #define XFS_ICWALK_PRIVATE_FLAGS (XFS_ICWALK_FLAG_DROP_UDQUOT | \
XFS_ICWALK_FLAG_DROP_GDQUOT | \ XFS_ICWALK_FLAG_DROP_GDQUOT | \
XFS_ICWALK_FLAG_DROP_PDQUOT | \ XFS_ICWALK_FLAG_DROP_PDQUOT | \
XFS_ICWALK_FLAG_SCAN_LIMIT | \ XFS_ICWALK_FLAG_SCAN_LIMIT | \
XFS_ICWALK_FLAG_RECLAIM_SICK) XFS_ICWALK_FLAG_RECLAIM_SICK | \
XFS_ICWALK_FLAG_UNION)
/* /*
* Allocate and initialise an xfs_inode. * Allocate and initialise an xfs_inode.
...@@ -1113,15 +1115,15 @@ xfs_inode_match_id( ...@@ -1113,15 +1115,15 @@ xfs_inode_match_id(
struct xfs_inode *ip, struct xfs_inode *ip,
struct xfs_eofblocks *eofb) struct xfs_eofblocks *eofb)
{ {
if ((eofb->eof_flags & XFS_EOF_FLAGS_UID) && if ((eofb->eof_flags & XFS_ICWALK_FLAG_UID) &&
!uid_eq(VFS_I(ip)->i_uid, eofb->eof_uid)) !uid_eq(VFS_I(ip)->i_uid, eofb->eof_uid))
return false; return false;
if ((eofb->eof_flags & XFS_EOF_FLAGS_GID) && if ((eofb->eof_flags & XFS_ICWALK_FLAG_GID) &&
!gid_eq(VFS_I(ip)->i_gid, eofb->eof_gid)) !gid_eq(VFS_I(ip)->i_gid, eofb->eof_gid))
return false; return false;
if ((eofb->eof_flags & XFS_EOF_FLAGS_PRID) && if ((eofb->eof_flags & XFS_ICWALK_FLAG_PRID) &&
ip->i_projid != eofb->eof_prid) ip->i_projid != eofb->eof_prid)
return false; return false;
...@@ -1137,15 +1139,15 @@ xfs_inode_match_id_union( ...@@ -1137,15 +1139,15 @@ xfs_inode_match_id_union(
struct xfs_inode *ip, struct xfs_inode *ip,
struct xfs_eofblocks *eofb) struct xfs_eofblocks *eofb)
{ {
if ((eofb->eof_flags & XFS_EOF_FLAGS_UID) && if ((eofb->eof_flags & XFS_ICWALK_FLAG_UID) &&
uid_eq(VFS_I(ip)->i_uid, eofb->eof_uid)) uid_eq(VFS_I(ip)->i_uid, eofb->eof_uid))
return true; return true;
if ((eofb->eof_flags & XFS_EOF_FLAGS_GID) && if ((eofb->eof_flags & XFS_ICWALK_FLAG_GID) &&
gid_eq(VFS_I(ip)->i_gid, eofb->eof_gid)) gid_eq(VFS_I(ip)->i_gid, eofb->eof_gid))
return true; return true;
if ((eofb->eof_flags & XFS_EOF_FLAGS_PRID) && if ((eofb->eof_flags & XFS_ICWALK_FLAG_PRID) &&
ip->i_projid == eofb->eof_prid) ip->i_projid == eofb->eof_prid)
return true; return true;
...@@ -1167,7 +1169,7 @@ xfs_inode_matches_eofb( ...@@ -1167,7 +1169,7 @@ xfs_inode_matches_eofb(
if (!eofb) if (!eofb)
return true; return true;
if (eofb->eof_flags & XFS_EOF_FLAGS_UNION) if (eofb->eof_flags & XFS_ICWALK_FLAG_UNION)
match = xfs_inode_match_id_union(ip, eofb); match = xfs_inode_match_id_union(ip, eofb);
else else
match = xfs_inode_match_id(ip, eofb); match = xfs_inode_match_id(ip, eofb);
...@@ -1175,7 +1177,7 @@ xfs_inode_matches_eofb( ...@@ -1175,7 +1177,7 @@ xfs_inode_matches_eofb(
return false; return false;
/* skip the inode if the file size is too small */ /* skip the inode if the file size is too small */
if ((eofb->eof_flags & XFS_EOF_FLAGS_MINFILESIZE) && if ((eofb->eof_flags & XFS_ICWALK_FLAG_MINFILESIZE) &&
XFS_ISIZE(ip) < eofb->eof_min_file_size) XFS_ISIZE(ip) < eofb->eof_min_file_size)
return false; return false;
...@@ -1207,7 +1209,7 @@ xfs_inode_free_eofblocks( ...@@ -1207,7 +1209,7 @@ xfs_inode_free_eofblocks(
{ {
bool wait; bool wait;
wait = eofb && (eofb->eof_flags & XFS_EOF_FLAGS_SYNC); wait = eofb && (eofb->eof_flags & XFS_ICWALK_FLAG_SYNC);
if (!xfs_iflags_test(ip, XFS_IEOFBLOCKS)) if (!xfs_iflags_test(ip, XFS_IEOFBLOCKS))
return 0; return 0;
...@@ -1370,7 +1372,7 @@ xfs_inode_free_cowblocks( ...@@ -1370,7 +1372,7 @@ xfs_inode_free_cowblocks(
bool wait; bool wait;
int ret = 0; int ret = 0;
wait = eofb && (eofb->eof_flags & XFS_EOF_FLAGS_SYNC); wait = eofb && (eofb->eof_flags & XFS_ICWALK_FLAG_SYNC);
if (!xfs_iflags_test(ip, XFS_ICOWBLOCKS)) if (!xfs_iflags_test(ip, XFS_ICOWBLOCKS))
return 0; return 0;
...@@ -1552,7 +1554,7 @@ xfs_blockgc_free_space( ...@@ -1552,7 +1554,7 @@ xfs_blockgc_free_space(
* scan. * scan.
* *
* Callers must not hold any inode's ILOCK. If requesting a synchronous scan * Callers must not hold any inode's ILOCK. If requesting a synchronous scan
* (XFS_EOF_FLAGS_SYNC), the caller also must not hold any inode's IOLOCK or * (XFS_ICWALK_FLAG_SYNC), the caller also must not hold any inode's IOLOCK or
* MMAPLOCK. * MMAPLOCK.
*/ */
int int
...@@ -1561,7 +1563,7 @@ xfs_blockgc_free_dquots( ...@@ -1561,7 +1563,7 @@ xfs_blockgc_free_dquots(
struct xfs_dquot *udqp, struct xfs_dquot *udqp,
struct xfs_dquot *gdqp, struct xfs_dquot *gdqp,
struct xfs_dquot *pdqp, struct xfs_dquot *pdqp,
unsigned int eof_flags) unsigned int iwalk_flags)
{ {
struct xfs_eofblocks eofb = {0}; struct xfs_eofblocks eofb = {0};
bool do_work = false; bool do_work = false;
...@@ -1573,23 +1575,23 @@ xfs_blockgc_free_dquots( ...@@ -1573,23 +1575,23 @@ xfs_blockgc_free_dquots(
* Run a scan to free blocks using the union filter to cover all * Run a scan to free blocks using the union filter to cover all
* applicable quotas in a single scan. * applicable quotas in a single scan.
*/ */
eofb.eof_flags = XFS_EOF_FLAGS_UNION | eof_flags; eofb.eof_flags = XFS_ICWALK_FLAG_UNION | iwalk_flags;
if (XFS_IS_UQUOTA_ENFORCED(mp) && udqp && xfs_dquot_lowsp(udqp)) { if (XFS_IS_UQUOTA_ENFORCED(mp) && udqp && xfs_dquot_lowsp(udqp)) {
eofb.eof_uid = make_kuid(mp->m_super->s_user_ns, udqp->q_id); eofb.eof_uid = make_kuid(mp->m_super->s_user_ns, udqp->q_id);
eofb.eof_flags |= XFS_EOF_FLAGS_UID; eofb.eof_flags |= XFS_ICWALK_FLAG_UID;
do_work = true; do_work = true;
} }
if (XFS_IS_UQUOTA_ENFORCED(mp) && gdqp && xfs_dquot_lowsp(gdqp)) { if (XFS_IS_UQUOTA_ENFORCED(mp) && gdqp && xfs_dquot_lowsp(gdqp)) {
eofb.eof_gid = make_kgid(mp->m_super->s_user_ns, gdqp->q_id); eofb.eof_gid = make_kgid(mp->m_super->s_user_ns, gdqp->q_id);
eofb.eof_flags |= XFS_EOF_FLAGS_GID; eofb.eof_flags |= XFS_ICWALK_FLAG_GID;
do_work = true; do_work = true;
} }
if (XFS_IS_PQUOTA_ENFORCED(mp) && pdqp && xfs_dquot_lowsp(pdqp)) { if (XFS_IS_PQUOTA_ENFORCED(mp) && pdqp && xfs_dquot_lowsp(pdqp)) {
eofb.eof_prid = pdqp->q_id; eofb.eof_prid = pdqp->q_id;
eofb.eof_flags |= XFS_EOF_FLAGS_PRID; eofb.eof_flags |= XFS_ICWALK_FLAG_PRID;
do_work = true; do_work = true;
} }
...@@ -1603,12 +1605,12 @@ xfs_blockgc_free_dquots( ...@@ -1603,12 +1605,12 @@ xfs_blockgc_free_dquots(
int int
xfs_blockgc_free_quota( xfs_blockgc_free_quota(
struct xfs_inode *ip, struct xfs_inode *ip,
unsigned int eof_flags) unsigned int iwalk_flags)
{ {
return xfs_blockgc_free_dquots(ip->i_mount, return xfs_blockgc_free_dquots(ip->i_mount,
xfs_inode_dquot(ip, XFS_DQTYPE_USER), xfs_inode_dquot(ip, XFS_DQTYPE_USER),
xfs_inode_dquot(ip, XFS_DQTYPE_GROUP), xfs_inode_dquot(ip, XFS_DQTYPE_GROUP),
xfs_inode_dquot(ip, XFS_DQTYPE_PROJ), eof_flags); xfs_inode_dquot(ip, XFS_DQTYPE_PROJ), iwalk_flags);
} }
/* XFS Inode Cache Walking Code */ /* XFS Inode Cache Walking Code */
...@@ -1828,5 +1830,5 @@ xfs_icwalk( ...@@ -1828,5 +1830,5 @@ xfs_icwalk(
} }
} }
return last_error; return last_error;
BUILD_BUG_ON(XFS_ICWALK_PRIVATE_FLAGS & XFS_EOF_FLAGS_VALID); BUILD_BUG_ON(XFS_ICWALK_PRIVATE_FLAGS & XFS_ICWALK_FLAGS_VALID);
} }
...@@ -18,6 +18,19 @@ struct xfs_eofblocks { ...@@ -18,6 +18,19 @@ struct xfs_eofblocks {
int icw_scan_limit; int icw_scan_limit;
}; };
/* Flags that reflect xfs_fs_eofblocks functionality. */
#define XFS_ICWALK_FLAG_SYNC (1U << 0) /* sync/wait mode scan */
#define XFS_ICWALK_FLAG_UID (1U << 1) /* filter by uid */
#define XFS_ICWALK_FLAG_GID (1U << 2) /* filter by gid */
#define XFS_ICWALK_FLAG_PRID (1U << 3) /* filter by project id */
#define XFS_ICWALK_FLAG_MINFILESIZE (1U << 4) /* filter by min file size */
#define XFS_ICWALK_FLAGS_VALID (XFS_ICWALK_FLAG_SYNC | \
XFS_ICWALK_FLAG_UID | \
XFS_ICWALK_FLAG_GID | \
XFS_ICWALK_FLAG_PRID | \
XFS_ICWALK_FLAG_MINFILESIZE)
/* /*
* Flags for xfs_iget() * Flags for xfs_iget()
*/ */
...@@ -43,8 +56,8 @@ void xfs_inode_mark_reclaimable(struct xfs_inode *ip); ...@@ -43,8 +56,8 @@ void xfs_inode_mark_reclaimable(struct xfs_inode *ip);
int xfs_blockgc_free_dquots(struct xfs_mount *mp, struct xfs_dquot *udqp, int xfs_blockgc_free_dquots(struct xfs_mount *mp, struct xfs_dquot *udqp,
struct xfs_dquot *gdqp, struct xfs_dquot *pdqp, struct xfs_dquot *gdqp, struct xfs_dquot *pdqp,
unsigned int eof_flags); unsigned int iwalk_flags);
int xfs_blockgc_free_quota(struct xfs_inode *ip, unsigned int eof_flags); int xfs_blockgc_free_quota(struct xfs_inode *ip, unsigned int iwalk_flags);
int xfs_blockgc_free_space(struct xfs_mount *mp, struct xfs_eofblocks *eofb); int xfs_blockgc_free_space(struct xfs_mount *mp, struct xfs_eofblocks *eofb);
void xfs_inode_set_eofblocks_tag(struct xfs_inode *ip); void xfs_inode_set_eofblocks_tag(struct xfs_inode *ip);
......
...@@ -1887,7 +1887,18 @@ xfs_fs_eofblocks_from_user( ...@@ -1887,7 +1887,18 @@ xfs_fs_eofblocks_from_user(
memchr_inv(src->pad64, 0, sizeof(src->pad64))) memchr_inv(src->pad64, 0, sizeof(src->pad64)))
return -EINVAL; return -EINVAL;
dst->eof_flags = src->eof_flags; dst->eof_flags = 0;
if (src->eof_flags & XFS_EOF_FLAGS_SYNC)
dst->eof_flags |= XFS_ICWALK_FLAG_SYNC;
if (src->eof_flags & XFS_EOF_FLAGS_UID)
dst->eof_flags |= XFS_ICWALK_FLAG_UID;
if (src->eof_flags & XFS_EOF_FLAGS_GID)
dst->eof_flags |= XFS_ICWALK_FLAG_GID;
if (src->eof_flags & XFS_EOF_FLAGS_PRID)
dst->eof_flags |= XFS_ICWALK_FLAG_PRID;
if (src->eof_flags & XFS_EOF_FLAGS_MINFILESIZE)
dst->eof_flags |= XFS_ICWALK_FLAG_MINFILESIZE;
dst->eof_prid = src->eof_prid; dst->eof_prid = src->eof_prid;
dst->eof_min_file_size = src->eof_min_file_size; dst->eof_min_file_size = src->eof_min_file_size;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment