__ufs_truncate_blocks(): unify freeing the full branches

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Al Viro 2015-06-18 15:42:25 -04:00
parent 9e0fbbde27
commit ef3a315d4c
1 changed files with 14 additions and 15 deletions

View 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);
}