]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: remove if_real_bytes
authorChristoph Hellwig <hch@lst.de>
Fri, 5 Oct 2018 02:36:10 +0000 (21:36 -0500)
committerEric Sandeen <sandeen@redhat.com>
Fri, 5 Oct 2018 02:36:10 +0000 (21:36 -0500)
Source kernel commit: fcacbc3f511338842dd177e2d53d457f9741543b

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>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/util.c
libxfs/xfs_inode_fork.c
libxfs/xfs_inode_fork.h
repair/phase6.c

index 273c88775d5d7892088a7f4688c37489125c2b68..b4a929ae354f560263269e3949410fdd58ed41f0 100644 (file)
@@ -354,7 +354,7 @@ libxfs_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:
index 3d64fd46fb87c646f60974aaf29c53c1dd284cd5..55818355818005253926e59a917c12248c5d80b2 100644 (file)
@@ -155,7 +155,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;
 }
@@ -223,7 +222,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;
@@ -314,7 +312,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;
@@ -498,7 +495,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 {
@@ -506,15 +502,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));
 }
@@ -540,17 +533,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 215bef4a59b344690eff99ba4c5f8c4982a5512c..f27ad60912a4197319427636f336e9ec206d8dfe 100644 (file)
@@ -565,7 +565,7 @@ mk_rbmino(xfs_mount_t *mp)
         * now the ifork
         */
        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;
 
        ip->i_d.di_size = mp->m_sb.sb_rbmblocks * mp->m_sb.sb_blocksize;
@@ -796,7 +796,7 @@ mk_rsumino(xfs_mount_t *mp)
         * now the ifork
         */
        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;
 
        ip->i_d.di_size = mp->m_rsumsize;
@@ -893,11 +893,9 @@ mk_root_dir(xfs_mount_t *mp)
         * now the ifork
         */
        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;
 
-
-
        /*
         * initialize the directory
         */