__ufs_trunc_blocks(): turn the part after switch into a loop
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 18 Jun 2015 19:47:17 +0000 (15:47 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 6 Jul 2015 21:39:41 +0000 (17:39 -0400)
... and turn the switch into if (), since all cases with
depth != 1 have just become identical.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ufs/inode.c

index 1427d277a690c2fb80ff6e828f777e96a4f93126..285eacd02d60a8e63d6775206fa6273348eaea4b 100644 (file)
@@ -1222,6 +1222,7 @@ static void __ufs_truncate_blocks(struct inode *inode)
        unsigned offsets[4];
        int depth = ufs_block_to_path(inode, DIRECT_BLOCK, offsets);
        int depth2;
+       unsigned i;
 
        if (!depth)
                return;
@@ -1232,33 +1233,17 @@ static void __ufs_truncate_blocks(struct inode *inode)
                        break;
 
        mutex_lock(&ufsi->truncate_mutex);
-       switch (depth) {
-       case 1:
+       if (depth == 1) {
                ufs_trunc_direct(inode);
-               goto l1;
-       case 2:
-               ufs_trunc_branch(inode, offsets + 1, depth2, 1,
-                          ufs_get_direct_data_ptr(uspi, ufsi, UFS_IND_BLOCK));
-               goto l2;
-       case 3:
-               ufs_trunc_branch(inode, offsets + 1, depth2, 2,
-                           ufs_get_direct_data_ptr(uspi, ufsi, UFS_DIND_BLOCK));
-               goto l3;
-       case 4:
-               ufs_trunc_branch(inode, offsets + 1, depth2, 3,
-                           ufs_get_direct_data_ptr(uspi, ufsi, UFS_TIND_BLOCK));
-               goto l4;
+               offsets[0] = UFS_IND_BLOCK;
+       } else {
+               ufs_trunc_branch(inode, offsets + 1, depth2, depth - 1,
+                          ufs_get_direct_data_ptr(uspi, ufsi, offsets[0]++));
+       }
+       for (i = offsets[0]; i <= UFS_TIND_BLOCK; i++) {
+               ufs_trunc_branch(inode, NULL, 0, i - UFS_IND_BLOCK + 1,
+                          ufs_get_direct_data_ptr(uspi, ufsi, i));
        }
-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);
 }