diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2015-06-18 15:47:17 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2015-07-06 17:39:41 -0400 |
commit | 42432739b5902f72011f701f5cd5b4227ebe991c (patch) | |
tree | 885f27b11eb8bf25056a50d15b5fd26c23be2273 | |
parent | ef3a315d4ca179fd0b56597e695cd262a8b559b7 (diff) | |
download | linux-42432739b5902f72011f701f5cd5b4227ebe991c.tar.gz linux-42432739b5902f72011f701f5cd5b4227ebe991c.tar.bz2 linux-42432739b5902f72011f701f5cd5b4227ebe991c.zip |
__ufs_trunc_blocks(): turn the part after switch into a loop
... 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>
-rw-r--r-- | fs/ufs/inode.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c index 1427d277a690..285eacd02d60 100644 --- a/fs/ufs/inode.c +++ b/fs/ufs/inode.c @@ -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); } |