summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/libxfs/xfs_inode_fork.c19
-rw-r--r--fs/xfs/libxfs/xfs_inode_fork.h1
-rw-r--r--fs/xfs/xfs_inode.c3
-rw-r--r--fs/xfs/xfs_inode_item.c4
4 files changed, 5 insertions, 22 deletions
diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c
index 183ec0cb8921..dee85b0f8846 100644
--- a/fs/xfs/libxfs/xfs_inode_fork.c
+++ b/fs/xfs/libxfs/xfs_inode_fork.c
@@ -158,7 +158,6 @@ xfs_init_local_fork(
158 } 158 }
159 159
160 ifp->if_bytes = size; 160 ifp->if_bytes = size;
161 ifp->if_real_bytes = real_size;
162 ifp->if_flags &= ~(XFS_IFEXTENTS | XFS_IFBROOT); 161 ifp->if_flags &= ~(XFS_IFEXTENTS | XFS_IFBROOT);
163 ifp->if_flags |= XFS_IFINLINE; 162 ifp->if_flags |= XFS_IFINLINE;
164} 163}
@@ -226,7 +225,6 @@ xfs_iformat_extents(
226 return -EFSCORRUPTED; 225 return -EFSCORRUPTED;
227 } 226 }
228 227
229 ifp->if_real_bytes = 0;
230 ifp->if_bytes = 0; 228 ifp->if_bytes = 0;
231 ifp->if_u1.if_root = NULL; 229 ifp->if_u1.if_root = NULL;
232 ifp->if_height = 0; 230 ifp->if_height = 0;
@@ -317,7 +315,6 @@ xfs_iformat_btree(
317 ifp->if_flags &= ~XFS_IFEXTENTS; 315 ifp->if_flags &= ~XFS_IFEXTENTS;
318 ifp->if_flags |= XFS_IFBROOT; 316 ifp->if_flags |= XFS_IFBROOT;
319 317
320 ifp->if_real_bytes = 0;
321 ifp->if_bytes = 0; 318 ifp->if_bytes = 0;
322 ifp->if_u1.if_root = NULL; 319 ifp->if_u1.if_root = NULL;
323 ifp->if_height = 0; 320 ifp->if_height = 0;
@@ -501,7 +498,6 @@ xfs_idata_realloc(
501 */ 498 */
502 real_size = roundup(new_size, 4); 499 real_size = roundup(new_size, 4);
503 if (ifp->if_u1.if_data == NULL) { 500 if (ifp->if_u1.if_data == NULL) {
504 ASSERT(ifp->if_real_bytes == 0);
505 ifp->if_u1.if_data = kmem_alloc(real_size, 501 ifp->if_u1.if_data = kmem_alloc(real_size,
506 KM_SLEEP | KM_NOFS); 502 KM_SLEEP | KM_NOFS);
507 } else { 503 } else {
@@ -509,15 +505,12 @@ xfs_idata_realloc(
509 * Only do the realloc if the underlying size 505 * Only do the realloc if the underlying size
510 * is really changing. 506 * is really changing.
511 */ 507 */
512 if (ifp->if_real_bytes != real_size) { 508 ifp->if_u1.if_data =
513 ifp->if_u1.if_data = 509 kmem_realloc(ifp->if_u1.if_data,
514 kmem_realloc(ifp->if_u1.if_data, 510 real_size,
515 real_size, 511 KM_SLEEP | KM_NOFS);
516 KM_SLEEP | KM_NOFS);
517 }
518 } 512 }
519 } 513 }
520 ifp->if_real_bytes = real_size;
521 ifp->if_bytes = new_size; 514 ifp->if_bytes = new_size;
522 ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork)); 515 ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork));
523} 516}
@@ -543,17 +536,13 @@ xfs_idestroy_fork(
543 */ 536 */
544 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) { 537 if (XFS_IFORK_FORMAT(ip, whichfork) == XFS_DINODE_FMT_LOCAL) {
545 if (ifp->if_u1.if_data != NULL) { 538 if (ifp->if_u1.if_data != NULL) {
546 ASSERT(ifp->if_real_bytes != 0);
547 kmem_free(ifp->if_u1.if_data); 539 kmem_free(ifp->if_u1.if_data);
548 ifp->if_u1.if_data = NULL; 540 ifp->if_u1.if_data = NULL;
549 ifp->if_real_bytes = 0;
550 } 541 }
551 } else if ((ifp->if_flags & XFS_IFEXTENTS) && ifp->if_height) { 542 } else if ((ifp->if_flags & XFS_IFEXTENTS) && ifp->if_height) {
552 xfs_iext_destroy(ifp); 543 xfs_iext_destroy(ifp);
553 } 544 }
554 545
555 ASSERT(ifp->if_real_bytes == 0);
556
557 if (whichfork == XFS_ATTR_FORK) { 546 if (whichfork == XFS_ATTR_FORK) {
558 kmem_zone_free(xfs_ifork_zone, ip->i_afp); 547 kmem_zone_free(xfs_ifork_zone, ip->i_afp);
559 ip->i_afp = NULL; 548 ip->i_afp = NULL;
diff --git a/fs/xfs/libxfs/xfs_inode_fork.h b/fs/xfs/libxfs/xfs_inode_fork.h
index 781b1603df5e..46242052aad0 100644
--- a/fs/xfs/libxfs/xfs_inode_fork.h
+++ b/fs/xfs/libxfs/xfs_inode_fork.h
@@ -14,7 +14,6 @@ struct xfs_dinode;
14 */ 14 */
15typedef struct xfs_ifork { 15typedef struct xfs_ifork {
16 int if_bytes; /* bytes in if_u1 */ 16 int if_bytes; /* bytes in if_u1 */
17 int if_real_bytes; /* bytes allocated in if_u1 */
18 struct xfs_btree_block *if_broot; /* file's incore btree root */ 17 struct xfs_btree_block *if_broot; /* file's incore btree root */
19 short if_broot_bytes; /* bytes allocated for root */ 18 short if_broot_bytes; /* bytes allocated for root */
20 unsigned char if_flags; /* per-fork flags */ 19 unsigned char if_flags; /* per-fork flags */
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index 64c694d2b2a5..54fcfdfc748c 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -927,7 +927,7 @@ xfs_ialloc(
927 case S_IFLNK: 927 case S_IFLNK:
928 ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS; 928 ip->i_d.di_format = XFS_DINODE_FMT_EXTENTS;
929 ip->i_df.if_flags = XFS_IFEXTENTS; 929 ip->i_df.if_flags = XFS_IFEXTENTS;
930 ip->i_df.if_bytes = ip->i_df.if_real_bytes = 0; 930 ip->i_df.if_bytes = 0;
931 ip->i_df.if_u1.if_root = NULL; 931 ip->i_df.if_u1.if_root = NULL;
932 break; 932 break;
933 default: 933 default:
@@ -1841,7 +1841,6 @@ xfs_inactive(
1841 * to clean up here. 1841 * to clean up here.
1842 */ 1842 */
1843 if (VFS_I(ip)->i_mode == 0) { 1843 if (VFS_I(ip)->i_mode == 0) {
1844 ASSERT(ip->i_df.if_real_bytes == 0);
1845 ASSERT(ip->i_df.if_broot_bytes == 0); 1844 ASSERT(ip->i_df.if_broot_bytes == 0);
1846 return; 1845 return;
1847 } 1846 }
diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c
index 2389c34c172d..fa1c4fe2ffbf 100644
--- a/fs/xfs/xfs_inode_item.c
+++ b/fs/xfs/xfs_inode_item.c
@@ -194,8 +194,6 @@ xfs_inode_item_format_data_fork(
194 * to be there by xfs_idata_realloc(). 194 * to be there by xfs_idata_realloc().
195 */ 195 */
196 data_bytes = roundup(ip->i_df.if_bytes, 4); 196 data_bytes = roundup(ip->i_df.if_bytes, 4);
197 ASSERT(ip->i_df.if_real_bytes == 0 ||
198 ip->i_df.if_real_bytes >= data_bytes);
199 ASSERT(ip->i_df.if_u1.if_data != NULL); 197 ASSERT(ip->i_df.if_u1.if_data != NULL);
200 ASSERT(ip->i_d.di_size > 0); 198 ASSERT(ip->i_d.di_size > 0);
201 xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_ILOCAL, 199 xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_ILOCAL,
@@ -280,8 +278,6 @@ xfs_inode_item_format_attr_fork(
280 * to be there by xfs_idata_realloc(). 278 * to be there by xfs_idata_realloc().
281 */ 279 */
282 data_bytes = roundup(ip->i_afp->if_bytes, 4); 280 data_bytes = roundup(ip->i_afp->if_bytes, 4);
283 ASSERT(ip->i_afp->if_real_bytes == 0 ||
284 ip->i_afp->if_real_bytes >= data_bytes);
285 ASSERT(ip->i_afp->if_u1.if_data != NULL); 281 ASSERT(ip->i_afp->if_u1.if_data != NULL);
286 xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_IATTR_LOCAL, 282 xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_IATTR_LOCAL,
287 ip->i_afp->if_u1.if_data, 283 ip->i_afp->if_u1.if_data,