提交 75329220 编写于 作者: D Darrick J. Wong 提交者: Jialin Zhang

xfs: replace XFS_IFORK_Q with a proper predicate function

mainline inclusion
from mainline-v5.19-rc5
commit 932b42c6
category: bugfix
bugzilla: 187164, https://gitee.com/openeuler/kernel/issues/I4KIAO
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=932b42c66cb5d0ca9800b128415b4ad6b1952b3e

--------------------------------

Replace this shouty macro with a real C function that has a more
descriptive name.
Signed-off-by: NDarrick J. Wong <djwong@kernel.org>
Reviewed-by: NDave Chinner <dchinner@redhat.com>

conflicts:
	fs/xfs/libxfs/xfs_attr.h
	fs/xfs/libxfs/xfs_inode_fork.c
	fs/xfs/scrub/btree.c
	fs/xfs/xfs_inode.c
Signed-off-by: NLong Li <leo.lilong@huawei.com>
Reviewed-by: NZhang Yi <yi.zhang@huawei.com>
Signed-off-by: NJialin Zhang <zhangjialin11@huawei.com>
上级 e052a18d
...@@ -63,7 +63,7 @@ int ...@@ -63,7 +63,7 @@ int
xfs_inode_hasattr( xfs_inode_hasattr(
struct xfs_inode *ip) struct xfs_inode *ip)
{ {
if (!XFS_IFORK_Q(ip)) if (!xfs_inode_has_attr_fork(ip))
return 0; return 0;
if (ip->i_af.if_format == XFS_DINODE_FMT_EXTENTS && if (ip->i_af.if_format == XFS_DINODE_FMT_EXTENTS &&
ip->i_af.if_nextents == 0) ip->i_af.if_nextents == 0)
...@@ -428,7 +428,7 @@ xfs_attr_set( ...@@ -428,7 +428,7 @@ xfs_attr_set(
* If the inode doesn't have an attribute fork, add one. * If the inode doesn't have an attribute fork, add one.
* (inode must not be locked when we call this routine) * (inode must not be locked when we call this routine)
*/ */
if (XFS_IFORK_Q(dp) == 0) { if (xfs_inode_has_attr_fork(dp) == 0) {
int sf_size = sizeof(struct xfs_attr_sf_hdr) + int sf_size = sizeof(struct xfs_attr_sf_hdr) +
xfs_attr_sf_entsize_byname(args->namelen, xfs_attr_sf_entsize_byname(args->namelen,
args->valuelen); args->valuelen);
......
...@@ -1071,7 +1071,7 @@ xfs_bmap_add_attrfork( ...@@ -1071,7 +1071,7 @@ xfs_bmap_add_attrfork(
int logflags; /* logging flags */ int logflags; /* logging flags */
int error; /* error return value */ int error; /* error return value */
ASSERT(XFS_IFORK_Q(ip) == 0); ASSERT(xfs_inode_has_attr_fork(ip) == 0);
mp = ip->i_mount; mp = ip->i_mount;
ASSERT(!XFS_NOT_DQATTACHED(mp, ip)); ASSERT(!XFS_NOT_DQATTACHED(mp, ip));
...@@ -1082,7 +1082,7 @@ xfs_bmap_add_attrfork( ...@@ -1082,7 +1082,7 @@ xfs_bmap_add_attrfork(
rsvd, &tp); rsvd, &tp);
if (error) if (error)
return error; return error;
if (XFS_IFORK_Q(ip)) if (xfs_inode_has_attr_fork(ip))
goto trans_cancel; goto trans_cancel;
xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
......
...@@ -732,7 +732,7 @@ xfs_ifork_verify_local_attr( ...@@ -732,7 +732,7 @@ xfs_ifork_verify_local_attr(
struct xfs_ifork *ifp = &ip->i_af; struct xfs_ifork *ifp = &ip->i_af;
xfs_failaddr_t fa; xfs_failaddr_t fa;
if (!XFS_IFORK_Q(ip)) if (!xfs_inode_has_attr_fork(ip))
fa = __this_address; fa = __this_address;
else else
fa = xfs_attr_shortform_verify(ip); fa = xfs_attr_shortform_verify(ip);
......
...@@ -99,13 +99,12 @@ struct xfs_ifork { ...@@ -99,13 +99,12 @@ struct xfs_ifork {
* Fork handling. * Fork handling.
*/ */
#define XFS_IFORK_Q(ip) ((ip)->i_d.di_forkoff != 0)
#define XFS_IFORK_BOFF(ip) ((int)((ip)->i_d.di_forkoff << 3)) #define XFS_IFORK_BOFF(ip) ((int)((ip)->i_d.di_forkoff << 3))
#define XFS_IFORK_DSIZE(ip) \ #define XFS_IFORK_DSIZE(ip) \
(XFS_IFORK_Q(ip) ? XFS_IFORK_BOFF(ip) : XFS_LITINO((ip)->i_mount)) (xfs_inode_has_attr_fork(ip) ? XFS_IFORK_BOFF(ip) : XFS_LITINO((ip)->i_mount))
#define XFS_IFORK_ASIZE(ip) \ #define XFS_IFORK_ASIZE(ip) \
(XFS_IFORK_Q(ip) ? XFS_LITINO((ip)->i_mount) - XFS_IFORK_BOFF(ip) : 0) (xfs_inode_has_attr_fork(ip) ? XFS_LITINO((ip)->i_mount) - XFS_IFORK_BOFF(ip) : 0)
#define XFS_IFORK_SIZE(ip,w) \ #define XFS_IFORK_SIZE(ip,w) \
((w) == XFS_DATA_FORK ? \ ((w) == XFS_DATA_FORK ? \
XFS_IFORK_DSIZE(ip) : \ XFS_IFORK_DSIZE(ip) : \
......
...@@ -336,7 +336,7 @@ xfs_attr_inactive( ...@@ -336,7 +336,7 @@ xfs_attr_inactive(
ASSERT(! XFS_NOT_DQATTACHED(mp, dp)); ASSERT(! XFS_NOT_DQATTACHED(mp, dp));
xfs_ilock(dp, lock_mode); xfs_ilock(dp, lock_mode);
if (!XFS_IFORK_Q(dp)) if (!xfs_inode_has_attr_fork(dp))
goto out_destroy_fork; goto out_destroy_fork;
xfs_iunlock(dp, lock_mode); xfs_iunlock(dp, lock_mode);
...@@ -349,7 +349,7 @@ xfs_attr_inactive( ...@@ -349,7 +349,7 @@ xfs_attr_inactive(
lock_mode = XFS_ILOCK_EXCL; lock_mode = XFS_ILOCK_EXCL;
xfs_ilock(dp, lock_mode); xfs_ilock(dp, lock_mode);
if (!XFS_IFORK_Q(dp)) if (!xfs_inode_has_attr_fork(dp))
goto out_cancel; goto out_cancel;
/* /*
......
...@@ -402,7 +402,7 @@ xfs_getbmap( ...@@ -402,7 +402,7 @@ xfs_getbmap(
xfs_ilock(ip, XFS_IOLOCK_SHARED); xfs_ilock(ip, XFS_IOLOCK_SHARED);
switch (whichfork) { switch (whichfork) {
case XFS_ATTR_FORK: case XFS_ATTR_FORK:
if (!XFS_IFORK_Q(ip)) if (!xfs_inode_has_attr_fork(ip))
goto out_unlock_iolock; goto out_unlock_iolock;
max_len = 1LL << 32; max_len = 1LL << 32;
...@@ -1259,7 +1259,7 @@ xfs_swap_extents_check_format( ...@@ -1259,7 +1259,7 @@ xfs_swap_extents_check_format(
* extent format... * extent format...
*/ */
if (tifp->if_format == XFS_DINODE_FMT_BTREE) { if (tifp->if_format == XFS_DINODE_FMT_BTREE) {
if (XFS_IFORK_Q(ip) && if (xfs_inode_has_attr_fork(ip) &&
XFS_BMAP_BMDR_SPACE(tifp->if_broot) > XFS_IFORK_BOFF(ip)) XFS_BMAP_BMDR_SPACE(tifp->if_broot) > XFS_IFORK_BOFF(ip))
return -EINVAL; return -EINVAL;
if (tifp->if_nextents <= XFS_IFORK_MAXEXT(ip, XFS_DATA_FORK)) if (tifp->if_nextents <= XFS_IFORK_MAXEXT(ip, XFS_DATA_FORK))
...@@ -1268,7 +1268,7 @@ xfs_swap_extents_check_format( ...@@ -1268,7 +1268,7 @@ xfs_swap_extents_check_format(
/* Reciprocal target->temp btree format checks */ /* Reciprocal target->temp btree format checks */
if (ifp->if_format == XFS_DINODE_FMT_BTREE) { if (ifp->if_format == XFS_DINODE_FMT_BTREE) {
if (XFS_IFORK_Q(tip) && if (xfs_inode_has_attr_fork(tip) &&
XFS_BMAP_BMDR_SPACE(ip->i_df.if_broot) > XFS_IFORK_BOFF(tip)) XFS_BMAP_BMDR_SPACE(ip->i_df.if_broot) > XFS_IFORK_BOFF(tip))
return -EINVAL; return -EINVAL;
if (ifp->if_nextents <= XFS_IFORK_MAXEXT(tip, XFS_DATA_FORK)) if (ifp->if_nextents <= XFS_IFORK_MAXEXT(tip, XFS_DATA_FORK))
...@@ -1439,14 +1439,14 @@ xfs_swap_extent_forks( ...@@ -1439,14 +1439,14 @@ xfs_swap_extent_forks(
/* /*
* Count the number of extended attribute blocks * Count the number of extended attribute blocks
*/ */
if (XFS_IFORK_Q(ip) && ip->i_af.if_nextents > 0 && if (xfs_inode_has_attr_fork(ip) && ip->i_af.if_nextents > 0 &&
ip->i_af.if_format != XFS_DINODE_FMT_LOCAL) { ip->i_af.if_format != XFS_DINODE_FMT_LOCAL) {
error = xfs_bmap_count_blocks(tp, ip, XFS_ATTR_FORK, &junk, error = xfs_bmap_count_blocks(tp, ip, XFS_ATTR_FORK, &junk,
&aforkblks); &aforkblks);
if (error) if (error)
return error; return error;
} }
if (XFS_IFORK_Q(tip) && tip->i_af.if_nextents > 0 && if (xfs_inode_has_attr_fork(tip) && tip->i_af.if_nextents > 0 &&
tip->i_af.if_format != XFS_DINODE_FMT_LOCAL) { tip->i_af.if_format != XFS_DINODE_FMT_LOCAL) {
error = xfs_bmap_count_blocks(tp, tip, XFS_ATTR_FORK, &junk, error = xfs_bmap_count_blocks(tp, tip, XFS_ATTR_FORK, &junk,
&taforkblks); &taforkblks);
......
...@@ -124,7 +124,7 @@ xfs_ilock_attr_map_shared( ...@@ -124,7 +124,7 @@ xfs_ilock_attr_map_shared(
{ {
uint lock_mode = XFS_ILOCK_SHARED; uint lock_mode = XFS_ILOCK_SHARED;
if (XFS_IFORK_Q(ip) && if (xfs_inode_has_attr_fork(ip) &&
ip->i_af.if_format == XFS_DINODE_FMT_BTREE && ip->i_af.if_format == XFS_DINODE_FMT_BTREE &&
(ip->i_af.if_flags & XFS_IFEXTENTS) == 0) (ip->i_af.if_flags & XFS_IFEXTENTS) == 0)
lock_mode = XFS_ILOCK_EXCL; lock_mode = XFS_ILOCK_EXCL;
...@@ -656,7 +656,7 @@ xfs_ip2xflags( ...@@ -656,7 +656,7 @@ xfs_ip2xflags(
{ {
struct xfs_icdinode *dic = &ip->i_d; struct xfs_icdinode *dic = &ip->i_d;
return _xfs_dic2xflags(dic->di_flags, dic->di_flags2, XFS_IFORK_Q(ip)); return _xfs_dic2xflags(dic->di_flags, dic->di_flags2, xfs_inode_has_attr_fork(ip));
} }
/* /*
...@@ -1921,7 +1921,7 @@ xfs_inactive( ...@@ -1921,7 +1921,7 @@ xfs_inactive(
* now. The code calls a routine that recursively deconstructs the * now. The code calls a routine that recursively deconstructs the
* attribute fork. If also blows away the in-core attribute fork. * attribute fork. If also blows away the in-core attribute fork.
*/ */
if (XFS_IFORK_Q(ip)) { if (xfs_inode_has_attr_fork(ip)) {
error = xfs_attr_inactive(ip); error = xfs_attr_inactive(ip);
if (error) if (error)
goto out; goto out;
...@@ -3643,7 +3643,7 @@ xfs_iflush( ...@@ -3643,7 +3643,7 @@ xfs_iflush(
if (ip->i_df.if_format == XFS_DINODE_FMT_LOCAL && if (ip->i_df.if_format == XFS_DINODE_FMT_LOCAL &&
xfs_ifork_verify_local_data(ip)) xfs_ifork_verify_local_data(ip))
goto flush_out; goto flush_out;
if (XFS_IFORK_Q(ip) && if (xfs_inode_has_attr_fork(ip) &&
ip->i_af.if_format == XFS_DINODE_FMT_LOCAL && ip->i_af.if_format == XFS_DINODE_FMT_LOCAL &&
xfs_ifork_verify_local_attr(ip)) xfs_ifork_verify_local_attr(ip))
goto flush_out; goto flush_out;
...@@ -3660,7 +3660,7 @@ xfs_iflush( ...@@ -3660,7 +3660,7 @@ xfs_iflush(
ip->i_d.di_flushiter = 0; ip->i_d.di_flushiter = 0;
xfs_iflush_fork(ip, dip, iip, XFS_DATA_FORK); xfs_iflush_fork(ip, dip, iip, XFS_DATA_FORK);
if (XFS_IFORK_Q(ip)) if (xfs_inode_has_attr_fork(ip))
xfs_iflush_fork(ip, dip, iip, XFS_ATTR_FORK); xfs_iflush_fork(ip, dip, iip, XFS_ATTR_FORK);
/* /*
......
...@@ -67,6 +67,11 @@ typedef struct xfs_inode { ...@@ -67,6 +67,11 @@ typedef struct xfs_inode {
struct list_head i_ioend_list; struct list_head i_ioend_list;
} xfs_inode_t; } xfs_inode_t;
static inline bool xfs_inode_has_attr_fork(struct xfs_inode *ip)
{
return (ip)->i_d.di_forkoff > 0;
}
static inline struct xfs_ifork * static inline struct xfs_ifork *
xfs_ifork_ptr( xfs_ifork_ptr(
struct xfs_inode *ip, struct xfs_inode *ip,
...@@ -76,7 +81,7 @@ xfs_ifork_ptr( ...@@ -76,7 +81,7 @@ xfs_ifork_ptr(
case XFS_DATA_FORK: case XFS_DATA_FORK:
return &ip->i_df; return &ip->i_df;
case XFS_ATTR_FORK: case XFS_ATTR_FORK:
if (!XFS_IFORK_Q(ip)) if (!xfs_inode_has_attr_fork(ip))
return NULL; return NULL;
return &ip->i_af; return &ip->i_af;
case XFS_COW_FORK: case XFS_COW_FORK:
......
...@@ -142,7 +142,7 @@ xfs_inode_item_size( ...@@ -142,7 +142,7 @@ xfs_inode_item_size(
xfs_log_dinode_size(ip->i_mount); xfs_log_dinode_size(ip->i_mount);
xfs_inode_item_data_fork_size(iip, nvecs, nbytes); xfs_inode_item_data_fork_size(iip, nvecs, nbytes);
if (XFS_IFORK_Q(ip)) if (xfs_inode_has_attr_fork(ip))
xfs_inode_item_attr_fork_size(iip, nvecs, nbytes); xfs_inode_item_attr_fork_size(iip, nvecs, nbytes);
} }
...@@ -449,7 +449,7 @@ xfs_inode_item_format( ...@@ -449,7 +449,7 @@ xfs_inode_item_format(
xfs_inode_item_format_core(ip, lv, &vecp); xfs_inode_item_format_core(ip, lv, &vecp);
xfs_inode_item_format_data_fork(iip, ilf, lv, &vecp); xfs_inode_item_format_data_fork(iip, ilf, lv, &vecp);
if (XFS_IFORK_Q(ip)) { if (xfs_inode_has_attr_fork(ip)) {
xfs_inode_item_format_attr_fork(iip, ilf, lv, &vecp); xfs_inode_item_format_attr_fork(iip, ilf, lv, &vecp);
} else { } else {
iip->ili_fields &= iip->ili_fields &=
......
...@@ -1282,7 +1282,7 @@ xfs_xattr_iomap_begin( ...@@ -1282,7 +1282,7 @@ xfs_xattr_iomap_begin(
lockmode = xfs_ilock_attr_map_shared(ip); lockmode = xfs_ilock_attr_map_shared(ip);
/* if there are no attribute fork or extents, return ENOENT */ /* if there are no attribute fork or extents, return ENOENT */
if (!XFS_IFORK_Q(ip) || !ip->i_af.if_nextents) { if (!xfs_inode_has_attr_fork(ip) || !ip->i_af.if_nextents) {
error = -ENOENT; error = -ENOENT;
goto out_unlock; goto out_unlock;
} }
......
...@@ -1341,7 +1341,7 @@ xfs_setup_inode( ...@@ -1341,7 +1341,7 @@ xfs_setup_inode(
* If there is no attribute fork no ACL can exist on this inode, * If there is no attribute fork no ACL can exist on this inode,
* and it can't have any file capabilities attached to it either. * and it can't have any file capabilities attached to it either.
*/ */
if (!XFS_IFORK_Q(ip)) { if (!xfs_inode_has_attr_fork(ip)) {
inode_has_no_xattr(inode); inode_has_no_xattr(inode);
cache_no_acl(inode); cache_no_acl(inode);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册