提交 0779f4a6 编写于 作者: C Christoph Hellwig 提交者: Darrick J. Wong

xfs: remove XFS_IFINLINE

Just check for an inline format fork instead of the using the equivalent
in-memory XFS_IFINLINE flag.
Signed-off-by: NChristoph Hellwig <hch@lst.de>
Reviewed-by: NDarrick J. Wong <djwong@kernel.org>
Signed-off-by: NDarrick J. Wong <djwong@kernel.org>
上级 ac1e0672
...@@ -362,10 +362,8 @@ xfs_has_attr( ...@@ -362,10 +362,8 @@ xfs_has_attr(
if (!xfs_inode_hasattr(dp)) if (!xfs_inode_hasattr(dp))
return -ENOATTR; return -ENOATTR;
if (dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL) { if (dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL)
ASSERT(dp->i_afp->if_flags & XFS_IFINLINE);
return xfs_attr_sf_findname(args, NULL, NULL); return xfs_attr_sf_findname(args, NULL, NULL);
}
if (xfs_attr_is_leaf(dp)) { if (xfs_attr_is_leaf(dp)) {
error = xfs_attr_leaf_hasname(args, &bp); error = xfs_attr_leaf_hasname(args, &bp);
...@@ -389,10 +387,8 @@ xfs_attr_remove_args( ...@@ -389,10 +387,8 @@ xfs_attr_remove_args(
if (!xfs_inode_hasattr(args->dp)) if (!xfs_inode_hasattr(args->dp))
return -ENOATTR; return -ENOATTR;
if (args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL) { if (args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL)
ASSERT(args->dp->i_afp->if_flags & XFS_IFINLINE);
return xfs_attr_shortform_remove(args); return xfs_attr_shortform_remove(args);
}
if (xfs_attr_is_leaf(args->dp)) if (xfs_attr_is_leaf(args->dp))
return xfs_attr_leaf_removename(args); return xfs_attr_leaf_removename(args);
return xfs_attr_node_removename(args); return xfs_attr_node_removename(args);
......
...@@ -654,9 +654,6 @@ xfs_attr_shortform_create( ...@@ -654,9 +654,6 @@ xfs_attr_shortform_create(
if (ifp->if_format == XFS_DINODE_FMT_EXTENTS) { if (ifp->if_format == XFS_DINODE_FMT_EXTENTS) {
ifp->if_flags &= ~XFS_IFEXTENTS; /* just in case */ ifp->if_flags &= ~XFS_IFEXTENTS; /* just in case */
ifp->if_format = XFS_DINODE_FMT_LOCAL; ifp->if_format = XFS_DINODE_FMT_LOCAL;
ifp->if_flags |= XFS_IFINLINE;
} else {
ASSERT(ifp->if_flags & XFS_IFINLINE);
} }
xfs_idata_realloc(dp, sizeof(*hdr), XFS_ATTR_FORK); xfs_idata_realloc(dp, sizeof(*hdr), XFS_ATTR_FORK);
hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data; hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data;
...@@ -733,7 +730,7 @@ xfs_attr_shortform_add( ...@@ -733,7 +730,7 @@ xfs_attr_shortform_add(
dp->i_forkoff = forkoff; dp->i_forkoff = forkoff;
ifp = dp->i_afp; ifp = dp->i_afp;
ASSERT(ifp->if_flags & XFS_IFINLINE); ASSERT(ifp->if_format == XFS_DINODE_FMT_LOCAL);
sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data; sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data;
if (xfs_attr_sf_findname(args, &sfe, NULL) == -EEXIST) if (xfs_attr_sf_findname(args, &sfe, NULL) == -EEXIST)
ASSERT(0); ASSERT(0);
...@@ -851,7 +848,7 @@ xfs_attr_shortform_lookup(xfs_da_args_t *args) ...@@ -851,7 +848,7 @@ xfs_attr_shortform_lookup(xfs_da_args_t *args)
trace_xfs_attr_sf_lookup(args); trace_xfs_attr_sf_lookup(args);
ifp = args->dp->i_afp; ifp = args->dp->i_afp;
ASSERT(ifp->if_flags & XFS_IFINLINE); ASSERT(ifp->if_format == XFS_DINODE_FMT_LOCAL);
sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data; sf = (struct xfs_attr_shortform *)ifp->if_u1.if_data;
sfe = &sf->list[0]; sfe = &sf->list[0];
for (i = 0; i < sf->hdr.count; for (i = 0; i < sf->hdr.count;
...@@ -878,7 +875,7 @@ xfs_attr_shortform_getvalue( ...@@ -878,7 +875,7 @@ xfs_attr_shortform_getvalue(
struct xfs_attr_sf_entry *sfe; struct xfs_attr_sf_entry *sfe;
int i; int i;
ASSERT(args->dp->i_afp->if_flags == XFS_IFINLINE); ASSERT(args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL);
sf = (struct xfs_attr_shortform *)args->dp->i_afp->if_u1.if_data; sf = (struct xfs_attr_shortform *)args->dp->i_afp->if_u1.if_data;
sfe = &sf->list[0]; sfe = &sf->list[0];
for (i = 0; i < sf->hdr.count; for (i = 0; i < sf->hdr.count;
......
...@@ -805,7 +805,6 @@ xfs_bmap_local_to_extents_empty( ...@@ -805,7 +805,6 @@ xfs_bmap_local_to_extents_empty(
ASSERT(ifp->if_nextents == 0); ASSERT(ifp->if_nextents == 0);
xfs_bmap_forkoff_reset(ip, whichfork); xfs_bmap_forkoff_reset(ip, whichfork);
ifp->if_flags &= ~XFS_IFINLINE;
ifp->if_flags |= XFS_IFEXTENTS; ifp->if_flags |= XFS_IFEXTENTS;
ifp->if_u1.if_root = NULL; ifp->if_u1.if_root = NULL;
ifp->if_height = 0; ifp->if_height = 0;
...@@ -850,7 +849,7 @@ xfs_bmap_local_to_extents( ...@@ -850,7 +849,7 @@ xfs_bmap_local_to_extents(
flags = 0; flags = 0;
error = 0; error = 0;
ASSERT((ifp->if_flags & (XFS_IFINLINE|XFS_IFEXTENTS)) == XFS_IFINLINE); ASSERT(!(ifp->if_flags & XFS_IFEXTENTS));
memset(&args, 0, sizeof(args)); memset(&args, 0, sizeof(args));
args.tp = tp; args.tp = tp;
args.mp = ip->i_mount; args.mp = ip->i_mount;
......
...@@ -1096,7 +1096,7 @@ xfs_dir2_sf_to_block( ...@@ -1096,7 +1096,7 @@ xfs_dir2_sf_to_block(
trace_xfs_dir2_sf_to_block(args); trace_xfs_dir2_sf_to_block(args);
ASSERT(ifp->if_flags & XFS_IFINLINE); ASSERT(ifp->if_format == XFS_DINODE_FMT_LOCAL);
ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent)); ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
oldsfp = (xfs_dir2_sf_hdr_t *)ifp->if_u1.if_data; oldsfp = (xfs_dir2_sf_hdr_t *)ifp->if_u1.if_data;
......
...@@ -378,7 +378,7 @@ xfs_dir2_sf_addname( ...@@ -378,7 +378,7 @@ xfs_dir2_sf_addname(
ASSERT(xfs_dir2_sf_lookup(args) == -ENOENT); ASSERT(xfs_dir2_sf_lookup(args) == -ENOENT);
dp = args->dp; dp = args->dp;
ASSERT(dp->i_df.if_flags & XFS_IFINLINE); ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent)); ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
ASSERT(dp->i_df.if_bytes == dp->i_disk_size); ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
ASSERT(dp->i_df.if_u1.if_data != NULL); ASSERT(dp->i_df.if_u1.if_data != NULL);
...@@ -830,9 +830,8 @@ xfs_dir2_sf_create( ...@@ -830,9 +830,8 @@ xfs_dir2_sf_create(
dp->i_df.if_flags &= ~XFS_IFEXTENTS; /* just in case */ dp->i_df.if_flags &= ~XFS_IFEXTENTS; /* just in case */
dp->i_df.if_format = XFS_DINODE_FMT_LOCAL; dp->i_df.if_format = XFS_DINODE_FMT_LOCAL;
xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE); xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE);
dp->i_df.if_flags |= XFS_IFINLINE;
} }
ASSERT(dp->i_df.if_flags & XFS_IFINLINE); ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
ASSERT(dp->i_df.if_bytes == 0); ASSERT(dp->i_df.if_bytes == 0);
i8count = pino > XFS_DIR2_MAX_SHORT_INUM; i8count = pino > XFS_DIR2_MAX_SHORT_INUM;
size = xfs_dir2_sf_hdr_size(i8count); size = xfs_dir2_sf_hdr_size(i8count);
...@@ -877,7 +876,7 @@ xfs_dir2_sf_lookup( ...@@ -877,7 +876,7 @@ xfs_dir2_sf_lookup(
xfs_dir2_sf_check(args); xfs_dir2_sf_check(args);
ASSERT(dp->i_df.if_flags & XFS_IFINLINE); ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent)); ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
ASSERT(dp->i_df.if_bytes == dp->i_disk_size); ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
ASSERT(dp->i_df.if_u1.if_data != NULL); ASSERT(dp->i_df.if_u1.if_data != NULL);
...@@ -954,7 +953,7 @@ xfs_dir2_sf_removename( ...@@ -954,7 +953,7 @@ xfs_dir2_sf_removename(
trace_xfs_dir2_sf_removename(args); trace_xfs_dir2_sf_removename(args);
ASSERT(dp->i_df.if_flags & XFS_IFINLINE); ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
oldsize = (int)dp->i_disk_size; oldsize = (int)dp->i_disk_size;
ASSERT(oldsize >= offsetof(struct xfs_dir2_sf_hdr, parent)); ASSERT(oldsize >= offsetof(struct xfs_dir2_sf_hdr, parent));
ASSERT(dp->i_df.if_bytes == oldsize); ASSERT(dp->i_df.if_bytes == oldsize);
...@@ -1053,7 +1052,7 @@ xfs_dir2_sf_replace( ...@@ -1053,7 +1052,7 @@ xfs_dir2_sf_replace(
trace_xfs_dir2_sf_replace(args); trace_xfs_dir2_sf_replace(args);
ASSERT(dp->i_df.if_flags & XFS_IFINLINE); ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent)); ASSERT(dp->i_disk_size >= offsetof(struct xfs_dir2_sf_hdr, parent));
ASSERT(dp->i_df.if_bytes == dp->i_disk_size); ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
ASSERT(dp->i_df.if_u1.if_data != NULL); ASSERT(dp->i_df.if_u1.if_data != NULL);
......
...@@ -61,7 +61,6 @@ xfs_init_local_fork( ...@@ -61,7 +61,6 @@ xfs_init_local_fork(
ifp->if_bytes = size; ifp->if_bytes = size;
ifp->if_flags &= ~XFS_IFEXTENTS; ifp->if_flags &= ~XFS_IFEXTENTS;
ifp->if_flags |= XFS_IFINLINE;
} }
/* /*
......
...@@ -30,7 +30,6 @@ struct xfs_ifork { ...@@ -30,7 +30,6 @@ struct xfs_ifork {
/* /*
* Per-fork incore inode flags. * Per-fork incore inode flags.
*/ */
#define XFS_IFINLINE 0x01 /* Inline data is read in */
#define XFS_IFEXTENTS 0x02 /* All extent pointers are read in */ #define XFS_IFEXTENTS 0x02 /* All extent pointers are read in */
/* /*
......
...@@ -51,7 +51,7 @@ xchk_symlink( ...@@ -51,7 +51,7 @@ xchk_symlink(
} }
/* Inline symlink? */ /* Inline symlink? */
if (ifp->if_flags & XFS_IFINLINE) { if (ifp->if_format == XFS_DINODE_FMT_LOCAL) {
if (len > XFS_IFORK_DSIZE(ip) || if (len > XFS_IFORK_DSIZE(ip) ||
len > strnlen(ifp->if_u1.if_data, XFS_IFORK_DSIZE(ip))) len > strnlen(ifp->if_u1.if_data, XFS_IFORK_DSIZE(ip)))
xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, 0); xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, 0);
......
...@@ -57,7 +57,7 @@ xfs_dir2_sf_getdents( ...@@ -57,7 +57,7 @@ xfs_dir2_sf_getdents(
xfs_ino_t ino; xfs_ino_t ino;
struct xfs_da_geometry *geo = args->geo; struct xfs_da_geometry *geo = args->geo;
ASSERT(dp->i_df.if_flags & XFS_IFINLINE); ASSERT(dp->i_df.if_format == XFS_DINODE_FMT_LOCAL);
ASSERT(dp->i_df.if_bytes == dp->i_disk_size); ASSERT(dp->i_df.if_bytes == dp->i_disk_size);
ASSERT(dp->i_df.if_u1.if_data != NULL); ASSERT(dp->i_df.if_u1.if_data != NULL);
......
...@@ -519,7 +519,7 @@ xfs_vn_get_link_inline( ...@@ -519,7 +519,7 @@ xfs_vn_get_link_inline(
struct xfs_inode *ip = XFS_I(inode); struct xfs_inode *ip = XFS_I(inode);
char *link; char *link;
ASSERT(ip->i_df.if_flags & XFS_IFINLINE); ASSERT(ip->i_df.if_format == XFS_DINODE_FMT_LOCAL);
/* /*
* The VFS crashes on a NULL pointer, so return -EFSCORRUPTED if * The VFS crashes on a NULL pointer, so return -EFSCORRUPTED if
...@@ -1401,7 +1401,7 @@ xfs_setup_iops( ...@@ -1401,7 +1401,7 @@ xfs_setup_iops(
inode->i_fop = &xfs_dir_file_operations; inode->i_fop = &xfs_dir_file_operations;
break; break;
case S_IFLNK: case S_IFLNK:
if (ip->i_df.if_flags & XFS_IFINLINE) if (ip->i_df.if_format == XFS_DINODE_FMT_LOCAL)
inode->i_op = &xfs_inline_symlink_inode_operations; inode->i_op = &xfs_inline_symlink_inode_operations;
else else
inode->i_op = &xfs_symlink_inode_operations; inode->i_op = &xfs_symlink_inode_operations;
......
...@@ -104,7 +104,7 @@ xfs_readlink( ...@@ -104,7 +104,7 @@ xfs_readlink(
trace_xfs_readlink(ip); trace_xfs_readlink(ip);
ASSERT(!(ip->i_df.if_flags & XFS_IFINLINE)); ASSERT(ip->i_df.if_format != XFS_DINODE_FMT_LOCAL);
if (XFS_FORCED_SHUTDOWN(mp)) if (XFS_FORCED_SHUTDOWN(mp))
return -EIO; return -EIO;
...@@ -492,7 +492,7 @@ xfs_inactive_symlink( ...@@ -492,7 +492,7 @@ xfs_inactive_symlink(
* Inline fork state gets removed by xfs_difree() so we have nothing to * Inline fork state gets removed by xfs_difree() so we have nothing to
* do here in that case. * do here in that case.
*/ */
if (ip->i_df.if_flags & XFS_IFINLINE) { if (ip->i_df.if_format == XFS_DINODE_FMT_LOCAL) {
xfs_iunlock(ip, XFS_ILOCK_EXCL); xfs_iunlock(ip, XFS_ILOCK_EXCL);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册