]> git.karo-electronics.de Git - linux-beck.git/commitdiff
__ufs_truncate_blocks(): unify freeing the full branches
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 18 Jun 2015 19:42:25 +0000 (15:42 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 6 Jul 2015 21:39:40 +0000 (17:39 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ufs/inode.c

index 0d57c41b7705dc114a57d8ec53f8216804eb48a4..1427d277a690c2fb80ff6e828f777e96a4f93126 100644 (file)
@@ -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);
 }