mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
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: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
parent
ac1e067211
commit
0779f4a68d
@ -362,10 +362,8 @@ xfs_has_attr(
|
||||
if (!xfs_inode_hasattr(dp))
|
||||
return -ENOATTR;
|
||||
|
||||
if (dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL) {
|
||||
ASSERT(dp->i_afp->if_flags & XFS_IFINLINE);
|
||||
if (dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL)
|
||||
return xfs_attr_sf_findname(args, NULL, NULL);
|
||||
}
|
||||
|
||||
if (xfs_attr_is_leaf(dp)) {
|
||||
error = xfs_attr_leaf_hasname(args, &bp);
|
||||
@ -389,10 +387,8 @@ xfs_attr_remove_args(
|
||||
if (!xfs_inode_hasattr(args->dp))
|
||||
return -ENOATTR;
|
||||
|
||||
if (args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL) {
|
||||
ASSERT(args->dp->i_afp->if_flags & XFS_IFINLINE);
|
||||
if (args->dp->i_afp->if_format == XFS_DINODE_FMT_LOCAL)
|
||||
return xfs_attr_shortform_remove(args);
|
||||
}
|
||||
if (xfs_attr_is_leaf(args->dp))
|
||||
return xfs_attr_leaf_removename(args);
|
||||
return xfs_attr_node_removename(args);
|
||||
|
@ -654,9 +654,6 @@ xfs_attr_shortform_create(
|
||||
if (ifp->if_format == XFS_DINODE_FMT_EXTENTS) {
|
||||
ifp->if_flags &= ~XFS_IFEXTENTS; /* just in case */
|
||||
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);
|
||||
hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data;
|
||||
@ -733,7 +730,7 @@ xfs_attr_shortform_add(
|
||||
dp->i_forkoff = forkoff;
|
||||
|
||||
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;
|
||||
if (xfs_attr_sf_findname(args, &sfe, NULL) == -EEXIST)
|
||||
ASSERT(0);
|
||||
@ -851,7 +848,7 @@ xfs_attr_shortform_lookup(xfs_da_args_t *args)
|
||||
trace_xfs_attr_sf_lookup(args);
|
||||
|
||||
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;
|
||||
sfe = &sf->list[0];
|
||||
for (i = 0; i < sf->hdr.count;
|
||||
@ -878,7 +875,7 @@ xfs_attr_shortform_getvalue(
|
||||
struct xfs_attr_sf_entry *sfe;
|
||||
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;
|
||||
sfe = &sf->list[0];
|
||||
for (i = 0; i < sf->hdr.count;
|
||||
|
@ -805,7 +805,6 @@ xfs_bmap_local_to_extents_empty(
|
||||
ASSERT(ifp->if_nextents == 0);
|
||||
|
||||
xfs_bmap_forkoff_reset(ip, whichfork);
|
||||
ifp->if_flags &= ~XFS_IFINLINE;
|
||||
ifp->if_flags |= XFS_IFEXTENTS;
|
||||
ifp->if_u1.if_root = NULL;
|
||||
ifp->if_height = 0;
|
||||
@ -850,7 +849,7 @@ xfs_bmap_local_to_extents(
|
||||
|
||||
flags = 0;
|
||||
error = 0;
|
||||
ASSERT((ifp->if_flags & (XFS_IFINLINE|XFS_IFEXTENTS)) == XFS_IFINLINE);
|
||||
ASSERT(!(ifp->if_flags & XFS_IFEXTENTS));
|
||||
memset(&args, 0, sizeof(args));
|
||||
args.tp = tp;
|
||||
args.mp = ip->i_mount;
|
||||
|
@ -1096,7 +1096,7 @@ xfs_dir2_sf_to_block(
|
||||
|
||||
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));
|
||||
|
||||
oldsfp = (xfs_dir2_sf_hdr_t *)ifp->if_u1.if_data;
|
||||
|
@ -378,7 +378,7 @@ xfs_dir2_sf_addname(
|
||||
|
||||
ASSERT(xfs_dir2_sf_lookup(args) == -ENOENT);
|
||||
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_df.if_bytes == dp->i_disk_size);
|
||||
ASSERT(dp->i_df.if_u1.if_data != NULL);
|
||||
@ -830,9 +830,8 @@ xfs_dir2_sf_create(
|
||||
dp->i_df.if_flags &= ~XFS_IFEXTENTS; /* just in case */
|
||||
dp->i_df.if_format = XFS_DINODE_FMT_LOCAL;
|
||||
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);
|
||||
i8count = pino > XFS_DIR2_MAX_SHORT_INUM;
|
||||
size = xfs_dir2_sf_hdr_size(i8count);
|
||||
@ -877,7 +876,7 @@ xfs_dir2_sf_lookup(
|
||||
|
||||
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_df.if_bytes == dp->i_disk_size);
|
||||
ASSERT(dp->i_df.if_u1.if_data != NULL);
|
||||
@ -954,7 +953,7 @@ xfs_dir2_sf_removename(
|
||||
|
||||
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;
|
||||
ASSERT(oldsize >= offsetof(struct xfs_dir2_sf_hdr, parent));
|
||||
ASSERT(dp->i_df.if_bytes == oldsize);
|
||||
@ -1053,7 +1052,7 @@ xfs_dir2_sf_replace(
|
||||
|
||||
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_df.if_bytes == dp->i_disk_size);
|
||||
ASSERT(dp->i_df.if_u1.if_data != NULL);
|
||||
|
@ -61,7 +61,6 @@ xfs_init_local_fork(
|
||||
|
||||
ifp->if_bytes = size;
|
||||
ifp->if_flags &= ~XFS_IFEXTENTS;
|
||||
ifp->if_flags |= XFS_IFINLINE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -30,7 +30,6 @@ struct xfs_ifork {
|
||||
/*
|
||||
* Per-fork incore inode flags.
|
||||
*/
|
||||
#define XFS_IFINLINE 0x01 /* Inline data is read in */
|
||||
#define XFS_IFEXTENTS 0x02 /* All extent pointers are read in */
|
||||
|
||||
/*
|
||||
|
@ -51,7 +51,7 @@ xchk_symlink(
|
||||
}
|
||||
|
||||
/* Inline symlink? */
|
||||
if (ifp->if_flags & XFS_IFINLINE) {
|
||||
if (ifp->if_format == XFS_DINODE_FMT_LOCAL) {
|
||||
if (len > XFS_IFORK_DSIZE(ip) ||
|
||||
len > strnlen(ifp->if_u1.if_data, XFS_IFORK_DSIZE(ip)))
|
||||
xchk_fblock_set_corrupt(sc, XFS_DATA_FORK, 0);
|
||||
|
@ -57,7 +57,7 @@ xfs_dir2_sf_getdents(
|
||||
xfs_ino_t ino;
|
||||
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_u1.if_data != NULL);
|
||||
|
||||
|
@ -519,7 +519,7 @@ xfs_vn_get_link_inline(
|
||||
struct xfs_inode *ip = XFS_I(inode);
|
||||
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
|
||||
@ -1401,7 +1401,7 @@ xfs_setup_iops(
|
||||
inode->i_fop = &xfs_dir_file_operations;
|
||||
break;
|
||||
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;
|
||||
else
|
||||
inode->i_op = &xfs_symlink_inode_operations;
|
||||
|
@ -104,7 +104,7 @@ xfs_readlink(
|
||||
|
||||
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))
|
||||
return -EIO;
|
||||
@ -492,7 +492,7 @@ xfs_inactive_symlink(
|
||||
* Inline fork state gets removed by xfs_difree() so we have nothing to
|
||||
* 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);
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user