]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: remove if_real_bytes
authorChristoph Hellwig <hch@lst.de>
Tue, 17 Jul 2018 23:51:50 +0000 (16:51 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 30 Jul 2018 14:57:48 +0000 (07:57 -0700)
The field is only used for asserts, and to track if we really need to do
realloc when growing the inode fork data.  But the krealloc function
already performs this check internally, so there is no need to keep track
of the real allocation size.

This will free space in the inode fork for keeping a sequence counter of
changes to the extent list.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/libxfs/xfs_inode_fork.c
fs/xfs/libxfs/xfs_inode_fork.h
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode_item.c

index 183ec0cb8921c3a2e2d638055e5d1744699c9896..dee85b0f8846966c59f5d8858ba301a84d874613 100644 (file)
@@ -158,7 +158,6 @@ xfs_init_local_fork(
        }
 
        ifp->if_bytes = size;
-       ifp->if_real_bytes = real_size;
        ifp->if_flags &= ~(XFS_IFEXTENTS | XFS_IFBROOT);
        ifp->if_flags |= XFS_IFINLINE;
 }
@@ -226,7 +225,6 @@ xfs_iformat_extents(
                return -EFSCORRUPTED;
        }
 
-       ifp->if_real_bytes = 0;
        ifp->if_bytes = 0;
        ifp->if_u1.if_root = NULL;
        ifp->if_height = 0;
@@ -317,7 +315,6 @@ xfs_iformat_btree(
        ifp->if_flags &= ~XFS_IFEXTENTS;
        ifp->if_flags |= XFS_IFBROOT;
 
-       ifp->if_real_bytes = 0;
        ifp->if_bytes = 0;
        ifp->if_u1.if_root = NULL;
        ifp->if_height = 0;
@@ -501,7 +498,6 @@ xfs_idata_realloc(
                 */
                real_size = roundup(new_size, 4);
                if (ifp->if_u1.if_data == NULL) {
-                       ASSERT(ifp->if_real_bytes == 0);
                        ifp->if_u1.if_data = kmem_alloc(real_size,
                                                        KM_SLEEP | KM_NOFS);
                } else {
@@ -509,15 +505,12 @@ xfs_idata_realloc(
                         * Only do the realloc if the underlying size
                         * is really changing.
                         */
-                       if (ifp->if_real_bytes != real_size) {
-                               ifp->if_u1.if_data =
-                                       kmem_realloc(ifp->if_u1.if_data,
-                                                       real_size,
-                                                       KM_SLEEP | KM_NOFS);
-                       }
+                       ifp->if_u1.if_data =
+                               kmem_realloc(ifp->if_u1.if_data,
+                                               real_size,
+                                               KM_SLEEP | KM_NOFS);
                }
        }
-       ifp->if_real_bytes = real_size;
        ifp->if_bytes = new_size;
        ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork));
 }
@@ -543,17 +536,13 @@ xfs_idestroy_fork(
         */
        if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
                if (ifp->if_u1.if_data != NULL) {
-                       ASSERT(ifp->if_real_bytes != 0);
                        kmem_free(ifp->if_u1.if_data);
                        ifp->if_u1.if_data = NULL;
-                       ifp->if_real_bytes = 0;
                }
        } else if ((ifp->if_flags & XFS_IFEXTENTS) && ifp->if_height) {
                xfs_iext_destroy(ifp);
        }
 
-       ASSERT(ifp->if_real_bytes == 0);
-
        if (whichfork == XFS_ATTR_FORK) {
                kmem_zone_free(xfs_ifork_zone, ip->i_afp);
                ip->i_afp = NULL;
index 781b1603df5e277687a06097111fb4cb2f99a25a..46242052aad0794a3345d1d5222501561a9c23db 100644 (file)
@@ -14,7 +14,6 @@ struct xfs_dinode;
  */
 typedef struct xfs_ifork {
        int                     if_bytes;       /* bytes in if_u1 */
-       int                     if_real_bytes;  /* bytes allocated in if_u1 */
        struct xfs_btree_block  *if_broot;      /* file's incore btree root */
        short                   if_broot_bytes; /* bytes allocated for root */
        unsigned char           if_flags;       /* per-fork flags */
index 64c694d2b2a5114c09c2c0febe06f4f614a3e7d9..54fcfdfc748cb413dbaf704c235d02f2c3d3b32f 100644 (file)
@@ -927,7 +927,7 @@ xfs_ialloc(
        case S_IFLNK:
                ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS;
                ip->i_df.if_flags = XFS_IFEXTENTS;
-               ip->i_df.if_bytes = ip->i_df.if_real_bytes = 0;
+               ip->i_df.if_bytes = 0;
                ip->i_df.if_u1.if_root = NULL;
                break;
        default:
@@ -1841,7 +1841,6 @@ xfs_inactive(
         * to clean up here.
         */
        if (VFS_I(ip)->i_mode == 0) {
-               ASSERT(ip->i_df.if_real_bytes == 0);
                ASSERT(ip->i_df.if_broot_bytes == 0);
                return;
        }
index 2389c34c172dda0ab4333e0461d3727296509a1e..fa1c4fe2ffbfb1fcda3eaaaff3bd8a3b3b3d9b74 100644 (file)
@@ -194,8 +194,6 @@ xfs_inode_item_format_data_fork(
                         * to be there by xfs_idata_realloc().
                         */
                        data_bytes = roundup(ip->i_df.if_bytes, 4);
-                       ASSERT(ip->i_df.if_real_bytes == 0 ||
-                              ip->i_df.if_real_bytes >= data_bytes);
                        ASSERT(ip->i_df.if_u1.if_data != NULL);
                        ASSERT(ip->i_d.di_size > 0);
                        xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_ILOCAL,
@@ -280,8 +278,6 @@ xfs_inode_item_format_attr_fork(
                         * to be there by xfs_idata_realloc().
                         */
                        data_bytes = roundup(ip->i_afp->if_bytes, 4);
-                       ASSERT(ip->i_afp->if_real_bytes == 0 ||
-                              ip->i_afp->if_real_bytes >= data_bytes);
                        ASSERT(ip->i_afp->if_u1.if_data != NULL);
                        xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_IATTR_LOCAL,
                                        ip->i_afp->if_u1.if_data,