فهرست منبع

__ufs_truncate_blocks(): unify freeing the full branches

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Al Viro 10 سال پیش
والد
کامیت
ef3a315d4c
1فایلهای تغییر یافته به همراه14 افزوده شده و 15 حذف شده
  1. 14 15
      fs/ufs/inode.c

+ 14 - 15
fs/ufs/inode.c

@@ -1235,31 +1235,30 @@ static void __ufs_truncate_blocks(struct inode *inode)
 	switch (depth) {
 	case 1:
 		ufs_trunc_direct(inode);
-		ufs_trunc_branch(inode, NULL, 0, 1,
-			   ufs_get_direct_data_ptr(uspi, ufsi, UFS_IND_BLOCK));
-		ufs_trunc_branch(inode, NULL, 0, 2,
-			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_DIND_BLOCK));
-		ufs_trunc_branch(inode, NULL, 0, 3,
-			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_TIND_BLOCK));
-		break;
+		goto l1;
 	case 2:
 		ufs_trunc_branch(inode, offsets + 1, depth2, 1,
 			   ufs_get_direct_data_ptr(uspi, ufsi, UFS_IND_BLOCK));
-		ufs_trunc_branch(inode, NULL, 0, 2,
-			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_DIND_BLOCK));
-		ufs_trunc_branch(inode, NULL, 0, 3,
-			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_TIND_BLOCK));
-		break;
+		goto l2;
 	case 3:
 		ufs_trunc_branch(inode, offsets + 1, depth2, 2,
 			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_DIND_BLOCK));
-		ufs_trunc_branch(inode, NULL, 0, 3,
-			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_TIND_BLOCK));
-		break;
+		goto l3;
 	case 4:
 		ufs_trunc_branch(inode, offsets + 1, depth2, 3,
 			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_TIND_BLOCK));
+		goto l4;
 	}
+l1:
+	ufs_trunc_branch(inode, NULL, 0, 1,
+			   ufs_get_direct_data_ptr(uspi, ufsi, UFS_IND_BLOCK));
+l2:
+	ufs_trunc_branch(inode, NULL, 0, 2,
+			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_DIND_BLOCK));
+l3:
+	ufs_trunc_branch(inode, NULL, 0, 3,
+			    ufs_get_direct_data_ptr(uspi, ufsi, UFS_TIND_BLOCK));
+l4:
 	ufsi->i_lastfrag = DIRECT_FRAGMENT;
 	mutex_unlock(&ufsi->truncate_mutex);
 }